From 5b4c43d98556c5a4806757513bcb196a724518c5 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 5 Sep 2010 13:17:43 +0100 Subject: llvmpipe: use llvm for attribute interpolant calculation Basically no change relative to hard-coded version, but this will be useful for other changes later. --- src/gallium/drivers/llvmpipe/SConscript | 5 +- src/gallium/drivers/llvmpipe/lp_bld_interp.h | 26 +- src/gallium/drivers/llvmpipe/lp_context.c | 3 + src/gallium/drivers/llvmpipe/lp_context.h | 10 +- src/gallium/drivers/llvmpipe/lp_flush.h | 1 + src/gallium/drivers/llvmpipe/lp_limits.h | 10 + src/gallium/drivers/llvmpipe/lp_setup.c | 19 +- src/gallium/drivers/llvmpipe/lp_setup.h | 29 +- src/gallium/drivers/llvmpipe/lp_setup_coef.c | 279 -------- src/gallium/drivers/llvmpipe/lp_setup_coef.h | 64 -- .../drivers/llvmpipe/lp_setup_coef_intrin.c | 228 ------ src/gallium/drivers/llvmpipe/lp_setup_context.h | 12 +- src/gallium/drivers/llvmpipe/lp_setup_line.c | 20 +- src/gallium/drivers/llvmpipe/lp_setup_point.c | 13 +- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 42 +- src/gallium/drivers/llvmpipe/lp_state.h | 3 + src/gallium/drivers/llvmpipe/lp_state_derived.c | 69 +- src/gallium/drivers/llvmpipe/lp_state_fs.c | 80 ++- src/gallium/drivers/llvmpipe/lp_state_fs.h | 4 + src/gallium/drivers/llvmpipe/lp_state_setup.c | 768 +++++++++++++++++++++ src/gallium/drivers/llvmpipe/lp_state_setup.h | 81 +++ .../drivers/llvmpipe/lp_state_setup_fallback.c | 265 +++++++ 22 files changed, 1315 insertions(+), 716 deletions(-) delete mode 100644 src/gallium/drivers/llvmpipe/lp_setup_coef.c delete mode 100644 src/gallium/drivers/llvmpipe/lp_setup_coef.h delete mode 100644 src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c create mode 100644 src/gallium/drivers/llvmpipe/lp_state_setup.c create mode 100644 src/gallium/drivers/llvmpipe/lp_state_setup.h create mode 100644 src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript index 650435f0f19..6ddce659206 100644 --- a/src/gallium/drivers/llvmpipe/SConscript +++ b/src/gallium/drivers/llvmpipe/SConscript @@ -61,16 +61,17 @@ llvmpipe = env.ConvenienceLibrary( 'lp_scene_queue.c', 'lp_screen.c', 'lp_setup.c', + 'lp_setup_debug.c', 'lp_setup_line.c', 'lp_setup_point.c', 'lp_setup_tri.c', - 'lp_setup_coef.c', - 'lp_setup_coef_intrin.c', 'lp_setup_vbuf.c', 'lp_state_blend.c', 'lp_state_clip.c', 'lp_state_derived.c', 'lp_state_fs.c', + 'lp_state_setup.c', + 'lp_state_setup_fallback.c', 'lp_state_gs.c', 'lp_state_rasterizer.c', 'lp_state_sampler.c', diff --git a/src/gallium/drivers/llvmpipe/lp_bld_interp.h b/src/gallium/drivers/llvmpipe/lp_bld_interp.h index 3054030f739..37479fca9dc 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_interp.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_interp.h @@ -46,7 +46,31 @@ #include "tgsi/tgsi_exec.h" -#include "lp_setup.h" +/** + * Describes how to compute the interpolation coefficients (a0, dadx, dady) + * from the vertices passed into our triangle/line/point functions by the + * draw module. + * + * Vertices are treated as an array of float[4] values, indexed by + * src_index. + * + * LP_INTERP_COLOR is translated to either LP_INTERP_CONSTANT or + * LINEAR depending on flatshade state. + */ +enum lp_interp { + LP_INTERP_CONSTANT, + LP_INTERP_COLOR, + LP_INTERP_LINEAR, + LP_INTERP_PERSPECTIVE, + LP_INTERP_POSITION, + LP_INTERP_FACING +}; + +struct lp_shader_input { + ushort interp:4; /* enum lp_interp */ + ushort usage_mask:4; /* bitmask of TGSI_WRITEMASK_x flags */ + ushort src_index:8; /* where to find values in incoming vertices */ +}; struct lp_build_interp_soa_context diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c index 39f2c6085ef..763432ed712 100644 --- a/src/gallium/drivers/llvmpipe/lp_context.c +++ b/src/gallium/drivers/llvmpipe/lp_context.c @@ -82,6 +82,8 @@ static void llvmpipe_destroy( struct pipe_context *pipe ) } } + lp_delete_setup_variants(llvmpipe); + align_free( llvmpipe ); } @@ -108,6 +110,7 @@ llvmpipe_create_context( struct pipe_screen *screen, void *priv ) memset(llvmpipe, 0, sizeof *llvmpipe); make_empty_list(&llvmpipe->fs_variants_list); + make_empty_list(&llvmpipe->setup_variants_list); llvmpipe->pipe.winsys = screen->winsys; llvmpipe->pipe.screen = screen; diff --git a/src/gallium/drivers/llvmpipe/lp_context.h b/src/gallium/drivers/llvmpipe/lp_context.h index 34fa20e204a..db09c95b272 100644 --- a/src/gallium/drivers/llvmpipe/lp_context.h +++ b/src/gallium/drivers/llvmpipe/lp_context.h @@ -39,6 +39,7 @@ #include "lp_jit.h" #include "lp_setup.h" #include "lp_state_fs.h" +#include "lp_state_setup.h" struct llvmpipe_vbuf_render; @@ -48,6 +49,7 @@ struct lp_fragment_shader; struct lp_vertex_shader; struct lp_blend_state; struct lp_setup_context; +struct lp_setup_variant; struct lp_velems_state; struct llvmpipe_context { @@ -105,12 +107,9 @@ struct llvmpipe_context { /** Which vertex shader output slot contains point size */ int psize_slot; - /** Fragment shader input interpolation info */ - unsigned num_inputs; - struct lp_shader_input inputs[PIPE_MAX_SHADER_INPUTS]; - /** The tiling engine */ struct lp_setup_context *setup; + struct lp_setup_variant setup_variant; /** The primitive drawing context */ struct draw_context *draw; @@ -120,6 +119,9 @@ struct llvmpipe_context { struct lp_fs_variant_list_item fs_variants_list; unsigned nr_fs_variants; + + struct lp_setup_variant_list_item setup_variants_list; + unsigned nr_setup_variants; }; diff --git a/src/gallium/drivers/llvmpipe/lp_flush.h b/src/gallium/drivers/llvmpipe/lp_flush.h index bb538b2bd83..3626ce4a86c 100644 --- a/src/gallium/drivers/llvmpipe/lp_flush.h +++ b/src/gallium/drivers/llvmpipe/lp_flush.h @@ -32,6 +32,7 @@ struct pipe_context; struct pipe_fence_handle; +struct pipe_resource; void llvmpipe_flush(struct pipe_context *pipe, diff --git a/src/gallium/drivers/llvmpipe/lp_limits.h b/src/gallium/drivers/llvmpipe/lp_limits.h index d1c431475d8..2538164ffaa 100644 --- a/src/gallium/drivers/llvmpipe/lp_limits.h +++ b/src/gallium/drivers/llvmpipe/lp_limits.h @@ -72,4 +72,14 @@ */ #define LP_MAX_SHADER_VARIANTS 1024 +/** + * Max number of setup variants that will be kept around. + * + * These are determined by the combination of the fragment shader + * input signature and a small amount of rasterization state (eg + * flatshading). It is likely that many active fragment shaders will + * share the same setup variant. + */ +#define LP_MAX_SETUP_VARIANTS 64 + #endif /* LP_LIMITS_H */ diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 6674d281d1e..3854fd70af7 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -500,14 +500,12 @@ lp_setup_set_point_state( struct lp_setup_context *setup, } void -lp_setup_set_fs_inputs( struct lp_setup_context *setup, - const struct lp_shader_input *input, - unsigned nr ) +lp_setup_set_setup_variant( struct lp_setup_context *setup, + const struct lp_setup_variant *variant) { - LP_DBG(DEBUG_SETUP, "%s %p %u\n", __FUNCTION__, (void *) input, nr); - - memcpy( setup->fs.input, input, nr * sizeof input[0] ); - setup->fs.nr_inputs = nr; + LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__); + + setup->setup.variant = variant; } void @@ -863,6 +861,13 @@ lp_setup_update_state( struct lp_setup_context *setup, setup->psize = lp->psize_slot; assert(lp->dirty == 0); + + assert(lp->setup_variant.key.size == + setup->setup.variant->key.size); + + assert(memcmp(&lp->setup_variant.key, + &setup->setup.variant->key, + setup->setup.variant->key.size) == 0); } if (update_scene) diff --git a/src/gallium/drivers/llvmpipe/lp_setup.h b/src/gallium/drivers/llvmpipe/lp_setup.h index b94061b7d49..19078ebbcb4 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.h +++ b/src/gallium/drivers/llvmpipe/lp_setup.h @@ -33,28 +33,6 @@ struct draw_context; struct vertex_info; -enum lp_interp { - LP_INTERP_CONSTANT, - LP_INTERP_LINEAR, - LP_INTERP_PERSPECTIVE, - LP_INTERP_POSITION, - LP_INTERP_FACING -}; - - -/** - * Describes how to compute the interpolation coefficients (a0, dadx, dady) - * from the vertices passed into our triangle/line/point functions by the - * draw module. - * - * Vertices are treated as an array of float[4] values, indexed by - * src_index. - */ -struct lp_shader_input { - enum lp_interp interp; /* how to interpolate values */ - unsigned src_index; /* where to find values in incoming vertices */ - unsigned usage_mask; /* bitmask of TGSI_WRITEMASK_x flags */ -}; struct pipe_resource; struct pipe_query; @@ -66,7 +44,7 @@ struct lp_fragment_shader_variant; struct lp_jit_context; struct llvmpipe_query; struct pipe_fence_handle; - +struct lp_setup_variant; struct lp_setup_context * lp_setup_create( struct pipe_context *pipe, @@ -110,9 +88,8 @@ lp_setup_set_point_state( struct lp_setup_context *setup, uint sprite); void -lp_setup_set_fs_inputs( struct lp_setup_context *setup, - const struct lp_shader_input *interp, - unsigned nr ); +lp_setup_set_setup_variant( struct lp_setup_context *setup, + const struct lp_setup_variant *variant ); void lp_setup_set_fs_variant( struct lp_setup_context *setup, diff --git a/src/gallium/drivers/llvmpipe/lp_setup_coef.c b/src/gallium/drivers/llvmpipe/lp_setup_coef.c deleted file mode 100644 index 8dc2688ddb6..00000000000 --- a/src/gallium/drivers/llvmpipe/lp_setup_coef.c +++ /dev/null @@ -1,279 +0,0 @@ -/************************************************************************** - * - * Copyright 2010, VMware. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/* - * Binning code for triangles - */ - -#include "util/u_math.h" -#include "util/u_memory.h" -#include "lp_perf.h" -#include "lp_setup_context.h" -#include "lp_setup_coef.h" -#include "lp_rast.h" -#include "lp_state_fs.h" - -#if !defined(PIPE_ARCH_SSE) - -/** - * Compute a0 for a constant-valued coefficient (GL_FLAT shading). - */ -static void constant_coef( struct lp_rast_shader_inputs *inputs, - unsigned slot, - const float value, - unsigned i ) -{ - inputs->a0[slot][i] = value; - inputs->dadx[slot][i] = 0.0f; - inputs->dady[slot][i] = 0.0f; -} - - - -static void linear_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot, - unsigned vert_attr, - unsigned i) -{ - float a0 = info->v0[vert_attr][i]; - float a1 = info->v1[vert_attr][i]; - float a2 = info->v2[vert_attr][i]; - - float da01 = a0 - a1; - float da20 = a2 - a0; - float dadx = (da01 * info->dy20_ooa - info->dy01_ooa * da20); - float dady = (da20 * info->dx01_ooa - info->dx20_ooa * da01); - - inputs->dadx[slot][i] = dadx; - inputs->dady[slot][i] = dady; - - /* calculate a0 as the value which would be sampled for the - * fragment at (0,0), taking into account that we want to sample at - * pixel centers, in other words (0.5, 0.5). - * - * this is neat but unfortunately not a good way to do things for - * triangles with very large values of dadx or dady as it will - * result in the subtraction and re-addition from a0 of a very - * large number, which means we'll end up loosing a lot of the - * fractional bits and precision from a0. the way to fix this is - * to define a0 as the sample at a pixel center somewhere near vmin - * instead - i'll switch to this later. - */ - inputs->a0[slot][i] = a0 - (dadx * info->x0_center + - dady * info->y0_center); -} - - -/** - * Compute a0, dadx and dady for a perspective-corrected interpolant, - * for a triangle. - * We basically multiply the vertex value by 1/w before computing - * the plane coefficients (a0, dadx, dady). - * Later, when we compute the value at a particular fragment position we'll - * divide the interpolated value by the interpolated W at that fragment. - */ -static void perspective_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot, - unsigned vert_attr, - unsigned i) -{ - /* premultiply by 1/w (v[0][3] is always 1/w): - */ - float a0 = info->v0[vert_attr][i] * info->v0[0][3]; - float a1 = info->v1[vert_attr][i] * info->v1[0][3]; - float a2 = info->v2[vert_attr][i] * info->v2[0][3]; - float da01 = a0 - a1; - float da20 = a2 - a0; - float dadx = da01 * info->dy20_ooa - info->dy01_ooa * da20; - float dady = da20 * info->dx01_ooa - info->dx20_ooa * da01; - - inputs->dadx[slot][i] = dadx; - inputs->dady[slot][i] = dady; - inputs->a0[slot][i] = a0 - (dadx * info->x0_center + - dady * info->y0_center); -} - - -/** - * Special coefficient setup for gl_FragCoord. - * X and Y are trivial - * Z and W are copied from position_coef which should have already been computed. - * We could do a bit less work if we'd examine gl_FragCoord's swizzle mask. - */ -static void -setup_fragcoord_coef(struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot, - unsigned usage_mask) -{ - /*X*/ - if (usage_mask & TGSI_WRITEMASK_X) { - inputs->a0[slot][0] = 0.0; - inputs->dadx[slot][0] = 1.0; - inputs->dady[slot][0] = 0.0; - } - - /*Y*/ - if (usage_mask & TGSI_WRITEMASK_Y) { - inputs->a0[slot][1] = 0.0; - inputs->dadx[slot][1] = 0.0; - inputs->dady[slot][1] = 1.0; - } - - /*Z*/ - if (usage_mask & TGSI_WRITEMASK_Z) { - linear_coef(inputs, info, slot, 0, 2); - } - - /*W*/ - if (usage_mask & TGSI_WRITEMASK_W) { - linear_coef(inputs, info, slot, 0, 3); - } -} - - -/** - * Setup the fragment input attribute with the front-facing value. - * \param frontface is the triangle front facing? - */ -static void setup_facing_coef( struct lp_rast_shader_inputs *inputs, - unsigned slot, - boolean frontface, - unsigned usage_mask) -{ - /* convert TRUE to 1.0 and FALSE to -1.0 */ - if (usage_mask & TGSI_WRITEMASK_X) - constant_coef( inputs, slot, 2.0f * frontface - 1.0f, 0 ); - - if (usage_mask & TGSI_WRITEMASK_Y) - constant_coef( inputs, slot, 0.0f, 1 ); /* wasted */ - - if (usage_mask & TGSI_WRITEMASK_Z) - constant_coef( inputs, slot, 0.0f, 2 ); /* wasted */ - - if (usage_mask & TGSI_WRITEMASK_W) - constant_coef( inputs, slot, 0.0f, 3 ); /* wasted */ -} - - -/** - * Compute the tri->coef[] array dadx, dady, a0 values. - */ -void lp_setup_tri_coef( struct lp_setup_context *setup, - struct lp_rast_shader_inputs *inputs, - const float (*v0)[4], - const float (*v1)[4], - const float (*v2)[4], - boolean frontfacing) -{ - unsigned fragcoord_usage_mask = TGSI_WRITEMASK_XYZ; - unsigned slot; - unsigned i; - struct lp_tri_info info; - float dx01 = v0[0][0] - v1[0][0]; - float dy01 = v0[0][1] - v1[0][1]; - float dx20 = v2[0][0] - v0[0][0]; - float dy20 = v2[0][1] - v0[0][1]; - float oneoverarea = 1.0f / (dx01 * dy20 - dx20 * dy01); - - info.v0 = v0; - info.v1 = v1; - info.v2 = v2; - info.frontfacing = frontfacing; - info.x0_center = v0[0][0] - setup->pixel_offset; - info.y0_center = v0[0][1] - setup->pixel_offset; - info.dx01_ooa = dx01 * oneoverarea; - info.dx20_ooa = dx20 * oneoverarea; - info.dy01_ooa = dy01 * oneoverarea; - info.dy20_ooa = dy20 * oneoverarea; - - - /* setup interpolation for all the remaining attributes: - */ - for (slot = 0; slot < setup->fs.nr_inputs; slot++) { - unsigned vert_attr = setup->fs.input[slot].src_index; - unsigned usage_mask = setup->fs.input[slot].usage_mask; - - switch (setup->fs.input[slot].interp) { - case LP_INTERP_CONSTANT: - if (setup->flatshade_first) { - for (i = 0; i < NUM_CHANNELS; i++) - if (usage_mask & (1 << i)) - constant_coef(inputs, slot+1, info.v0[vert_attr][i], i); - } - else { - for (i = 0; i < NUM_CHANNELS; i++) - if (usage_mask & (1 << i)) - constant_coef(inputs, slot+1, info.v2[vert_attr][i], i); - } - break; - - case LP_INTERP_LINEAR: - for (i = 0; i < NUM_CHANNELS; i++) - if (usage_mask & (1 << i)) - linear_coef(inputs, &info, slot+1, vert_attr, i); - break; - - case LP_INTERP_PERSPECTIVE: - for (i = 0; i < NUM_CHANNELS; i++) - if (usage_mask & (1 << i)) - perspective_coef(inputs, &info, slot+1, vert_attr, i); - fragcoord_usage_mask |= TGSI_WRITEMASK_W; - break; - - case LP_INTERP_POSITION: - /* - * The generated pixel interpolators will pick up the coeffs from - * slot 0, so all need to ensure that the usage mask is covers all - * usages. - */ - fragcoord_usage_mask |= usage_mask; - break; - - case LP_INTERP_FACING: - setup_facing_coef(inputs, slot+1, info.frontfacing, usage_mask); - break; - - default: - assert(0); - } - } - - /* The internal position input is in slot zero: - */ - setup_fragcoord_coef(inputs, &info, 0, fragcoord_usage_mask); -} - -#else -extern void lp_setup_coef_dummy(void); -void lp_setup_coef_dummy(void) -{ -} - -#endif diff --git a/src/gallium/drivers/llvmpipe/lp_setup_coef.h b/src/gallium/drivers/llvmpipe/lp_setup_coef.h deleted file mode 100644 index 87a3255ccc6..00000000000 --- a/src/gallium/drivers/llvmpipe/lp_setup_coef.h +++ /dev/null @@ -1,64 +0,0 @@ -/************************************************************************** - * - * Copyright 2010 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - - -/** - * The setup code is concerned with point/line/triangle setup and - * putting commands/data into the bins. - */ - - -#ifndef LP_SETUP_COEF_H -#define LP_SETUP_COEF_H - - -struct lp_tri_info { - - float x0_center; - float y0_center; - - /* turn these into an aligned float[4] */ - float dy01_ooa; - float dy20_ooa; - float dx01_ooa; - float dx20_ooa; - - const float (*v0)[4]; - const float (*v1)[4]; - const float (*v2)[4]; - - boolean frontfacing; /* remove eventually */ -}; - -void lp_setup_tri_coef( struct lp_setup_context *setup, - struct lp_rast_shader_inputs *inputs, - const float (*v0)[4], - const float (*v1)[4], - const float (*v2)[4], - boolean frontfacing); - -#endif diff --git a/src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c b/src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c deleted file mode 100644 index 3742fd672b2..00000000000 --- a/src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c +++ /dev/null @@ -1,228 +0,0 @@ -/************************************************************************** - * - * Copyright 2010 VMware. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/* - * Binning code for triangles - */ - -#include "util/u_math.h" -#include "util/u_memory.h" -#include "lp_perf.h" -#include "lp_setup_context.h" -#include "lp_setup_coef.h" -#include "lp_rast.h" - -#if defined(PIPE_ARCH_SSE) -#include - - -static void constant_coef4( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot, - const float *attr) -{ - *(__m128 *)inputs->a0[slot] = *(__m128 *)attr; - *(__m128 *)inputs->dadx[slot] = _mm_set1_ps(0.0); - *(__m128 *)inputs->dady[slot] = _mm_set1_ps(0.0); -} - - - -/** - * Setup the fragment input attribute with the front-facing value. - * \param frontface is the triangle front facing? - */ -static void setup_facing_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot ) -{ - /* XXX: just pass frontface directly to the shader, don't bother - * treating it as an input. - */ - __m128 a0 = _mm_setr_ps(info->frontfacing ? 1.0 : -1.0, - 0, 0, 0); - - *(__m128 *)inputs->a0[slot] = a0; - *(__m128 *)inputs->dadx[slot] = _mm_set1_ps(0.0); - *(__m128 *)inputs->dady[slot] = _mm_set1_ps(0.0); -} - - - -static void calc_coef4( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot, - __m128 a0, - __m128 a1, - __m128 a2) -{ - __m128 da01 = _mm_sub_ps(a0, a1); - __m128 da20 = _mm_sub_ps(a2, a0); - - __m128 da01_dy20_ooa = _mm_mul_ps(da01, _mm_set1_ps(info->dy20_ooa)); - __m128 da20_dy01_ooa = _mm_mul_ps(da20, _mm_set1_ps(info->dy01_ooa)); - __m128 dadx = _mm_sub_ps(da01_dy20_ooa, da20_dy01_ooa); - - __m128 da01_dx20_ooa = _mm_mul_ps(da01, _mm_set1_ps(info->dx20_ooa)); - __m128 da20_dx01_ooa = _mm_mul_ps(da20, _mm_set1_ps(info->dx01_ooa)); - __m128 dady = _mm_sub_ps(da20_dx01_ooa, da01_dx20_ooa); - - __m128 dadx_x0 = _mm_mul_ps(dadx, _mm_set1_ps(info->x0_center)); - __m128 dady_y0 = _mm_mul_ps(dady, _mm_set1_ps(info->y0_center)); - __m128 attr_v0 = _mm_add_ps(dadx_x0, dady_y0); - __m128 attr_0 = _mm_sub_ps(a0, attr_v0); - - *(__m128 *)inputs->a0[slot] = attr_0; - *(__m128 *)inputs->dadx[slot] = dadx; - *(__m128 *)inputs->dady[slot] = dady; -} - - -static void linear_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot, - unsigned vert_attr) -{ - __m128 a0 = *(const __m128 *)info->v0[vert_attr]; - __m128 a1 = *(const __m128 *)info->v1[vert_attr]; - __m128 a2 = *(const __m128 *)info->v2[vert_attr]; - - calc_coef4(inputs, info, slot, a0, a1, a2); -} - - - -/** - * Compute a0, dadx and dady for a perspective-corrected interpolant, - * for a triangle. - * We basically multiply the vertex value by 1/w before computing - * the plane coefficients (a0, dadx, dady). - * Later, when we compute the value at a particular fragment position we'll - * divide the interpolated value by the interpolated W at that fragment. - */ -static void perspective_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, - unsigned slot, - unsigned vert_attr) -{ - /* premultiply by 1/w (v[0][3] is always 1/w): - */ - __m128 a0 = *(const __m128 *)info->v0[vert_attr]; - __m128 a1 = *(const __m128 *)info->v1[vert_attr]; - __m128 a2 = *(const __m128 *)info->v2[vert_attr]; - - __m128 a0_oow = _mm_mul_ps(a0, _mm_set1_ps(info->v0[0][3])); - __m128 a1_oow = _mm_mul_ps(a1, _mm_set1_ps(info->v1[0][3])); - __m128 a2_oow = _mm_mul_ps(a2, _mm_set1_ps(info->v2[0][3])); - - calc_coef4(inputs, info, slot, a0_oow, a1_oow, a2_oow); -} - - - - - -/** - * Compute the inputs-> dadx, dady, a0 values. - */ -void lp_setup_tri_coef( struct lp_setup_context *setup, - struct lp_rast_shader_inputs *inputs, - const float (*v0)[4], - const float (*v1)[4], - const float (*v2)[4], - boolean frontfacing) -{ - unsigned slot; - struct lp_tri_info info; - float dx01 = v0[0][0] - v1[0][0]; - float dy01 = v0[0][1] - v1[0][1]; - float dx20 = v2[0][0] - v0[0][0]; - float dy20 = v2[0][1] - v0[0][1]; - float oneoverarea = 1.0f / (dx01 * dy20 - dx20 * dy01); - - info.v0 = v0; - info.v1 = v1; - info.v2 = v2; - info.frontfacing = frontfacing; - info.x0_center = v0[0][0] - setup->pixel_offset; - info.y0_center = v0[0][1] - setup->pixel_offset; - info.dx01_ooa = dx01 * oneoverarea; - info.dx20_ooa = dx20 * oneoverarea; - info.dy01_ooa = dy01 * oneoverarea; - info.dy20_ooa = dy20 * oneoverarea; - - - /* The internal position input is in slot zero: - */ - linear_coef(inputs, &info, 0, 0); - - /* setup interpolation for all the remaining attributes: - */ - for (slot = 0; slot < setup->fs.nr_inputs; slot++) { - unsigned vert_attr = setup->fs.input[slot].src_index; - - switch (setup->fs.input[slot].interp) { - case LP_INTERP_CONSTANT: - if (setup->flatshade_first) { - constant_coef4(inputs, &info, slot+1, info.v0[vert_attr]); - } - else { - constant_coef4(inputs, &info, slot+1, info.v2[vert_attr]); - } - break; - - case LP_INTERP_LINEAR: - linear_coef(inputs, &info, slot+1, vert_attr); - break; - - case LP_INTERP_PERSPECTIVE: - perspective_coef(inputs, &info, slot+1, vert_attr); - break; - - case LP_INTERP_POSITION: - /* - * The generated pixel interpolators will pick up the coeffs from - * slot 0. - */ - break; - - case LP_INTERP_FACING: - setup_facing_coef(inputs, &info, slot+1); - break; - - default: - assert(0); - } - } -} - -#else -extern void lp_setup_coef_dummy(void); -void lp_setup_coef_dummy(void) -{ -} -#endif diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h index 80b356476ab..ff3b69afa83 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_context.h +++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h @@ -39,6 +39,7 @@ #include "lp_rast.h" #include "lp_tile_soa.h" /* for TILE_SIZE */ #include "lp_scene.h" +#include "lp_bld_interp.h" /* for struct lp_shader_input */ #include "draw/draw_vbuf.h" #include "util/u_rect.h" @@ -49,6 +50,8 @@ #define LP_SETUP_NEW_SCISSOR 0x08 +struct lp_setup_variant; + /** Max number of scenes */ #define MAX_SCENES 2 @@ -118,9 +121,6 @@ struct lp_setup_context } state; struct { - struct lp_shader_input input[PIPE_MAX_ATTRIBS]; - unsigned nr_inputs; - const struct lp_rast_state *stored; /**< what's in the scene */ struct lp_rast_state current; /**< currently set state */ struct pipe_resource *current_tex[PIPE_MAX_SAMPLERS]; @@ -139,6 +139,10 @@ struct lp_setup_context } blend_color; + struct { + const struct lp_setup_variant *variant; + } setup; + unsigned dirty; /**< bitmask of LP_SETUP_NEW_x bits */ void (*point)( struct lp_setup_context *, @@ -181,7 +185,7 @@ lp_setup_print_vertex(struct lp_setup_context *setup, struct lp_rast_triangle * lp_setup_alloc_triangle(struct lp_scene *scene, - unsigned nr_inputs, + unsigned num_inputs, unsigned nr_planes, unsigned *tri_size); diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index 9f090d1992e..928ffdc5cb5 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -35,6 +35,7 @@ #include "lp_setup_context.h" #include "lp_rast.h" #include "lp_state_fs.h" +#include "lp_state_setup.h" #define NUM_CHANNELS 4 @@ -162,19 +163,20 @@ static void setup_line_coefficients( struct lp_setup_context *setup, struct lp_rast_triangle *tri, struct lp_line_info *info) { + const struct lp_setup_variant_key *key = &setup->setup.variant->key; unsigned fragcoord_usage_mask = TGSI_WRITEMASK_XYZ; unsigned slot; /* setup interpolation for all the remaining attributes: */ - for (slot = 0; slot < setup->fs.nr_inputs; slot++) { - unsigned vert_attr = setup->fs.input[slot].src_index; - unsigned usage_mask = setup->fs.input[slot].usage_mask; + for (slot = 0; slot < key->num_inputs; slot++) { + unsigned vert_attr = key->inputs[slot].src_index; + unsigned usage_mask = key->inputs[slot].usage_mask; unsigned i; - switch (setup->fs.input[slot].interp) { + switch (key->inputs[slot].interp) { case LP_INTERP_CONSTANT: - if (setup->flatshade_first) { + if (key->flatshade_first) { for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) constant_coef(setup, tri, slot+1, info->v1[vert_attr][i], i); @@ -235,14 +237,15 @@ print_line(struct lp_setup_context *setup, const float (*v1)[4], const float (*v2)[4]) { + const struct lp_setup_variant_key *key = &setup->setup.variant->key; uint i; debug_printf("llvmpipe line\n"); - for (i = 0; i < 1 + setup->fs.nr_inputs; i++) { + for (i = 0; i < 1 + key->num_inputs; i++) { debug_printf(" v1[%d]: %f %f %f %f\n", i, v1[i][0], v1[i][1], v1[i][2], v1[i][3]); } - for (i = 0; i < 1 + setup->fs.nr_inputs; i++) { + for (i = 0; i < 1 + key->num_inputs; i++) { debug_printf(" v2[%d]: %f %f %f %f\n", i, v2[i][0], v2[i][1], v2[i][2], v2[i][3]); } @@ -269,6 +272,7 @@ try_setup_line( struct lp_setup_context *setup, const float (*v2)[4]) { struct lp_scene *scene = setup->scene; + const struct lp_setup_variant_key *key = &setup->setup.variant->key; struct lp_rast_triangle *line; struct lp_line_info info; float width = MAX2(1.0, setup->line_width); @@ -548,7 +552,7 @@ try_setup_line( struct lp_setup_context *setup, u_rect_find_intersection(&setup->draw_region, &bbox); line = lp_setup_alloc_triangle(scene, - setup->fs.nr_inputs, + key->num_inputs, nr_planes, &tri_bytes); if (!line) diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 55389871518..c98966022ee 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -36,6 +36,7 @@ #include "lp_setup_context.h" #include "lp_rast.h" #include "lp_state_fs.h" +#include "lp_state_setup.h" #include "tgsi/tgsi_scan.h" #define NUM_CHANNELS 4 @@ -152,17 +153,18 @@ setup_point_coefficients( struct lp_setup_context *setup, struct lp_rast_triangle *point, const struct point_info *info) { + const struct lp_setup_variant_key *key = &setup->setup.variant->key; unsigned fragcoord_usage_mask = TGSI_WRITEMASK_XYZ; unsigned slot; /* setup interpolation for all the remaining attributes: */ - for (slot = 0; slot < setup->fs.nr_inputs; slot++) { - unsigned vert_attr = setup->fs.input[slot].src_index; - unsigned usage_mask = setup->fs.input[slot].usage_mask; + for (slot = 0; slot < key->num_inputs; slot++) { + unsigned vert_attr = key->inputs[slot].src_index; + unsigned usage_mask = key->inputs[slot].usage_mask; unsigned i; - switch (setup->fs.input[slot].interp) { + switch (key->inputs[slot].interp) { case LP_INTERP_POSITION: /* * The generated pixel interpolators will pick up the coeffs from @@ -215,6 +217,7 @@ try_setup_point( struct lp_setup_context *setup, const float (*v0)[4] ) { /* x/y positions in fixed point */ + const struct lp_setup_variant_key *key = &setup->setup.variant->key; const int sizeAttr = setup->psize; const float size = (setup->point_size_per_vertex && sizeAttr > 0) ? v0[sizeAttr][0] @@ -266,7 +269,7 @@ try_setup_point( struct lp_setup_context *setup, u_rect_find_intersection(&setup->draw_region, &bbox); point = lp_setup_alloc_triangle(scene, - setup->fs.nr_inputs, + key->num_inputs, nr_planes, &bytes); if (!point) diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 5090f82ab5f..43617a6b672 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -34,9 +34,9 @@ #include "util/u_rect.h" #include "lp_perf.h" #include "lp_setup_context.h" -#include "lp_setup_coef.h" #include "lp_rast.h" #include "lp_state_fs.h" +#include "lp_state_setup.h" #define NUM_CHANNELS 4 @@ -65,16 +65,16 @@ fixed_to_float(int a) * immediately after it. * The memory is allocated from the per-scene pool, not per-tile. * \param tri_size returns number of bytes allocated - * \param nr_inputs number of fragment shader inputs + * \param num_inputs number of fragment shader inputs * \return pointer to triangle space */ struct lp_rast_triangle * lp_setup_alloc_triangle(struct lp_scene *scene, - unsigned nr_inputs, + unsigned num_inputs, unsigned nr_planes, unsigned *tri_size) { - unsigned input_array_sz = NUM_CHANNELS * (nr_inputs + 1) * sizeof(float); + unsigned input_array_sz = NUM_CHANNELS * (num_inputs + 1) * sizeof(float); struct lp_rast_triangle *tri; unsigned tri_bytes, bytes; char *inputs; @@ -101,25 +101,26 @@ lp_setup_print_vertex(struct lp_setup_context *setup, const char *name, const float (*v)[4]) { + const struct lp_setup_variant_key *key = &setup->setup.variant->key; int i, j; debug_printf(" wpos (%s[0]) xyzw %f %f %f %f\n", name, v[0][0], v[0][1], v[0][2], v[0][3]); - for (i = 0; i < setup->fs.nr_inputs; i++) { - const float *in = v[setup->fs.input[i].src_index]; + for (i = 0; i < key->num_inputs; i++) { + const float *in = v[key->inputs[i].src_index]; debug_printf(" in[%d] (%s[%d]) %s%s%s%s ", i, - name, setup->fs.input[i].src_index, - (setup->fs.input[i].usage_mask & 0x1) ? "x" : " ", - (setup->fs.input[i].usage_mask & 0x2) ? "y" : " ", - (setup->fs.input[i].usage_mask & 0x4) ? "z" : " ", - (setup->fs.input[i].usage_mask & 0x8) ? "w" : " "); + name, key->inputs[i].src_index, + (key->inputs[i].usage_mask & 0x1) ? "x" : " ", + (key->inputs[i].usage_mask & 0x2) ? "y" : " ", + (key->inputs[i].usage_mask & 0x4) ? "z" : " ", + (key->inputs[i].usage_mask & 0x8) ? "w" : " "); for (j = 0; j < 4; j++) - if (setup->fs.input[i].usage_mask & (1<inputs[i].usage_mask & (1<scene; + const struct lp_setup_variant_key *key = &setup->setup.variant->key; struct lp_rast_triangle *tri; int x[3]; int y[3]; @@ -288,7 +290,7 @@ do_triangle_ccw(struct lp_setup_context *setup, u_rect_find_intersection(&setup->draw_region, &bbox); tri = lp_setup_alloc_triangle(scene, - setup->fs.nr_inputs, + key->num_inputs, nr_planes, &tri_bytes); if (!tri) @@ -328,13 +330,25 @@ do_triangle_ccw(struct lp_setup_context *setup, /* Setup parameter interpolants: */ - lp_setup_tri_coef( setup, &tri->inputs, v0, v1, v2, frontfacing ); + setup->setup.variant->jit_function( v0, + v1, + v2, + frontfacing, + tri->inputs.a0, + tri->inputs.dadx, + tri->inputs.dady, + &setup->setup.variant->key ); tri->inputs.facing = frontfacing ? 1.0F : -1.0F; tri->inputs.disable = FALSE; tri->inputs.opaque = setup->fs.current.variant->opaque; tri->inputs.state = setup->fs.stored; + if (0) + lp_dump_setup_coef(&setup->setup.variant->key, + (const float (*)[4])tri->inputs.a0, + (const float (*)[4])tri->inputs.dadx, + (const float (*)[4])tri->inputs.dady); for (i = 0; i < 3; i++) { struct lp_rast_plane *plane = &tri->plane[i]; diff --git a/src/gallium/drivers/llvmpipe/lp_state.h b/src/gallium/drivers/llvmpipe/lp_state.h index 86313e1c484..7893e9cdc0c 100644 --- a/src/gallium/drivers/llvmpipe/lp_state.h +++ b/src/gallium/drivers/llvmpipe/lp_state.h @@ -97,6 +97,9 @@ llvmpipe_set_framebuffer_state(struct pipe_context *, void llvmpipe_update_fs(struct llvmpipe_context *lp); +void +llvmpipe_update_setup(struct llvmpipe_context *lp); + void llvmpipe_update_derived(struct llvmpipe_context *llvmpipe); diff --git a/src/gallium/drivers/llvmpipe/lp_state_derived.c b/src/gallium/drivers/llvmpipe/lp_state_derived.c index edd723f65f2..de242aa93ca 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_derived.c +++ b/src/gallium/drivers/llvmpipe/lp_state_derived.c @@ -50,12 +50,13 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) { const struct lp_fragment_shader *lpfs = llvmpipe->fs; struct vertex_info *vinfo = &llvmpipe->vertex_info; - struct lp_shader_input *inputs = llvmpipe->inputs; unsigned vs_index; uint i; /* - * Match FS inputs against VS outputs, emitting the necessary attributes. + * Match FS inputs against VS outputs, emitting the necessary + * attributes. Could cache these structs and look them up with a + * combination of fragment shader, vertex shader ids. */ vinfo->num_attribs = 0; @@ -74,64 +75,10 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) vs_index = draw_find_shader_output(llvmpipe->draw, lpfs->info.input_semantic_name[i], lpfs->info.input_semantic_index[i]); - if (vs_index < 0) { - /* - * This can happen with sprite coordinates - the vertex - * shader doesn't need to provide an output as we generate - * them internally. However, lets keep pretending that there - * is something there to not confuse other code. - */ - vs_index = 0; - } - - /* This can be pre-computed, except for flatshade: - */ - inputs[i].usage_mask = lpfs->info.input_usage_mask[i]; - - switch (lpfs->info.input_interpolate[i]) { - case TGSI_INTERPOLATE_CONSTANT: - inputs[i].interp = LP_INTERP_CONSTANT; - break; - case TGSI_INTERPOLATE_LINEAR: - inputs[i].interp = LP_INTERP_LINEAR; - break; - case TGSI_INTERPOLATE_PERSPECTIVE: - inputs[i].interp = LP_INTERP_PERSPECTIVE; - break; - default: - assert(0); - break; - } - - switch (lpfs->info.input_semantic_name[i]) { - case TGSI_SEMANTIC_FACE: - inputs[i].interp = LP_INTERP_FACING; - break; - case TGSI_SEMANTIC_POSITION: - /* Position was already emitted above - */ - inputs[i].interp = LP_INTERP_POSITION; - inputs[i].src_index = 0; - continue; - case TGSI_SEMANTIC_COLOR: - /* Colors are linearly inputs[i].interpolated in the fragment shader - * even when flatshading is active. This just tells the - * setup module to use coefficients with ddx==0 and - * ddy==0. - */ - if (llvmpipe->rasterizer->flatshade) - inputs[i].interp = LP_INTERP_CONSTANT; - break; - - default: - break; - } /* * Emit the requested fs attribute for all but position. */ - - inputs[i].src_index = vinfo->num_attribs; draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_PERSPECTIVE, vs_index); } @@ -145,15 +92,9 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_CONSTANT, vs_index); } - llvmpipe->num_inputs = lpfs->info.num_inputs; - draw_compute_vertex_size(vinfo); - lp_setup_set_vertex_info(llvmpipe->setup, vinfo); - lp_setup_set_fs_inputs(llvmpipe->setup, - inputs, - lpfs->info.num_inputs); } @@ -190,6 +131,10 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe ) LP_NEW_QUERY)) llvmpipe_update_fs( llvmpipe ); + if (llvmpipe->dirty & (LP_NEW_FS | + LP_NEW_RASTERIZER)) + llvmpipe_update_setup( llvmpipe ); + if (llvmpipe->dirty & LP_NEW_BLEND_COLOR) lp_setup_set_blend_color(llvmpipe->setup, &llvmpipe->blend_color); diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index e54dd9f0a3c..ad058e384ad 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -255,8 +255,7 @@ generate_quad_mask(LLVMBuilderRef builder, * \param partial_mask if 1, do mask_input testing */ static void -generate_fs(struct llvmpipe_context *lp, - struct lp_fragment_shader *shader, +generate_fs(struct lp_fragment_shader *shader, const struct lp_fragment_shader_variant_key *key, LLVMBuilderRef builder, struct lp_type type, @@ -468,13 +467,13 @@ generate_blend(const struct pipe_blend_state *blend, * 2x2 pixels. */ static void -generate_fragment(struct llvmpipe_context *lp, +generate_fragment(struct llvmpipe_screen *screen, struct lp_fragment_shader *shader, struct lp_fragment_shader_variant *variant, unsigned partial_mask) { - struct llvmpipe_screen *screen = llvmpipe_screen(lp->pipe.screen); const struct lp_fragment_shader_variant_key *key = &variant->key; + struct lp_shader_input inputs[PIPE_MAX_SHADER_INPUTS]; char func_name[256]; struct lp_type fs_type; struct lp_type blend_type; @@ -507,6 +506,18 @@ generate_fragment(struct llvmpipe_context *lp, unsigned chan; unsigned cbuf; + /* Adjust color input interpolation according to flatshade state: + */ + memcpy(inputs, shader->inputs, shader->info.num_inputs * sizeof inputs[0]); + for (i = 0; i < shader->info.num_inputs; i++) { + if (inputs[i].interp == LP_INTERP_COLOR) { + if (key->flatshade) + inputs[i].interp = LP_INTERP_CONSTANT; + else + inputs[i].interp = LP_INTERP_LINEAR; + } + } + /* TODO: actually pick these based on the fs and color buffer * characteristics. */ @@ -558,7 +569,6 @@ generate_fragment(struct llvmpipe_context *lp, variant->function[partial_mask] = function; - /* XXX: need to propagate noalias down into color param now we are * passing a pointer-to-pointer? */ @@ -606,8 +616,8 @@ generate_fragment(struct llvmpipe_context *lp, * already included in the shader key. */ lp_build_interp_soa_init(&interp, - lp->num_inputs, - lp->inputs, + shader->info.num_inputs, + inputs, builder, fs_type, a0_ptr, dadx_ptr, dady_ptr, x, y); @@ -626,7 +636,7 @@ generate_fragment(struct llvmpipe_context *lp, depth_ptr_i = LLVMBuildGEP(builder, depth_ptr, &index, 1, ""); - generate_fs(lp, shader, key, + generate_fs(shader, key, builder, fs_type, context_ptr, @@ -823,7 +833,7 @@ lp_debug_fs_variant(const struct lp_fragment_shader_variant *variant) } static struct lp_fragment_shader_variant * -generate_variant(struct llvmpipe_context *lp, +generate_variant(struct llvmpipe_screen *screen, struct lp_fragment_shader *shader, const struct lp_fragment_shader_variant_key *key) { @@ -869,11 +879,11 @@ generate_variant(struct llvmpipe_context *lp, lp_debug_fs_variant(variant); } - generate_fragment(lp, shader, variant, RAST_EDGE_TEST); + generate_fragment(screen, shader, variant, RAST_EDGE_TEST); if (variant->opaque) { /* Specialized shader, which doesn't need to read the color buffer. */ - generate_fragment(lp, shader, variant, RAST_WHOLE); + generate_fragment(screen, shader, variant, RAST_WHOLE); } else { variant->jit_function[RAST_WHOLE] = variant->jit_function[RAST_EDGE_TEST]; } @@ -888,6 +898,7 @@ llvmpipe_create_fs_state(struct pipe_context *pipe, { struct lp_fragment_shader *shader; int nr_samplers; + int i; shader = CALLOC_STRUCT(lp_fragment_shader); if (!shader) @@ -907,6 +918,46 @@ llvmpipe_create_fs_state(struct pipe_context *pipe, shader->variant_key_size = Offset(struct lp_fragment_shader_variant_key, sampler[nr_samplers]); + for (i = 0; i < shader->info.num_inputs; i++) { + shader->inputs[i].usage_mask = shader->info.input_usage_mask[i]; + + switch (shader->info.input_interpolate[i]) { + case TGSI_INTERPOLATE_CONSTANT: + shader->inputs[i].interp = LP_INTERP_CONSTANT; + break; + case TGSI_INTERPOLATE_LINEAR: + shader->inputs[i].interp = LP_INTERP_LINEAR; + break; + case TGSI_INTERPOLATE_PERSPECTIVE: + shader->inputs[i].interp = LP_INTERP_PERSPECTIVE; + break; + default: + assert(0); + break; + } + + switch (shader->info.input_semantic_name[i]) { + case TGSI_SEMANTIC_COLOR: + /* Colors may be either linearly or constant interpolated in + * the fragment shader, but that information isn't available + * here. Mark color inputs and fix them up later. + */ + shader->inputs[i].interp = LP_INTERP_COLOR; + break; + case TGSI_SEMANTIC_FACE: + shader->inputs[i].interp = LP_INTERP_FACING; + break; + case TGSI_SEMANTIC_POSITION: + /* Position was already emitted above + */ + shader->inputs[i].interp = LP_INTERP_POSITION; + shader->inputs[i].src_index = 0; + continue; + } + + shader->inputs[i].src_index = i+1; + } + if (LP_DEBUG & DEBUG_TGSI) { unsigned attrib; debug_printf("llvmpipe: Create fragment shader #%u %p:\n", shader->no, (void *) shader); @@ -1161,6 +1212,7 @@ make_variant_key(struct llvmpipe_context *lp, void llvmpipe_update_fs(struct llvmpipe_context *lp) { + struct llvmpipe_screen *screen = llvmpipe_screen(lp->pipe.screen); struct lp_fragment_shader *shader = lp->fs; struct lp_fragment_shader_variant_key key; struct lp_fragment_shader_variant *variant = NULL; @@ -1201,7 +1253,7 @@ llvmpipe_update_fs(struct llvmpipe_context *lp) } t0 = os_time_get(); - variant = generate_variant(lp, shader, &key); + variant = generate_variant(screen, shader, &key); t1 = os_time_get(); dt = t1 - t0; @@ -1221,6 +1273,10 @@ llvmpipe_update_fs(struct llvmpipe_context *lp) + + + + void llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe) { diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.h b/src/gallium/drivers/llvmpipe/lp_state_fs.h index 2914e7d7efd..f73c7801c00 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.h +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.h @@ -34,6 +34,7 @@ #include "pipe/p_state.h" #include "tgsi/tgsi_scan.h" /* for tgsi_shader_info */ #include "gallivm/lp_bld_sample.h" /* for struct lp_sampler_static_state */ +#include "lp_bld_interp.h" /* for struct lp_shader_input */ struct tgsi_token; @@ -105,6 +106,9 @@ struct lp_fragment_shader unsigned no; unsigned variants_created; unsigned variants_cached; + + /** Fragment shader input interpolation info */ + struct lp_shader_input inputs[PIPE_MAX_SHADER_INPUTS]; }; diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.c b/src/gallium/drivers/llvmpipe/lp_state_setup.c new file mode 100644 index 00000000000..aa9147a1a15 --- /dev/null +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.c @@ -0,0 +1,768 @@ +/************************************************************************** + * + * Copyright 2010 VMware. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + **************************************************************************/ + + +#include "util/u_math.h" +#include "util/u_memory.h" +#include "util/u_simple_list.h" +#include "os/os_time.h" +#include "gallivm/lp_bld_debug.h" +#include "gallivm/lp_bld_init.h" +#include "gallivm/lp_bld_intr.h" +#include /* for LLVMVerifyFunction */ + +#include "lp_perf.h" +#include "lp_debug.h" +#include "lp_flush.h" +#include "lp_screen.h" +#include "lp_context.h" +#include "lp_setup_context.h" +#include "lp_rast.h" +#include "lp_state.h" +#include "lp_state_fs.h" +#include "lp_state_setup.h" + + + +/* currently organized to interpolate full float[4] attributes even + * when some elements are unused. Later, can pack vertex data more + * closely. + */ + + +struct lp_setup_args +{ + /* Function arguments: + */ + LLVMValueRef v0; + LLVMValueRef v1; + LLVMValueRef v2; + LLVMValueRef facing; /* boolean */ + LLVMValueRef a0; + LLVMValueRef dadx; + LLVMValueRef dady; + + /* Derived: + */ + LLVMValueRef x0_center; + LLVMValueRef y0_center; + LLVMValueRef dy20_ooa; + LLVMValueRef dy01_ooa; + LLVMValueRef dx20_ooa; + LLVMValueRef dx01_ooa; +}; + +static LLVMTypeRef type4f(void) +{ + return LLVMVectorType(LLVMFloatType(), 4); +} + + +/* Equivalent of _mm_setr_ps(a,b,c,d) + */ +static LLVMValueRef vec4f(LLVMBuilderRef bld, + LLVMValueRef a, LLVMValueRef b, LLVMValueRef c, LLVMValueRef d, + const char *name) +{ + LLVMValueRef i0 = LLVMConstInt(LLVMInt32Type(), 0, 0); + LLVMValueRef i1 = LLVMConstInt(LLVMInt32Type(), 1, 0); + LLVMValueRef i2 = LLVMConstInt(LLVMInt32Type(), 2, 0); + LLVMValueRef i3 = LLVMConstInt(LLVMInt32Type(), 3, 0); + + LLVMValueRef res = LLVMGetUndef(type4f()); + + res = LLVMBuildInsertElement(bld, res, a, i0, ""); + res = LLVMBuildInsertElement(bld, res, b, i1, ""); + res = LLVMBuildInsertElement(bld, res, c, i2, ""); + res = LLVMBuildInsertElement(bld, res, d, i3, name); + + return res; +} + +/* Equivalent of _mm_set1_ps(a) + */ +static LLVMValueRef vec4f_from_scalar(LLVMBuilderRef bld, + LLVMValueRef a, + const char *name) +{ + LLVMValueRef res = LLVMGetUndef(type4f()); + int i; + + for(i = 0; i < 4; ++i) { + LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0); + res = LLVMBuildInsertElement(bld, res, a, index, i == 3 ? name : ""); + } + + return res; +} + +static void +store_coef(LLVMBuilderRef builder, + struct lp_setup_args *args, + unsigned slot, + LLVMValueRef a0, + LLVMValueRef dadx, + LLVMValueRef dady) +{ + LLVMValueRef idx = LLVMConstInt(LLVMInt32Type(), slot, 0); + + LLVMBuildStore(builder, + a0, + LLVMBuildGEP(builder, args->a0, &idx, 1, "")); + + LLVMBuildStore(builder, + dadx, + LLVMBuildGEP(builder, args->dadx, &idx, 1, "")); + + LLVMBuildStore(builder, + dady, + LLVMBuildGEP(builder, args->dady, &idx, 1, "")); +} + + + +static void +emit_constant_coef4( LLVMBuilderRef builder, + struct lp_setup_args *args, + unsigned slot, + LLVMValueRef vert, + unsigned attr) +{ + LLVMValueRef zero = LLVMConstReal(LLVMFloatType(), 0.0); + LLVMValueRef zerovec = vec4f_from_scalar(builder, zero, "zero"); + LLVMValueRef idx = LLVMConstInt(LLVMInt32Type(), attr, 0); + LLVMValueRef attr_ptr = LLVMBuildGEP(builder, vert, &idx, 1, "attr_ptr"); + LLVMValueRef vert_attr = LLVMBuildLoad(builder, attr_ptr, "vert_attr"); + + store_coef(builder, args, slot, vert_attr, zerovec, zerovec); +} + + + +/** + * Setup the fragment input attribute with the front-facing value. + * \param frontface is the triangle front facing? + */ +static void +emit_facing_coef( LLVMBuilderRef builder, + struct lp_setup_args *args, + unsigned slot ) +{ + LLVMValueRef a0_0 = args->facing; + LLVMValueRef zero = LLVMConstReal(LLVMFloatType(), 0.0); + LLVMValueRef a0 = vec4f(builder, a0_0, zero, zero, zero, "facing"); + LLVMValueRef zerovec = vec4f_from_scalar(builder, zero, "zero"); + + store_coef(builder, args, slot, a0, zerovec, zerovec); +} + + +static LLVMValueRef +vert_attrib(LLVMBuilderRef b, + LLVMValueRef vert, + int attr, + int elem, + const char *name) +{ + LLVMValueRef idx[2]; + idx[0] = LLVMConstInt(LLVMInt32Type(), attr, 0); + idx[1] = LLVMConstInt(LLVMInt32Type(), elem, 0); + return LLVMBuildLoad(b, LLVMBuildGEP(b, vert, idx, 2, ""), name); +} + + + +static void +emit_coef4( LLVMBuilderRef b, + struct lp_setup_args *args, + unsigned slot, + LLVMValueRef a0, + LLVMValueRef a1, + LLVMValueRef a2) +{ + LLVMValueRef dy20_ooa = args->dy20_ooa; + LLVMValueRef dy01_ooa = args->dy01_ooa; + LLVMValueRef dx20_ooa = args->dx20_ooa; + LLVMValueRef dx01_ooa = args->dx01_ooa; + LLVMValueRef x0_center = args->x0_center; + LLVMValueRef y0_center = args->y0_center; + + /* XXX: using fsub, fmul on vector types -- does this work?? + */ + LLVMValueRef da01 = LLVMBuildFSub(b, a0, a1, "da01"); + LLVMValueRef da20 = LLVMBuildFSub(b, a2, a0, "da20"); + + /* Calculate dadx (vec4f) + */ + LLVMValueRef da01_dy20_ooa = LLVMBuildFMul(b, da01, dy20_ooa, "da01_dy20_ooa"); + LLVMValueRef da20_dy01_ooa = LLVMBuildFMul(b, da20, dy01_ooa, "da20_dy01_ooa"); + LLVMValueRef dadx = LLVMBuildFSub(b, da01_dy20_ooa, da20_dy01_ooa, "dadx"); + + /* Calculate dady (vec4f) + */ + LLVMValueRef da01_dx20_ooa = LLVMBuildFMul(b, da01, dx20_ooa, "da01_dx20_ooa"); + LLVMValueRef da20_dx01_ooa = LLVMBuildFMul(b, da20, dx01_ooa, "da20_dx01_ooa"); + LLVMValueRef dady = LLVMBuildFSub(b, da20_dx01_ooa, da01_dx20_ooa, "dady"); + + /* Calculate a0 - the attribute value at the origin + */ + LLVMValueRef dadx_x0 = LLVMBuildFMul(b, dadx, x0_center, "dadx_x0"); + LLVMValueRef dady_y0 = LLVMBuildFMul(b, dady, y0_center, "dady_y0"); + LLVMValueRef attr_v0 = LLVMBuildFAdd(b, dadx_x0, dady_y0, "attr_v0"); + LLVMValueRef attr_0 = LLVMBuildFSub(b, a0, attr_v0, "attr_0"); + + store_coef(b, args, slot, attr_0, dadx, dady); +} + + +static void +emit_linear_coef( LLVMBuilderRef b, + struct lp_setup_args *args, + unsigned slot, + unsigned vert_attr) +{ + LLVMValueRef idx = LLVMConstInt(LLVMInt32Type(), vert_attr, 0); + + LLVMValueRef a0 = LLVMBuildLoad(b, LLVMBuildGEP(b, args->v0, &idx, 1, ""), "v0a"); + LLVMValueRef a1 = LLVMBuildLoad(b, LLVMBuildGEP(b, args->v1, &idx, 1, ""), "v1a"); + LLVMValueRef a2 = LLVMBuildLoad(b, LLVMBuildGEP(b, args->v2, &idx, 1, ""), "v2a"); + + emit_coef4(b, args, slot, a0, a1, a2); +} + + + +/** + * Compute a0, dadx and dady for a perspective-corrected interpolant, + * for a triangle. + * We basically multiply the vertex value by 1/w before computing + * the plane coefficients (a0, dadx, dady). + * Later, when we compute the value at a particular fragment position we'll + * divide the interpolated value by the interpolated W at that fragment. + */ +static void +emit_perspective_coef( LLVMBuilderRef b, + struct lp_setup_args *args, + unsigned slot, + unsigned vert_attr) +{ + /* premultiply by 1/w (v[0][3] is always 1/w): + */ + LLVMValueRef idx = LLVMConstInt(LLVMInt32Type(), vert_attr, 0); + + LLVMValueRef v0a = LLVMBuildLoad(b, LLVMBuildGEP(b, args->v0, &idx, 1, ""), "v0a"); + LLVMValueRef v1a = LLVMBuildLoad(b, LLVMBuildGEP(b, args->v1, &idx, 1, ""), "v1a"); + LLVMValueRef v2a = LLVMBuildLoad(b, LLVMBuildGEP(b, args->v2, &idx, 1, ""), "v2a"); + + LLVMValueRef v0_oow = vec4f_from_scalar(b, vert_attrib(b, args->v0, 0, 3, ""), "v0_oow"); + LLVMValueRef v1_oow = vec4f_from_scalar(b, vert_attrib(b, args->v1, 0, 3, ""), "v1_oow"); + LLVMValueRef v2_oow = vec4f_from_scalar(b, vert_attrib(b, args->v2, 0, 3, ""), "v2_oow"); + + LLVMValueRef v0_oow_v0a = LLVMBuildFMul(b, v0a, v0_oow, "v0_oow_v0a"); + LLVMValueRef v1_oow_v1a = LLVMBuildFMul(b, v1a, v1_oow, "v1_oow_v1a"); + LLVMValueRef v2_oow_v2a = LLVMBuildFMul(b, v2a, v2_oow, "v2_oow_v2a"); + + emit_coef4(b, args, slot, v0_oow_v0a, v1_oow_v1a, v2_oow_v2a); +} + + +static void +emit_position_coef( LLVMBuilderRef builder, + struct lp_setup_args *args, + int slot, int attrib ) +{ + emit_linear_coef(builder, args, slot, attrib); +} + + + + +/** + * Compute the inputs-> dadx, dady, a0 values. + */ +static void +emit_tri_coef( LLVMBuilderRef builder, + const struct lp_setup_variant_key *key, + struct lp_setup_args *args ) +{ + unsigned slot; + + /* The internal position input is in slot zero: + */ + emit_position_coef(builder, args, 0, 0); + + /* setup interpolation for all the remaining attributes: + */ + for (slot = 0; slot < key->num_inputs; slot++) { + unsigned vert_attr = key->inputs[slot].src_index; + + switch (key->inputs[slot].interp) { + case LP_INTERP_CONSTANT: + if (key->flatshade_first) { + emit_constant_coef4(builder, args, slot+1, args->v0, vert_attr); + } + else { + emit_constant_coef4(builder, args, slot+1, args->v2, vert_attr); + } + break; + + case LP_INTERP_LINEAR: + emit_linear_coef(builder, args, slot+1, vert_attr); + break; + + case LP_INTERP_PERSPECTIVE: + emit_perspective_coef(builder, args, slot+1, vert_attr); + break; + + case LP_INTERP_POSITION: + /* + * The generated pixel interpolators will pick up the coeffs from + * slot 0. + */ + break; + + case LP_INTERP_FACING: + emit_facing_coef(builder, args, slot+1); + break; + + default: + assert(0); + } + } +} + + +/* XXX: This is generic code, share with fs/vs codegen: + */ +static lp_jit_setup_triangle +finalize_function(struct llvmpipe_screen *screen, + LLVMBuilderRef builder, + LLVMValueRef function) +{ + void *f; + + /* Verify the LLVM IR. If invalid, dump and abort */ +#ifdef DEBUG + if (LLVMVerifyFunction(function, LLVMPrintMessageAction)) { + if (1) + lp_debug_dump_value(function); + abort(); + } +#endif + + /* Apply optimizations to LLVM IR */ + LLVMRunFunctionPassManager(screen->pass, function); + + if (gallivm_debug & GALLIVM_DEBUG_IR) + { + /* Print the LLVM IR to stderr */ + lp_debug_dump_value(function); + debug_printf("\n"); + } + + /* + * Translate the LLVM IR into machine code. + */ + f = LLVMGetPointerToGlobal(screen->engine, function); + + if (gallivm_debug & GALLIVM_DEBUG_ASM) + { + lp_disassemble(f); + } + + lp_func_delete_body(function); + + return f; +} + +/* XXX: Generic code: + */ +static void +lp_emit_emms(LLVMBuilderRef builder) +{ +#ifdef PIPE_ARCH_X86 + /* Avoid corrupting the FPU stack on 32bit OSes. */ + lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0); +#endif +} + + +/* XXX: generic code: + */ +static void +set_noalias(LLVMBuilderRef builder, + LLVMValueRef function, + const LLVMTypeRef *arg_types, + int nr_args) +{ + int i; + for(i = 0; i < Elements(arg_types); ++i) + if(LLVMGetTypeKind(arg_types[i]) == LLVMPointerTypeKind) + LLVMAddAttribute(LLVMGetParam(function, i), + LLVMNoAliasAttribute); +} + +static void +init_args(LLVMBuilderRef b, + struct lp_setup_args *args, + const struct lp_setup_variant *variant) +{ + LLVMValueRef v0_x = vert_attrib(b, args->v0, 0, 0, "v0_x"); + LLVMValueRef v0_y = vert_attrib(b, args->v0, 0, 1, "v0_y"); + + LLVMValueRef v1_x = vert_attrib(b, args->v1, 0, 0, "v1_x"); + LLVMValueRef v1_y = vert_attrib(b, args->v1, 0, 1, "v1_y"); + + LLVMValueRef v2_x = vert_attrib(b, args->v2, 0, 0, "v2_x"); + LLVMValueRef v2_y = vert_attrib(b, args->v2, 0, 1, "v2_y"); + + LLVMValueRef pixel_center = LLVMConstReal(LLVMFloatType(), + variant->key.pixel_center_half ? 0.5 : 0); + + LLVMValueRef x0_center = LLVMBuildFSub(b, v0_x, pixel_center, "x0_center" ); + LLVMValueRef y0_center = LLVMBuildFSub(b, v0_y, pixel_center, "y0_center" ); + + LLVMValueRef dx01 = LLVMBuildFSub(b, v0_x, v1_x, "dx01"); + LLVMValueRef dy01 = LLVMBuildFSub(b, v0_y, v1_y, "dy01"); + LLVMValueRef dx20 = LLVMBuildFSub(b, v2_x, v0_x, "dx20"); + LLVMValueRef dy20 = LLVMBuildFSub(b, v2_y, v0_y, "dy20"); + + LLVMValueRef one = LLVMConstReal(LLVMFloatType(), 1.0); + LLVMValueRef e = LLVMBuildFMul(b, dx01, dy20, "e"); + LLVMValueRef f = LLVMBuildFMul(b, dx20, dy01, "f"); + LLVMValueRef ooa = LLVMBuildFDiv(b, one, LLVMBuildFSub(b, e, f, ""), "ooa"); + + LLVMValueRef dy20_ooa = LLVMBuildFMul(b, dy20, ooa, "dy20_ooa"); + LLVMValueRef dy01_ooa = LLVMBuildFMul(b, dy01, ooa, "dy01_ooa"); + LLVMValueRef dx20_ooa = LLVMBuildFMul(b, dx20, ooa, "dx20_ooa"); + LLVMValueRef dx01_ooa = LLVMBuildFMul(b, dx01, ooa, "dx01_ooa"); + + args->dy20_ooa = vec4f_from_scalar(b, dy20_ooa, "dy20_ooa_4f"); + args->dy01_ooa = vec4f_from_scalar(b, dy01_ooa, "dy01_ooa_4f"); + + args->dx20_ooa = vec4f_from_scalar(b, dx20_ooa, "dx20_ooa_4f"); + args->dx01_ooa = vec4f_from_scalar(b, dx01_ooa, "dx01_ooa_4f"); + + args->x0_center = vec4f_from_scalar(b, x0_center, "x0_center_4f"); + args->y0_center = vec4f_from_scalar(b, y0_center, "y0_center_4f"); +} + +/** + * Generate the runtime callable function for the coefficient calculation. + * + */ +static struct lp_setup_variant * +generate_setup_variant(struct llvmpipe_screen *screen, + struct lp_setup_variant_key *key) +{ + struct lp_setup_variant *variant = NULL; + struct lp_setup_args args; + char func_name[256]; + LLVMTypeRef vec4f_type; + LLVMTypeRef func_type; + LLVMTypeRef arg_types[8]; + LLVMBasicBlockRef block; + LLVMBuilderRef builder; + int64_t t0, t1; + + if (0) + goto fail; + + variant = CALLOC_STRUCT(lp_setup_variant); + if (variant == NULL) + goto fail; + + if (LP_DEBUG & DEBUG_COUNTERS) { + t0 = os_time_get(); + } + + memcpy(&variant->key, key, key->size); + variant->list_item_global.base = variant; + + util_snprintf(func_name, sizeof(func_name), "fs%u_setup%u", + 0, + variant->no); + + /* Currently always deal with full 4-wide vertex attributes from + * the vertices. + */ + + vec4f_type = LLVMVectorType(LLVMFloatType(), 4); + + arg_types[0] = LLVMPointerType(vec4f_type, 0); /* v0 */ + arg_types[1] = LLVMPointerType(vec4f_type, 0); /* v1 */ + arg_types[2] = LLVMPointerType(vec4f_type, 0); /* v2 */ + arg_types[3] = LLVMInt32Type(); /* facing */ + arg_types[4] = LLVMPointerType(vec4f_type, 0); /* a0, aligned */ + arg_types[5] = LLVMPointerType(vec4f_type, 0); /* dadx, aligned */ + arg_types[6] = LLVMPointerType(vec4f_type, 0); /* dady, aligned */ + arg_types[7] = LLVMPointerType(LLVMVoidType(), 0); /* key, unused */ + + func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0); + + variant->function = LLVMAddFunction(screen->module, func_name, func_type); + if (!variant->function) + goto fail; + + LLVMSetFunctionCallConv(variant->function, LLVMCCallConv); + + args.v0 = LLVMGetParam(variant->function, 0); + args.v1 = LLVMGetParam(variant->function, 1); + args.v2 = LLVMGetParam(variant->function, 2); + args.facing = LLVMGetParam(variant->function, 3); + args.a0 = LLVMGetParam(variant->function, 4); + args.dadx = LLVMGetParam(variant->function, 5); + args.dady = LLVMGetParam(variant->function, 6); + + lp_build_name(args.v0, "in_v0"); + lp_build_name(args.v1, "in_v1"); + lp_build_name(args.v2, "in_v2"); + lp_build_name(args.facing, "in_facing"); + lp_build_name(args.a0, "out_a0"); + lp_build_name(args.dadx, "out_dadx"); + lp_build_name(args.dady, "out_dady"); + + /* + * Function body + */ + block = LLVMAppendBasicBlock(variant->function, "entry"); + builder = LLVMCreateBuilder(); + LLVMPositionBuilderAtEnd(builder, block); + + set_noalias(builder, variant->function, arg_types, Elements(arg_types)); + init_args(builder, &args, variant); + emit_tri_coef(builder, &variant->key, &args); + + lp_emit_emms(builder); + LLVMBuildRetVoid(builder); + LLVMDisposeBuilder(builder); + + variant->jit_function = finalize_function(screen, builder, + variant->function); + if (!variant->jit_function) + goto fail; + + /* + * Update timing information: + */ + if (LP_DEBUG & DEBUG_COUNTERS) { + t1 = os_time_get(); + LP_COUNT_ADD(llvm_compile_time, t1 - t0); + LP_COUNT_ADD(nr_llvm_compiles, 1); + } + + return variant; + +fail: + if (variant) { + if (variant->function) { + if (variant->jit_function) + LLVMFreeMachineCodeForFunction(screen->engine, + variant->function); + LLVMDeleteFunction(variant->function); + } + FREE(variant); + } + + return NULL; +} + + + +static void +lp_make_setup_variant_key(struct llvmpipe_context *lp, + struct lp_setup_variant_key *key) +{ + struct lp_fragment_shader *fs = lp->fs; + unsigned i; + + assert(sizeof key->inputs[0] == sizeof(ushort)); + + key->num_inputs = fs->info.num_inputs; + key->flatshade_first = lp->rasterizer->flatshade_first; + key->pixel_center_half = lp->rasterizer->gl_rasterization_rules; + key->size = Offset(struct lp_setup_variant_key, + inputs[key->num_inputs]); + key->pad = 0; + + memcpy(key->inputs, fs->inputs, key->num_inputs * sizeof key->inputs[0]); + for (i = 0; i < key->num_inputs; i++) { + if (key->inputs[i].interp == LP_INTERP_COLOR) { + if (lp->rasterizer->flatshade) + key->inputs[i].interp = LP_INTERP_CONSTANT; + else + key->inputs[i].interp = LP_INTERP_LINEAR; + } + } + +} + + +static void +remove_setup_variant(struct llvmpipe_context *lp, + struct lp_setup_variant *variant) +{ + struct llvmpipe_screen *screen = llvmpipe_screen(lp->pipe.screen); + + if (gallivm_debug & GALLIVM_DEBUG_IR) { + debug_printf("llvmpipe: del setup_variant #%u total %u\n", + variant->no, lp->nr_setup_variants); + } + + if (variant->function) { + if (variant->jit_function) + LLVMFreeMachineCodeForFunction(screen->engine, + variant->function); + LLVMDeleteFunction(variant->function); + } + + remove_from_list(&variant->list_item_global); + lp->nr_setup_variants--; + FREE(variant); +} + + + +/* When the number of setup variants exceeds a threshold, cull a + * fraction (currently a quarter) of them. + */ +static void +cull_setup_variants(struct llvmpipe_context *lp) +{ + struct pipe_context *pipe = &lp->pipe; + int i; + + /* + * XXX: we need to flush the context until we have some sort of reference + * counting in fragment shaders as they may still be binned + * Flushing alone might not be sufficient we need to wait on it too. + */ + llvmpipe_finish(pipe, __FUNCTION__); + + for (i = 0; i < LP_MAX_SETUP_VARIANTS / 4; i++) { + struct lp_setup_variant_list_item *item = last_elem(&lp->setup_variants_list); + remove_setup_variant(lp, item->base); + } +} + + +/** + * Update fragment/vertex shader linkage state. This is called just + * prior to drawing something when some fragment-related state has + * changed. + */ +void +llvmpipe_update_setup(struct llvmpipe_context *lp) +{ + struct llvmpipe_screen *screen = llvmpipe_screen(lp->pipe.screen); + + struct lp_setup_variant_key *key = &lp->setup_variant.key; + struct lp_setup_variant *variant = NULL; + struct lp_setup_variant_list_item *li; + + lp_make_setup_variant_key(lp, key); + + foreach(li, &lp->setup_variants_list) { + if(li->base->key.size == key->size && + memcmp(&li->base->key, key, key->size) == 0) { + variant = li->base; + break; + } + } + + if (variant) { + move_to_head(&lp->setup_variants_list, &variant->list_item_global); + } + else { + if (lp->nr_setup_variants >= LP_MAX_SETUP_VARIANTS) { + cull_setup_variants(lp); + } + + variant = generate_setup_variant(screen, key); + if (variant) { + insert_at_head(&lp->setup_variants_list, &variant->list_item_global); + lp->nr_setup_variants++; + } + else { + /* Keep the old path around for debugging, and also perhaps + * in case malloc fails during compilation. + */ + variant = &lp->setup_variant; + variant->jit_function = lp_setup_tri_fallback; + } + } + + lp_setup_set_setup_variant(lp->setup, + variant); +} + +void +lp_delete_setup_variants(struct llvmpipe_context *lp) +{ + struct lp_setup_variant_list_item *li; + li = first_elem(&lp->setup_variants_list); + while(!at_end(&lp->setup_variants_list, li)) { + struct lp_setup_variant_list_item *next = next_elem(li); + remove_setup_variant(lp, li->base); + li = next; + } +} + +void +lp_dump_setup_coef( const struct lp_setup_variant_key *key, + const float (*sa0)[4], + const float (*sdadx)[4], + const float (*sdady)[4]) +{ + int i, slot; + + for (i = 0; i < NUM_CHANNELS; i++) { + float a0 = sa0 [0][i]; + float dadx = sdadx[0][i]; + float dady = sdady[0][i]; + + debug_printf("POS.%c: a0 = %f, dadx = %f, dady = %f\n", + "xyzw"[i], + a0, dadx, dady); + } + + for (slot = 0; slot < key->num_inputs; slot++) { + unsigned usage_mask = key->inputs[slot].usage_mask; + for (i = 0; i < NUM_CHANNELS; i++) { + if (usage_mask & (1 << i)) { + float a0 = sa0 [1 + slot][i]; + float dadx = sdadx[1 + slot][i]; + float dady = sdady[1 + slot][i]; + + debug_printf("IN[%u].%c: a0 = %f, dadx = %f, dady = %f\n", + slot, + "xyzw"[i], + a0, dadx, dady); + } + } + } +} diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.h b/src/gallium/drivers/llvmpipe/lp_state_setup.h new file mode 100644 index 00000000000..2b080fbc321 --- /dev/null +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.h @@ -0,0 +1,81 @@ +#ifndef LP_STATE_SETUP_H +#define LP_STATE_SETUP_H + +#include "lp_bld_interp.h" + + +struct llvmpipe_context; +struct lp_setup_variant; + +struct lp_setup_variant_list_item +{ + struct lp_setup_variant *base; + struct lp_setup_variant_list_item *next, *prev; +}; + + +struct lp_setup_variant_key { + unsigned num_inputs:8; + unsigned flatshade_first:1; + unsigned pixel_center_half:1; + unsigned pad:7; + unsigned size:16; + struct lp_shader_input inputs[PIPE_MAX_SHADER_INPUTS]; +}; + + +typedef void (*lp_jit_setup_triangle)( const float (*v0)[4], + const float (*v1)[4], + const float (*v2)[4], + boolean front_facing, + float (*a0)[4], + float (*dadx)[4], + float (*dady)[4], + const struct lp_setup_variant_key *key ); + + + + +/* At this stage, for a given variant key, we create a + * draw_vertex_info struct telling the draw module how to format the + * vertices, and an llvm-generated function which calculates the + * attribute interpolants (a0, dadx, dady) from three of those + * vertices. + */ +struct lp_setup_variant { + struct lp_setup_variant_key key; + + struct lp_setup_variant_list_item list_item_global; + + /* XXX: this is a pointer to the LLVM IR. Once jit_function is + * generated, we never need to use the IR again - need to find a + * way to release this data without destroying the generated + * assembly. + */ + LLVMValueRef function; + + /* The actual generated setup function: + */ + lp_jit_setup_triangle jit_function; + + unsigned no; +}; + +void lp_setup_tri_fallback( const float (*v0)[4], + const float (*v1)[4], + const float (*v2)[4], + boolean front_facing, + float (*a0)[4], + float (*dadx)[4], + float (*dady)[4], + const struct lp_setup_variant_key *key ); + +void lp_delete_setup_variants(struct llvmpipe_context *lp); + +void +lp_dump_setup_coef( const struct lp_setup_variant_key *key, + const float (*sa0)[4], + const float (*sdadx)[4], + const float (*sdady)[4]); + +#endif diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c b/src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c new file mode 100644 index 00000000000..1922efcc88d --- /dev/null +++ b/src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c @@ -0,0 +1,265 @@ +/************************************************************************** + * + * Copyright 2010, VMware. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + **************************************************************************/ + +/* + * Fallback (non-llvm) path for triangle setup. Will remove once llvm + * is up and running. + * + * TODO: line/point setup. + */ + +#include "util/u_math.h" +#include "util/u_memory.h" +#include "lp_state_setup.h" + + + +#if defined(PIPE_ARCH_SSE) +#include + +struct setup_args { + float (*a0)[4]; /* aligned */ + float (*dadx)[4]; /* aligned */ + float (*dady)[4]; /* aligned */ + + float x0_center; + float y0_center; + + /* turn these into an aligned float[4] */ + float dy01_ooa; + float dy20_ooa; + float dx01_ooa; + float dx20_ooa; + + const float (*v0)[4]; /* aligned */ + const float (*v1)[4]; /* aligned */ + const float (*v2)[4]; /* aligned */ + + boolean frontfacing; /* remove eventually */ +}; + + +static void constant_coef4( struct setup_args *args, + unsigned slot, + const float *attr) +{ + *(__m128 *)args->a0[slot] = *(__m128 *)attr; + *(__m128 *)args->dadx[slot] = _mm_set1_ps(0.0); + *(__m128 *)args->dady[slot] = _mm_set1_ps(0.0); +} + + + +/** + * Setup the fragment input attribute with the front-facing value. + * \param frontface is the triangle front facing? + */ +static void setup_facing_coef( struct setup_args *args, + unsigned slot ) +{ + /* XXX: just pass frontface directly to the shader, don't bother + * treating it as an input. + */ + __m128 a0 = _mm_setr_ps(args->frontfacing ? 1.0 : -1.0, + 0, 0, 0); + + *(__m128 *)args->a0[slot] = a0; + *(__m128 *)args->dadx[slot] = _mm_set1_ps(0.0); + *(__m128 *)args->dady[slot] = _mm_set1_ps(0.0); +} + + + +static void calc_coef4( struct setup_args *args, + unsigned slot, + __m128 a0, + __m128 a1, + __m128 a2) +{ + __m128 da01 = _mm_sub_ps(a0, a1); + __m128 da20 = _mm_sub_ps(a2, a0); + + __m128 da01_dy20_ooa = _mm_mul_ps(da01, _mm_set1_ps(args->dy20_ooa)); + __m128 da20_dy01_ooa = _mm_mul_ps(da20, _mm_set1_ps(args->dy01_ooa)); + __m128 dadx = _mm_sub_ps(da01_dy20_ooa, da20_dy01_ooa); + + __m128 da01_dx20_ooa = _mm_mul_ps(da01, _mm_set1_ps(args->dx20_ooa)); + __m128 da20_dx01_ooa = _mm_mul_ps(da20, _mm_set1_ps(args->dx01_ooa)); + __m128 dady = _mm_sub_ps(da20_dx01_ooa, da01_dx20_ooa); + + __m128 dadx_x0 = _mm_mul_ps(dadx, _mm_set1_ps(args->x0_center)); + __m128 dady_y0 = _mm_mul_ps(dady, _mm_set1_ps(args->y0_center)); + __m128 attr_v0 = _mm_add_ps(dadx_x0, dady_y0); + __m128 attr_0 = _mm_sub_ps(a0, attr_v0); + + *(__m128 *)args->a0[slot] = attr_0; + *(__m128 *)args->dadx[slot] = dadx; + *(__m128 *)args->dady[slot] = dady; +} + + +static void linear_coef( struct setup_args *args, + unsigned slot, + unsigned vert_attr) +{ + __m128 a0 = *(const __m128 *)args->v0[vert_attr]; + __m128 a1 = *(const __m128 *)args->v1[vert_attr]; + __m128 a2 = *(const __m128 *)args->v2[vert_attr]; + + calc_coef4(args, slot, a0, a1, a2); +} + + + +/** + * Compute a0, dadx and dady for a perspective-corrected interpolant, + * for a triangle. + * We basically multiply the vertex value by 1/w before computing + * the plane coefficients (a0, dadx, dady). + * Later, when we compute the value at a particular fragment position we'll + * divide the interpolated value by the interpolated W at that fragment. + */ +static void perspective_coef( struct setup_args *args, + unsigned slot, + unsigned vert_attr) +{ + /* premultiply by 1/w (v[0][3] is always 1/w): + */ + __m128 a0 = *(const __m128 *)args->v0[vert_attr]; + __m128 a1 = *(const __m128 *)args->v1[vert_attr]; + __m128 a2 = *(const __m128 *)args->v2[vert_attr]; + + __m128 a0_oow = _mm_mul_ps(a0, _mm_set1_ps(args->v0[0][3])); + __m128 a1_oow = _mm_mul_ps(a1, _mm_set1_ps(args->v1[0][3])); + __m128 a2_oow = _mm_mul_ps(a2, _mm_set1_ps(args->v2[0][3])); + + calc_coef4(args, slot, a0_oow, a1_oow, a2_oow); +} + + + + + +/** + * Compute the args-> dadx, dady, a0 values. + * + * Note that this was effectively a little interpreted program, where + * the opcodes were LP_INTERP_*. This is the program which is now + * being code-generated in lp_state_setup.c. + */ +void lp_setup_tri_fallback( const float (*v0)[4], + const float (*v1)[4], + const float (*v2)[4], + boolean front_facing, + float (*a0)[4], + float (*dadx)[4], + float (*dady)[4], + const struct lp_setup_variant_key *key ) +{ + struct setup_args args; + float pixel_offset = key->pixel_center_half ? 0.5 : 0.0; + float dx01 = v0[0][0] - v1[0][0]; + float dy01 = v0[0][1] - v1[0][1]; + float dx20 = v2[0][0] - v0[0][0]; + float dy20 = v2[0][1] - v0[0][1]; + float oneoverarea = 1.0f / (dx01 * dy20 - dx20 * dy01); + unsigned slot; + + args.v0 = v0; + args.v1 = v1; + args.v2 = v2; + args.frontfacing = front_facing; + args.a0 = a0; + args.dadx = dadx; + args.dady = dady; + + args.x0_center = v0[0][0] - pixel_offset; + args.y0_center = v0[0][1] - pixel_offset; + args.dx01_ooa = dx01 * oneoverarea; + args.dx20_ooa = dx20 * oneoverarea; + args.dy01_ooa = dy01 * oneoverarea; + args.dy20_ooa = dy20 * oneoverarea; + + /* The internal position input is in slot zero: + */ + linear_coef(&args, 0, 0); + + /* setup interpolation for all the remaining attributes: + */ + for (slot = 0; slot < key->num_inputs; slot++) { + unsigned vert_attr = key->inputs[slot].src_index; + + switch (key->inputs[slot].interp) { + case LP_INTERP_CONSTANT: + if (key->flatshade_first) { + constant_coef4(&args, slot+1, args.v0[vert_attr]); + } + else { + constant_coef4(&args, slot+1, args.v2[vert_attr]); + } + break; + + case LP_INTERP_LINEAR: + linear_coef(&args, slot+1, vert_attr); + break; + + case LP_INTERP_PERSPECTIVE: + perspective_coef(&args, slot+1, vert_attr); + break; + + case LP_INTERP_POSITION: + /* + * The generated pixel interpolators will pick up the coeffs from + * slot 0. + */ + break; + + case LP_INTERP_FACING: + setup_facing_coef(&args, slot+1); + break; + + default: + assert(0); + } + } +} + +#else + +void lp_setup_tri_fallback( const float (*v0)[4], + const float (*v1)[4], + const float (*v2)[4], + boolean front_facing, + float (*a0)[4], + float (*dadx)[4], + float (*dady)[4], + const struct lp_setup_variant_key *key ) +{ + /* this path for debugging only, don't need a non-sse version. */ +} + +#endif -- cgit v1.2.3 From 7ef3d171a0e535ba720d9c7a6cdc6bb165416a3c Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sat, 18 Sep 2010 09:15:14 +0100 Subject: graw: add frag-face shader --- .../python/tests/regress/fragment-shader/frag-face.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/gallium/tests/python/tests/regress/fragment-shader/frag-face.sh (limited to 'src/gallium') diff --git a/src/gallium/tests/python/tests/regress/fragment-shader/frag-face.sh b/src/gallium/tests/python/tests/regress/fragment-shader/frag-face.sh new file mode 100644 index 00000000000..5745b6a5aba --- /dev/null +++ b/src/gallium/tests/python/tests/regress/fragment-shader/frag-face.sh @@ -0,0 +1,14 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL IN[1], FACE, CONSTANT +DCL OUT[0], COLOR +DCL TEMP[0] +IMM FLT32 { 0.5, 1.0, 0.0, 0.0 } + +MUL TEMP[0], IN[1].xxxx, IMM[0].xxxx +ADD TEMP[0], TEMP[0], IMM[0].yyyy + +MOV OUT[0], TEMP[0] + +END -- cgit v1.2.3 From 75d22e71a812bbe78414d3f9519f4c7a7157c748 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Sun, 26 Sep 2010 16:01:59 +0800 Subject: llvmpipe: minor changes in llvm coefficient calcs --- src/gallium/drivers/llvmpipe/lp_setup_debug.c | 1 + src/gallium/drivers/llvmpipe/lp_state_setup.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 src/gallium/drivers/llvmpipe/lp_setup_debug.c (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_debug.c b/src/gallium/drivers/llvmpipe/lp_setup_debug.c new file mode 100644 index 00000000000..a71a4719a86 --- /dev/null +++ b/src/gallium/drivers/llvmpipe/lp_setup_debug.c @@ -0,0 +1 @@ +/* Some debugging stuff */ diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.c b/src/gallium/drivers/llvmpipe/lp_state_setup.c index aa9147a1a15..3261c53f516 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.c @@ -173,8 +173,9 @@ emit_facing_coef( LLVMBuilderRef builder, unsigned slot ) { LLVMValueRef a0_0 = args->facing; + LLVMValueRef a0_0f = LLVMBuildSIToFP(builder, a0_0, LLVMFloatType(), ""); LLVMValueRef zero = LLVMConstReal(LLVMFloatType(), 0.0); - LLVMValueRef a0 = vec4f(builder, a0_0, zero, zero, zero, "facing"); + LLVMValueRef a0 = vec4f(builder, a0_0f, zero, zero, zero, "facing"); LLVMValueRef zerovec = vec4f_from_scalar(builder, zero, "zero"); store_coef(builder, args, slot, a0, zerovec, zerovec); @@ -520,7 +521,7 @@ generate_setup_variant(struct llvmpipe_screen *screen, arg_types[4] = LLVMPointerType(vec4f_type, 0); /* a0, aligned */ arg_types[5] = LLVMPointerType(vec4f_type, 0); /* dadx, aligned */ arg_types[6] = LLVMPointerType(vec4f_type, 0); /* dady, aligned */ - arg_types[7] = LLVMPointerType(LLVMVoidType(), 0); /* key, unused */ + arg_types[7] = LLVMPointerType(vec4f_type, 0); /* key, unused */ func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0); -- cgit v1.2.3 From 94f65d095a1365b69a041302b473e40c6ccae3c3 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Tue, 28 Sep 2010 17:49:25 +0100 Subject: draw: cliptest and viewport done in a single loop in vertex shader Cliptesting now done at the end of vs in draw_llvm instead of draw_pt_post_vs. Added viewport mapping transformation and further cliptesting to vertex shader in draw_llvm.c Alternative path where vertex header setup, clip coordinates store, cliptesting and viewport mapping are done earlier in the vertex shader. Still need to hook this up properly according to the return value of "draw_llvm_shader" function. --- src/gallium/auxiliary/draw/draw_llvm.c | 314 ++++++++++++++++++++++++++++++--- src/gallium/auxiliary/draw/draw_llvm.h | 6 +- 2 files changed, 293 insertions(+), 27 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 5154c1f3c5f..36254d359c4 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -31,6 +31,9 @@ #include "draw_vs.h" #include "gallivm/lp_bld_arit.h" +#include "gallivm/lp_bld_logic.h" +#include "gallivm/lp_bld_const.h" +#include "gallivm/lp_bld_swizzle.h" #include "gallivm/lp_bld_struct.h" #include "gallivm/lp_bld_type.h" #include "gallivm/lp_bld_flow.h" @@ -549,19 +552,28 @@ static void store_aos(LLVMBuilderRef builder, LLVMValueRef io_ptr, LLVMValueRef index, - LLVMValueRef value) + LLVMValueRef value, + LLVMValueRef clipmask) { LLVMValueRef id_ptr = draw_jit_header_id(builder, io_ptr); LLVMValueRef data_ptr = draw_jit_header_data(builder, io_ptr); LLVMValueRef indices[3]; + LLVMValueRef val, shift; indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0); indices[1] = index; indices[2] = LLVMConstInt(LLVMInt32Type(), 0, 0); - /* undefined vertex */ - LLVMBuildStore(builder, LLVMConstInt(LLVMInt32Type(), - 0xffff, 0), id_ptr); + /* initialize vertex id:16 = 0xffff, pad:3 = 0, edgeflag:1 = 1 */ + val = LLVMConstInt(LLVMInt32Type(), 0xffff1, 0); + shift = LLVMConstInt(LLVMInt32Type(), 12, 0); + val = LLVMBuildShl(builder, val, shift, ""); + /* add clipmask:12 */ + val = LLVMBuildOr(builder, val, clipmask, ""); + + /* store vertex header */ + LLVMBuildStore(builder, val, id_ptr); + #if DEBUG_STORE lp_build_printf(builder, " ---- %p storing attribute %d (io = %p)\n", data_ptr, index, io_ptr); @@ -616,7 +628,8 @@ store_aos_array(LLVMBuilderRef builder, LLVMValueRef io_ptr, LLVMValueRef aos[NUM_CHANNELS], int attrib, - int num_outputs) + int num_outputs, + LLVMValueRef clipmask) { LLVMValueRef attr_index = LLVMConstInt(LLVMInt32Type(), attrib, 0); LLVMValueRef ind0 = LLVMConstInt(LLVMInt32Type(), 0, 0); @@ -624,7 +637,8 @@ store_aos_array(LLVMBuilderRef builder, LLVMValueRef ind2 = LLVMConstInt(LLVMInt32Type(), 2, 0); LLVMValueRef ind3 = LLVMConstInt(LLVMInt32Type(), 3, 0); LLVMValueRef io0_ptr, io1_ptr, io2_ptr, io3_ptr; - + LLVMValueRef clipmask0, clipmask1, clipmask2, clipmask3; + debug_assert(NUM_CHANNELS == 4); io0_ptr = LLVMBuildGEP(builder, io_ptr, @@ -636,21 +650,31 @@ store_aos_array(LLVMBuilderRef builder, io3_ptr = LLVMBuildGEP(builder, io_ptr, &ind3, 1, ""); + clipmask0 = LLVMBuildExtractElement(builder, clipmask, + ind0, ""); + clipmask1 = LLVMBuildExtractElement(builder, clipmask, + ind1, ""); + clipmask2 = LLVMBuildExtractElement(builder, clipmask, + ind2, ""); + clipmask3 = LLVMBuildExtractElement(builder, clipmask, + ind3, ""); + #if DEBUG_STORE - lp_build_printf(builder, " io = %p, indexes[%d, %d, %d, %d]\n", - io_ptr, ind0, ind1, ind2, ind3); + lp_build_printf(builder, "io = %p, indexes[%d, %d, %d, %d]\n, clipmask0 = %x, clipmask1 = %x, clipmask2 = %x, clipmask3 = %x\n", + io_ptr, ind0, ind1, ind2, ind3, clipmask0, clipmask1, clipmask2, clipmask3); #endif - - store_aos(builder, io0_ptr, attr_index, aos[0]); - store_aos(builder, io1_ptr, attr_index, aos[1]); - store_aos(builder, io2_ptr, attr_index, aos[2]); - store_aos(builder, io3_ptr, attr_index, aos[3]); + /* store for each of the 4 vertices */ + store_aos(builder, io0_ptr, attr_index, aos[0], clipmask0); + store_aos(builder, io1_ptr, attr_index, aos[1], clipmask1); + store_aos(builder, io2_ptr, attr_index, aos[2], clipmask2); + store_aos(builder, io3_ptr, attr_index, aos[3], clipmask3); } static void convert_to_aos(LLVMBuilderRef builder, LLVMValueRef io, LLVMValueRef (*outputs)[NUM_CHANNELS], + LLVMValueRef clipmask, int num_outputs, int max_vertices) { @@ -679,13 +703,214 @@ convert_to_aos(LLVMBuilderRef builder, io, aos, attrib, - num_outputs); + num_outputs, + clipmask); } #if DEBUG_STORE lp_build_printf(builder, " # storing end\n"); #endif } +/* + * Stores original vertex positions in clip coordinates + * There is probably a more efficient way to do this, 4 floats at once + * rather than extracting each element one by one. + */ +static void +store_clip(LLVMBuilderRef builder, + LLVMValueRef io_ptr, + LLVMValueRef (*outputs)[NUM_CHANNELS]) +{ + LLVMValueRef out[4]; + LLVMValueRef indices[2]; + LLVMValueRef io0_ptr, io1_ptr, io2_ptr, io3_ptr; + LLVMValueRef clip_ptr0, clip_ptr1, clip_ptr2, clip_ptr3; + LLVMValueRef clip0_ptr, clip1_ptr, clip2_ptr, clip3_ptr; + LLVMValueRef out0elem, out1elem, out2elem, out3elem; + + LLVMValueRef ind0 = LLVMConstInt(LLVMInt32Type(), 0, 0); + LLVMValueRef ind1 = LLVMConstInt(LLVMInt32Type(), 1, 0); + LLVMValueRef ind2 = LLVMConstInt(LLVMInt32Type(), 2, 0); + LLVMValueRef ind3 = LLVMConstInt(LLVMInt32Type(), 3, 0); + + indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0); + indices[1] = LLVMConstInt(LLVMInt32Type(), 0, 0); + + out[0] = LLVMBuildLoad(builder, outputs[0][0], ""); /*x0 y0 z0 w0*/ + out[1] = LLVMBuildLoad(builder, outputs[0][1], ""); /*x1 y1 z1 w1*/ + out[2] = LLVMBuildLoad(builder, outputs[0][2], ""); /*x2 y2 z2 w2*/ + out[3] = LLVMBuildLoad(builder, outputs[0][3], ""); /*x3 y3 z3 w3*/ + + io0_ptr = LLVMBuildGEP(builder, io_ptr, &ind0, 1, ""); + io1_ptr = LLVMBuildGEP(builder, io_ptr, &ind1, 1, ""); + io2_ptr = LLVMBuildGEP(builder, io_ptr, &ind2, 1, ""); + io3_ptr = LLVMBuildGEP(builder, io_ptr, &ind3, 1, ""); + + clip_ptr0 = draw_jit_header_clip(builder, io0_ptr); + clip_ptr1 = draw_jit_header_clip(builder, io1_ptr); + clip_ptr2 = draw_jit_header_clip(builder, io2_ptr); + clip_ptr3 = draw_jit_header_clip(builder, io3_ptr); + + for (int i = 0; i<4; i++){ + clip0_ptr = LLVMBuildGEP(builder, clip_ptr0, + indices, 2, ""); //x1 + clip1_ptr = LLVMBuildGEP(builder, clip_ptr1, + indices, 2, ""); //y1 + clip2_ptr = LLVMBuildGEP(builder, clip_ptr2, + indices, 2, ""); //z1 + clip3_ptr = LLVMBuildGEP(builder, clip_ptr3, + indices, 2, ""); //w1 + + out0elem = LLVMBuildExtractElement(builder, out[0], + indices[1], ""); //x1 + out1elem = LLVMBuildExtractElement(builder, out[1], + indices[1], ""); //y1 + out2elem = LLVMBuildExtractElement(builder, out[2], + indices[1], ""); //z1 + out3elem = LLVMBuildExtractElement(builder, out[3], + indices[1], ""); //w1 + + LLVMBuildStore(builder, out0elem, clip0_ptr); + LLVMBuildStore(builder, out1elem, clip1_ptr); + LLVMBuildStore(builder, out2elem, clip2_ptr); + LLVMBuildStore(builder, out3elem, clip3_ptr); + + indices[1]= LLVMBuildAdd(builder, indices[1], ind1, ""); + } + +} + +/* + * Transforms the outputs for viewport mapping + */ +static void +generate_viewport(struct draw_llvm *llvm, + LLVMBuilderRef builder, + LLVMValueRef (*outputs)[NUM_CHANNELS]) +{ + int i; + const float *scaleA = llvm->draw->viewport.scale; + const float *transA = llvm->draw->viewport.translate; + struct lp_type f32_type = lp_type_float_vec(32); + LLVMValueRef out3 = LLVMBuildLoad(builder, outputs[0][3], ""); /*w0 w1 w2 w3*/ + LLVMValueRef const1 = lp_build_const_vec(f32_type, 1.0); /*1.0 1.0 1.0 1.0*/ + + /* for 1/w convention*/ + out3 = LLVMBuildFDiv(builder, const1, out3, ""); + + /* Viewport Mapping */ + for (i=0; i<4; i++){ + LLVMValueRef out = LLVMBuildLoad(builder, outputs[0][i], ""); /*x0 x1 x2 x3*/ + LLVMValueRef scale = lp_build_const_vec(f32_type, scaleA[i]); /*sx sx sx sx*/ + LLVMValueRef trans = lp_build_const_vec(f32_type, transA[i]); /*tx tx tx tx*/ + + /* divide by w */ + out = LLVMBuildMul(builder, out, out3, ""); + /* mult by scale */ + out = LLVMBuildMul(builder, out, scale, ""); + /* add translation */ + out = LLVMBuildAdd(builder, out, trans, ""); + + /* store transformed outputs */ + LLVMBuildStore(builder, out, outputs[0][i]); + } + +} + +/* + * Returns clipmask as 4xi32 bitmask for the 4 vertices + */ +static LLVMValueRef +generate_clipmask(LLVMBuilderRef builder, + LLVMValueRef (*outputs)[NUM_CHANNELS]) +{ + LLVMValueRef mask; /* stores the <4xi32> clipmasks */ + LLVMValueRef test, temp; + LLVMValueRef zero, shift; + LLVMValueRef pos_x, pos_y, pos_z, pos_w; + + struct lp_type f32_type = lp_type_float_vec(32); + + zero = lp_build_const_vec(f32_type, 0); /* 0.0f 0.0f 0.0f 0.0f */ + shift = lp_build_const_int_vec(lp_type_int_vec(32), 1); /* 1 1 1 1 */ + + /* Assuming position stored at output[0] */ + pos_x = LLVMBuildLoad(builder, outputs[0][0], ""); /*x0 x1 x2 x3*/ + pos_y = LLVMBuildLoad(builder, outputs[0][1], ""); /*y0 y1 y2 y3*/ + pos_z = LLVMBuildLoad(builder, outputs[0][2], ""); /*z0 z1 z2 z3*/ + pos_w = LLVMBuildLoad(builder, outputs[0][3], ""); /*w0 w1 w2 w3*/ + + /* Cliptest, for hardwired planes */ + /* plane 1 */ + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_x , pos_w); + temp = shift; + test = LLVMBuildAnd(builder, test, temp, ""); + mask = test; + + /* plane 2 */ + test = LLVMBuildFAdd(builder, pos_x, pos_w, ""); + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + + /* plane 3 */ + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_y, pos_w); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + + /* plane 4 */ + test = LLVMBuildFAdd(builder, pos_y, pos_w, ""); + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + + /* plane 5 */ + test = LLVMBuildFAdd(builder, pos_z, pos_w, ""); + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + + /* plane 6 */ + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_z, pos_w); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + + return mask; + +} + +/* + * Returns boolean if any clipping has occurred + * Used zero/non-zero i32 value to represent boolean + */ +static void +clipmask_bool(LLVMBuilderRef builder, + LLVMValueRef clipmask, + LLVMValueRef ret_ptr) +{ + LLVMValueRef ret = LLVMBuildLoad(builder, ret_ptr, ""); + LLVMValueRef temp; + int i; + + LLVMDumpValue(clipmask); + + for (i=0; i<4; i++){ + temp = LLVMBuildExtractElement(builder, clipmask, + LLVMConstInt(LLVMInt32Type(), i, 0) , ""); + ret = LLVMBuildOr(builder, ret, temp, ""); + LLVMDumpValue(ret); + } + + LLVMBuildStore(builder, ret, ret_ptr); + LLVMDumpValue(ret_ptr); + +} + static void draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) { @@ -706,6 +931,8 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) void *code; struct lp_build_sampler_soa *sampler = 0; + LLVMValueRef ret, ret_ptr; + arg_types[0] = llvm->context_ptr_type; /* context */ arg_types[1] = llvm->vertex_header_ptr_type; /* vertex_header */ arg_types[2] = llvm->buffer_ptr_type; /* vbuffers */ @@ -715,7 +942,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) arg_types[6] = llvm->vb_ptr_type; /* pipe_vertex_buffer's */ arg_types[7] = LLVMInt32Type(); /* instance_id */ - func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0); + func_type = LLVMFunctionType(LLVMInt32Type(), arg_types, Elements(arg_types), 0); variant->function = LLVMAddFunction(llvm->module, "draw_llvm_shader", func_type); LLVMSetFunctionCallConv(variant->function, LLVMCCallConv); @@ -755,6 +982,10 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) step = LLVMConstInt(LLVMInt32Type(), max_vertices, 0); + /* function will return non-zero i32 value if any clipped vertices */ + ret_ptr = lp_build_alloca(builder, LLVMInt32Type(), ""); + LLVMBuildStore(builder, LLVMConstInt(LLVMInt32Type(), 0, 0), ret_ptr); + /* code generated texture sampling */ sampler = draw_llvm_sampler_soa_create( draw_llvm_variant_key_samplers(&variant->key), @@ -769,6 +1000,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) LLVMValueRef inputs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS]; LLVMValueRef aos_attribs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS] = { { 0 } }; LLVMValueRef io; + LLVMValueRef clipmask; /* holds the clipmask value */ const LLVMValueRef (*ptr_aos)[NUM_CHANNELS]; io_itr = LLVMBuildSub(builder, lp_loop.counter, start, ""); @@ -805,10 +1037,22 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) context_ptr, sampler); - convert_to_aos(builder, io, outputs, + /* store original positions in clip before further manipulation */ + store_clip(builder, io, outputs); + + /* allocate clipmask, assign it integer type */ + clipmask = generate_clipmask(builder, outputs); + clipmask_bool(builder, clipmask, ret_ptr); + + /* do viewport mapping */ + generate_viewport(llvm, builder, outputs); + + /* store clipmask in vertex header and positions in data */ + convert_to_aos(builder, io, outputs, clipmask, draw->vs.vertex_shader->info.num_outputs, max_vertices); } + lp_build_loop_end_cond(builder, end, step, LLVMIntUGE, &lp_loop); sampler->destroy(sampler); @@ -818,8 +1062,9 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0); #endif - LLVMBuildRetVoid(builder); - + ret = LLVMBuildLoad(builder, ret_ptr,""); + LLVMBuildRet(builder, ret); + LLVMDisposeBuilder(builder); /* @@ -869,6 +1114,7 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian LLVMValueRef fetch_max; void *code; struct lp_build_sampler_soa *sampler = 0; + LLVMValueRef ret, ret_ptr; arg_types[0] = llvm->context_ptr_type; /* context */ arg_types[1] = llvm->vertex_header_ptr_type; /* vertex_header */ @@ -879,10 +1125,9 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian arg_types[6] = llvm->vb_ptr_type; /* pipe_vertex_buffer's */ arg_types[7] = LLVMInt32Type(); /* instance_id */ - func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0); + func_type = LLVMFunctionType(LLVMInt32Type(), arg_types, Elements(arg_types), 0); - variant->function_elts = LLVMAddFunction(llvm->module, "draw_llvm_shader_elts", - func_type); + variant->function_elts = LLVMAddFunction(llvm->module, "draw_llvm_shader_elts", func_type); LLVMSetFunctionCallConv(variant->function_elts, LLVMCCallConv); for(i = 0; i < Elements(arg_types); ++i) if(LLVMGetTypeKind(arg_types[i]) == LLVMPointerTypeKind) @@ -928,11 +1173,16 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian LLVMConstInt(LLVMInt32Type(), 1, 0), "fetch_max"); + /* function returns non-zero i32 value if any clipped vertices */ + ret_ptr = lp_build_alloca(builder, LLVMInt32Type(), ""); + LLVMBuildStore(builder, LLVMConstInt(LLVMInt32Type(), 0, 0), ret_ptr); + lp_build_loop_begin(builder, LLVMConstInt(LLVMInt32Type(), 0, 0), &lp_loop); { LLVMValueRef inputs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS]; LLVMValueRef aos_attribs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS] = { { 0 } }; LLVMValueRef io; + LLVMValueRef clipmask; /* holds the clipmask value */ const LLVMValueRef (*ptr_aos)[NUM_CHANNELS]; io_itr = lp_loop.counter; @@ -979,10 +1229,25 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian context_ptr, sampler); - convert_to_aos(builder, io, outputs, + /* store original positions in clip before further manipulation */ + store_clip(builder, io, outputs); + + /* allocate clipmask, assign it integer type */ + clipmask = generate_clipmask(builder, outputs); + clipmask_bool(builder, clipmask, ret_ptr); + + /* do viewport mapping */ + generate_viewport(llvm, builder, outputs); + + /* store clipmask in vertex header, + * original positions in clip + * and transformed positions in data + */ + convert_to_aos(builder, io, outputs, clipmask, draw->vs.vertex_shader->info.num_outputs, max_vertices); } + lp_build_loop_end_cond(builder, fetch_count, step, LLVMIntUGE, &lp_loop); sampler->destroy(sampler); @@ -992,8 +1257,9 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0); #endif - LLVMBuildRetVoid(builder); - + ret = LLVMBuildLoad(builder, ret_ptr,""); + LLVMBuildRet(builder, ret); + LLVMDisposeBuilder(builder); /* diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index b881ef6113b..1142ea51cfb 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -120,7 +120,7 @@ struct draw_jit_context lp_build_struct_get_ptr(_builder, _ptr, 0, "id") #define draw_jit_header_clip(_builder, _ptr) \ - lp_build_struct_get(_builder, _ptr, 1, "clip") + lp_build_struct_get_ptr(_builder, _ptr, 1, "clip") #define draw_jit_header_data(_builder, _ptr) \ lp_build_struct_get_ptr(_builder, _ptr, 2, "data") @@ -136,7 +136,7 @@ struct draw_jit_context lp_build_struct_get(_builder, _ptr, 2, "buffer_offset") -typedef void +typedef int (*draw_jit_vert_func)(struct draw_jit_context *context, struct vertex_header *io, const char *vbuffers[PIPE_MAX_ATTRIBS], @@ -147,7 +147,7 @@ typedef void unsigned instance_id); -typedef void +typedef int (*draw_jit_vert_func_elts)(struct draw_jit_context *context, struct vertex_header *io, const char *vbuffers[PIPE_MAX_ATTRIBS], -- cgit v1.2.3 From 3744d1c7d30543520cede8a6c580f26985978953 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Tue, 28 Sep 2010 17:52:14 +0100 Subject: draw: added viewport and cliptest flags Corrections in store_clip to store clip coordinates in AoS form. Viewport & cliptest flag options based on variant key. Put back draw_pt_post_vs and now 2 paths based on whether clipping occurs or not. --- src/gallium/auxiliary/draw/draw_llvm.c | 130 ++++++++++++++------- src/gallium/auxiliary/draw/draw_llvm.h | 6 +- .../draw/draw_pt_fetch_shade_pipeline_llvm.c | 12 +- 3 files changed, 98 insertions(+), 50 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 36254d359c4..940b2d7ae55 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -736,10 +736,10 @@ store_clip(LLVMBuilderRef builder, indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0); indices[1] = LLVMConstInt(LLVMInt32Type(), 0, 0); - out[0] = LLVMBuildLoad(builder, outputs[0][0], ""); /*x0 y0 z0 w0*/ - out[1] = LLVMBuildLoad(builder, outputs[0][1], ""); /*x1 y1 z1 w1*/ - out[2] = LLVMBuildLoad(builder, outputs[0][2], ""); /*x2 y2 z2 w2*/ - out[3] = LLVMBuildLoad(builder, outputs[0][3], ""); /*x3 y3 z3 w3*/ + out[0] = LLVMBuildLoad(builder, outputs[0][0], ""); /*x0 x1 x2 x3*/ + out[1] = LLVMBuildLoad(builder, outputs[0][1], ""); /*y0 y1 y2 y3*/ + out[2] = LLVMBuildLoad(builder, outputs[0][2], ""); /*z0 z1 z2 z3*/ + out[3] = LLVMBuildLoad(builder, outputs[0][3], ""); /*w0 w1 w2 w3*/ io0_ptr = LLVMBuildGEP(builder, io_ptr, &ind0, 1, ""); io1_ptr = LLVMBuildGEP(builder, io_ptr, &ind1, 1, ""); @@ -753,22 +753,22 @@ store_clip(LLVMBuilderRef builder, for (int i = 0; i<4; i++){ clip0_ptr = LLVMBuildGEP(builder, clip_ptr0, - indices, 2, ""); //x1 + indices, 2, ""); //x0 clip1_ptr = LLVMBuildGEP(builder, clip_ptr1, - indices, 2, ""); //y1 + indices, 2, ""); //x1 clip2_ptr = LLVMBuildGEP(builder, clip_ptr2, - indices, 2, ""); //z1 + indices, 2, ""); //x2 clip3_ptr = LLVMBuildGEP(builder, clip_ptr3, - indices, 2, ""); //w1 - - out0elem = LLVMBuildExtractElement(builder, out[0], - indices[1], ""); //x1 - out1elem = LLVMBuildExtractElement(builder, out[1], - indices[1], ""); //y1 - out2elem = LLVMBuildExtractElement(builder, out[2], - indices[1], ""); //z1 - out3elem = LLVMBuildExtractElement(builder, out[3], - indices[1], ""); //w1 + indices, 2, ""); //x3 + + out0elem = LLVMBuildExtractElement(builder, out[i], + ind0, ""); //x0 + out1elem = LLVMBuildExtractElement(builder, out[i], + ind1, ""); //x1 + out2elem = LLVMBuildExtractElement(builder, out[i], + ind2, ""); //x2 + out3elem = LLVMBuildExtractElement(builder, out[i], + ind3, ""); //x3 LLVMBuildStore(builder, out0elem, clip0_ptr); LLVMBuildStore(builder, out1elem, clip1_ptr); @@ -822,7 +822,9 @@ generate_viewport(struct draw_llvm *llvm, */ static LLVMValueRef generate_clipmask(LLVMBuilderRef builder, - LLVMValueRef (*outputs)[NUM_CHANNELS]) + LLVMValueRef (*outputs)[NUM_CHANNELS], + boolean disable_zclipping, + boolean enable_d3dclipping) { LLVMValueRef mask; /* stores the <4xi32> clipmasks */ LLVMValueRef test, temp; @@ -866,22 +868,31 @@ generate_clipmask(LLVMBuilderRef builder, temp = LLVMBuildShl(builder, temp, shift, ""); test = LLVMBuildAnd(builder, test, temp, ""); mask = LLVMBuildOr(builder, mask, test, ""); - - /* plane 5 */ - test = LLVMBuildFAdd(builder, pos_z, pos_w, ""); - test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); - temp = LLVMBuildShl(builder, temp, shift, ""); - test = LLVMBuildAnd(builder, test, temp, ""); - mask = LLVMBuildOr(builder, mask, test, ""); - - /* plane 6 */ - test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_z, pos_w); - temp = LLVMBuildShl(builder, temp, shift, ""); - test = LLVMBuildAnd(builder, test, temp, ""); - mask = LLVMBuildOr(builder, mask, test, ""); - + + if (!disable_zclipping){ + if (enable_d3dclipping){ + /* plane 5 */ + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, pos_z); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + } + else{ + /* plane 5 */ + test = LLVMBuildFAdd(builder, pos_z, pos_w, ""); + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + } + /* plane 6 */ + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_z, pos_w); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + } + return mask; - } /* @@ -930,8 +941,9 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS]; void *code; struct lp_build_sampler_soa *sampler = 0; - LLVMValueRef ret, ret_ptr; + boolean disable_cliptest = variant->key.disable_cliptest; + boolean disable_viewport = variant->key.disable_viewport; arg_types[0] = llvm->context_ptr_type; /* context */ arg_types[1] = llvm->vertex_header_ptr_type; /* vertex_header */ @@ -1040,13 +1052,23 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) /* store original positions in clip before further manipulation */ store_clip(builder, io, outputs); - /* allocate clipmask, assign it integer type */ - clipmask = generate_clipmask(builder, outputs); - clipmask_bool(builder, clipmask, ret_ptr); + /* do cliptest */ + if (!disable_cliptest){ + /* allocate clipmask, assign it integer type */ + clipmask = generate_clipmask(builder, outputs, + variant->key.disable_zclipping, variant->key.enable_d3dclipping); + /* return clipping boolean value for function */ + clipmask_bool(builder, clipmask, ret_ptr); + } + else{ + clipmask = lp_build_const_int_vec(lp_type_int_vec(32), 0); + } /* do viewport mapping */ - generate_viewport(llvm, builder, outputs); - + if (!disable_viewport){ + generate_viewport(llvm, builder, outputs); + } + /* store clipmask in vertex header and positions in data */ convert_to_aos(builder, io, outputs, clipmask, draw->vs.vertex_shader->info.num_outputs, @@ -1115,6 +1137,8 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian void *code; struct lp_build_sampler_soa *sampler = 0; LLVMValueRef ret, ret_ptr; + boolean disable_cliptest = variant->key.disable_cliptest; + boolean disable_viewport = variant->key.disable_viewport; arg_types[0] = llvm->context_ptr_type; /* context */ arg_types[1] = llvm->vertex_header_ptr_type; /* vertex_header */ @@ -1232,13 +1256,23 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian /* store original positions in clip before further manipulation */ store_clip(builder, io, outputs); - /* allocate clipmask, assign it integer type */ - clipmask = generate_clipmask(builder, outputs); - clipmask_bool(builder, clipmask, ret_ptr); - - /* do viewport mapping */ - generate_viewport(llvm, builder, outputs); + /* do cliptest */ + if (!disable_cliptest){ + /* allocate clipmask, assign it integer type */ + clipmask = generate_clipmask(builder, outputs, + variant->key.disable_zclipping, variant->key.enable_d3dclipping); + /* return clipping boolean value for function */ + clipmask_bool(builder, clipmask, ret_ptr); + } + else{ + clipmask = lp_build_const_int_vec(lp_type_int_vec(32), 0); + } + /* do viewport mapping */ + if (!disable_viewport){ + generate_viewport(llvm, builder, outputs); + } + /* store clipmask in vertex header, * original positions in clip * and transformed positions in data @@ -1303,6 +1337,12 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store) */ key->nr_vertex_elements = llvm->draw->pt.nr_vertex_elements; + /* will have to rig this up properly later */ + key->disable_cliptest = 0; + key->disable_viewport = 0; + key->disable_zclipping = 0; + key->enable_d3dclipping = 0; + /* All variants of this shader will have the same value for * nr_samplers. Not yet trying to compact away holes in the * sampler array. diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index 1142ea51cfb..8ff366956ce 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -160,7 +160,11 @@ typedef int struct draw_llvm_variant_key { unsigned nr_vertex_elements:16; - unsigned nr_samplers:16; + unsigned nr_samplers:12; + unsigned disable_cliptest:1; + unsigned disable_viewport:1; + unsigned disable_zclipping:1; + unsigned enable_d3dclipping:1; /* Variable number of vertex elements: */ diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c index 77291e304e1..dc138b980da 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c @@ -217,6 +217,7 @@ llvm_pipeline_generic( struct draw_pt_middle_end *middle, struct draw_vertex_info gs_vert_info; struct draw_vertex_info *vert_info; unsigned opt = fpme->opt; + unsigned clipped = 0; llvm_vert_info.count = fetch_info->count; llvm_vert_info.vertex_size = fpme->vertex_size; @@ -230,7 +231,7 @@ llvm_pipeline_generic( struct draw_pt_middle_end *middle, } if (fetch_info->linear) - fpme->current_variant->jit_func( &fpme->llvm->jit_context, + clipped = fpme->current_variant->jit_func( &fpme->llvm->jit_context, llvm_vert_info.verts, (const char **)draw->pt.user.vbuffer, fetch_info->start, @@ -239,7 +240,7 @@ llvm_pipeline_generic( struct draw_pt_middle_end *middle, draw->pt.vertex_buffer, draw->instance_id); else - fpme->current_variant->jit_func_elts( &fpme->llvm->jit_context, + clipped = fpme->current_variant->jit_func_elts( &fpme->llvm->jit_context, llvm_vert_info.verts, (const char **)draw->pt.user.vbuffer, fetch_info->elts, @@ -266,6 +267,9 @@ llvm_pipeline_generic( struct draw_pt_middle_end *middle, FREE(vert_info->verts); vert_info = &gs_vert_info; prim_info = &gs_prim_info; + + clipped = draw_pt_post_vs_run( fpme->post_vs, vert_info ); + } /* stream output needs to be done before clipping */ @@ -273,11 +277,11 @@ llvm_pipeline_generic( struct draw_pt_middle_end *middle, vert_info, prim_info ); - if (draw_pt_post_vs_run( fpme->post_vs, vert_info )) { + if (clipped) { opt |= PT_PIPELINE; } - /* Do we need to run the pipeline? + /* Do we need to run the pipeline? Now will come here if clipped */ if (opt & PT_PIPELINE) { pipeline( fpme, -- cgit v1.2.3 From 25bb05fef075a87ec6e5f2a989049faff2afedd2 Mon Sep 17 00:00:00 2001 From: delphi Date: Mon, 4 Oct 2010 17:08:33 +0100 Subject: draw: added userclip planes and updated variant_key --- src/gallium/auxiliary/draw/draw_llvm.c | 138 ++++++++++++++++++++++----------- src/gallium/auxiliary/draw/draw_llvm.h | 8 +- 2 files changed, 99 insertions(+), 47 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 940b2d7ae55..9c17e7763ae 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -823,13 +823,21 @@ generate_viewport(struct draw_llvm *llvm, static LLVMValueRef generate_clipmask(LLVMBuilderRef builder, LLVMValueRef (*outputs)[NUM_CHANNELS], - boolean disable_zclipping, - boolean enable_d3dclipping) + boolean clip_xy, + boolean clip_z, + boolean clip_user, + boolean enable_d3dclipping, + struct draw_llvm *llvm) { LLVMValueRef mask; /* stores the <4xi32> clipmasks */ LLVMValueRef test, temp; LLVMValueRef zero, shift; LLVMValueRef pos_x, pos_y, pos_z, pos_w; + LLVMValueRef planes, sum; + + unsigned nr; + unsigned i; + float (*plane)[4]; struct lp_type f32_type = lp_type_float_vec(32); @@ -843,33 +851,35 @@ generate_clipmask(LLVMBuilderRef builder, pos_w = LLVMBuildLoad(builder, outputs[0][3], ""); /*w0 w1 w2 w3*/ /* Cliptest, for hardwired planes */ - /* plane 1 */ - test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_x , pos_w); - temp = shift; - test = LLVMBuildAnd(builder, test, temp, ""); - mask = test; + if (clip_xy){ + /* plane 1 */ + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_x , pos_w); + temp = shift; + test = LLVMBuildAnd(builder, test, temp, ""); + mask = test; - /* plane 2 */ - test = LLVMBuildFAdd(builder, pos_x, pos_w, ""); - test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); - temp = LLVMBuildShl(builder, temp, shift, ""); - test = LLVMBuildAnd(builder, test, temp, ""); - mask = LLVMBuildOr(builder, mask, test, ""); + /* plane 2 */ + test = LLVMBuildFAdd(builder, pos_x, pos_w, ""); + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); - /* plane 3 */ - test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_y, pos_w); - temp = LLVMBuildShl(builder, temp, shift, ""); - test = LLVMBuildAnd(builder, test, temp, ""); - mask = LLVMBuildOr(builder, mask, test, ""); - - /* plane 4 */ - test = LLVMBuildFAdd(builder, pos_y, pos_w, ""); - test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); - temp = LLVMBuildShl(builder, temp, shift, ""); - test = LLVMBuildAnd(builder, test, temp, ""); - mask = LLVMBuildOr(builder, mask, test, ""); - - if (!disable_zclipping){ + /* plane 3 */ + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, pos_y, pos_w); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + + /* plane 4 */ + test = LLVMBuildFAdd(builder, pos_y, pos_w, ""); + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + } + + if (clip_z){ if (enable_d3dclipping){ /* plane 5 */ test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, pos_z); @@ -892,6 +902,32 @@ generate_clipmask(LLVMBuilderRef builder, mask = LLVMBuildOr(builder, mask, test, ""); } + if (clip_user){ + /* userclip planes */ + nr = llvm->draw->nr_planes; + plane = llvm->draw->plane; + for (i = 6; i < nr; i++) { + planes = lp_build_const_vec(f32_type, plane[i][0]); + sum = LLVMBuildMul(builder, planes, pos_x, ""); + + planes = lp_build_const_vec(f32_type, plane[i][1]); + test = LLVMBuildMul(builder, planes, pos_y, ""); + sum = LLVMBuildFAdd(builder, sum, test, ""); + + planes = lp_build_const_vec(f32_type, plane[i][2]); + test = LLVMBuildMul(builder, planes, pos_z, ""); + sum = LLVMBuildFAdd(builder, sum, test, ""); + + planes = lp_build_const_vec(f32_type, plane[i][3]); + test = LLVMBuildMul(builder, planes, pos_w, ""); + sum = LLVMBuildFAdd(builder, sum, test, ""); + + test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, sum); + temp = LLVMBuildShl(builder, temp, shift, ""); + test = LLVMBuildAnd(builder, test, temp, ""); + mask = LLVMBuildOr(builder, mask, test, ""); + } + } return mask; } @@ -942,8 +978,10 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) void *code; struct lp_build_sampler_soa *sampler = 0; LLVMValueRef ret, ret_ptr; - boolean disable_cliptest = variant->key.disable_cliptest; - boolean disable_viewport = variant->key.disable_viewport; + boolean bypass_viewport = variant->key.bypass_viewport; + boolean enable_cliptest = variant->key.clip_xy || + variant->key.clip_z || + variant->key.clip_user; arg_types[0] = llvm->context_ptr_type; /* context */ arg_types[1] = llvm->vertex_header_ptr_type; /* vertex_header */ @@ -1053,10 +1091,14 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) store_clip(builder, io, outputs); /* do cliptest */ - if (!disable_cliptest){ + if (enable_cliptest){ /* allocate clipmask, assign it integer type */ - clipmask = generate_clipmask(builder, outputs, - variant->key.disable_zclipping, variant->key.enable_d3dclipping); + clipmask = generate_clipmask(builder, outputs, + variant->key.clip_xy, + variant->key.clip_z, + variant->key.clip_user, + variant->key.enable_d3dclipping, + llvm); /* return clipping boolean value for function */ clipmask_bool(builder, clipmask, ret_ptr); } @@ -1065,7 +1107,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) } /* do viewport mapping */ - if (!disable_viewport){ + if (!bypass_viewport){ generate_viewport(llvm, builder, outputs); } @@ -1137,9 +1179,11 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian void *code; struct lp_build_sampler_soa *sampler = 0; LLVMValueRef ret, ret_ptr; - boolean disable_cliptest = variant->key.disable_cliptest; - boolean disable_viewport = variant->key.disable_viewport; - + boolean bypass_viewport = variant->key.bypass_viewport; + boolean enable_cliptest = variant->key.clip_xy || + variant->key.clip_z || + variant->key.clip_user; + arg_types[0] = llvm->context_ptr_type; /* context */ arg_types[1] = llvm->vertex_header_ptr_type; /* vertex_header */ arg_types[2] = llvm->buffer_ptr_type; /* vbuffers */ @@ -1257,10 +1301,14 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian store_clip(builder, io, outputs); /* do cliptest */ - if (!disable_cliptest){ + if (enable_cliptest){ /* allocate clipmask, assign it integer type */ - clipmask = generate_clipmask(builder, outputs, - variant->key.disable_zclipping, variant->key.enable_d3dclipping); + clipmask = generate_clipmask(builder, outputs, + variant->key.clip_xy, + variant->key.clip_z, + variant->key.clip_user, + variant->key.enable_d3dclipping, + llvm); /* return clipping boolean value for function */ clipmask_bool(builder, clipmask, ret_ptr); } @@ -1269,7 +1317,7 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian } /* do viewport mapping */ - if (!disable_viewport){ + if (!bypass_viewport){ generate_viewport(llvm, builder, outputs); } @@ -1338,10 +1386,12 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store) key->nr_vertex_elements = llvm->draw->pt.nr_vertex_elements; /* will have to rig this up properly later */ - key->disable_cliptest = 0; - key->disable_viewport = 0; - key->disable_zclipping = 0; - key->enable_d3dclipping = 0; + key->clip_xy = llvm->draw->clip_xy; + key->clip_z = llvm->draw->clip_z; + key->clip_user = llvm->draw->clip_user; + key->bypass_viewport = llvm->draw->identity_viewport; + key->enable_d3dclipping = (boolean)!llvm->draw->rasterizer->gl_rasterization_rules; + key->need_edgeflags = (llvm->draw->vs.edgeflag_output ? TRUE : FALSE); /* All variants of this shader will have the same value for * nr_samplers. Not yet trying to compact away holes in the diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index 8ff366956ce..4a4d93f33a8 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -161,10 +161,12 @@ struct draw_llvm_variant_key { unsigned nr_vertex_elements:16; unsigned nr_samplers:12; - unsigned disable_cliptest:1; - unsigned disable_viewport:1; - unsigned disable_zclipping:1; + unsigned clip_xy:1; + unsigned clip_z:1; + unsigned clip_user:1; + unsigned bypass_viewport:1; unsigned enable_d3dclipping:1; + unsigned need_edgeflags:1; /* Variable number of vertex elements: */ -- cgit v1.2.3 From ea5a74fb5892c9b6ca62054be2ee83a743103f4c Mon Sep 17 00:00:00 2001 From: Jerome Glisse Date: Tue, 5 Oct 2010 16:14:11 -0400 Subject: r600g: userspace fence to avoid kernel call for testing bo busy status Signed-off-by: Jerome Glisse --- src/gallium/drivers/r600/r600.h | 4 ++ src/gallium/winsys/r600/drm/evergreen_hw_context.c | 7 +++ src/gallium/winsys/r600/drm/r600_hw_context.c | 73 +++++++++++++++++++++- src/gallium/winsys/r600/drm/r600_priv.h | 5 +- src/gallium/winsys/r600/drm/r600d.h | 1 + src/gallium/winsys/r600/drm/radeon_bo.c | 60 +++++------------- 6 files changed, 103 insertions(+), 47 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h index 630177d6add..24e25cec0db 100644 --- a/src/gallium/drivers/r600/r600.h +++ b/src/gallium/drivers/r600/r600.h @@ -233,6 +233,10 @@ struct r600_context { u32 *pm4; struct list_head query_list; unsigned num_query_running; + unsigned fence; + struct list_head fenced_bo; + unsigned *cfence; + struct r600_bo *fence_bo; }; struct r600_draw { diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 1355b079450..2093a2d09c1 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -613,6 +613,13 @@ int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon) r = -ENOMEM; goto out_err; } + /* save 16dwords space for fence mecanism */ + ctx->pm4_ndwords -= 16; + + r = r600_context_init_fence(ctx); + if (r) { + goto out_err; + } /* init dirty list */ LIST_INITHEAD(&ctx->dirty); diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index b379499f060..7d81d734571 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -41,6 +41,44 @@ #define GROUP_FORCE_NEW_BLOCK 0 +int r600_context_init_fence(struct r600_context *ctx) +{ + ctx->fence = 1; + ctx->fence_bo = r600_bo(ctx->radeon, 4096, 0, 0); + if (ctx->fence_bo == NULL) { + return -ENOMEM; + } + ctx->cfence = r600_bo_map(ctx->radeon, ctx->fence_bo, PB_USAGE_UNSYNCHRONIZED, NULL); + *ctx->cfence = 0; + LIST_INITHEAD(&ctx->fenced_bo); + return 0; +} + +static void INLINE r600_context_update_fenced_list(struct r600_context *ctx) +{ + for (int i = 0; i < ctx->creloc; i++) { + if (!LIST_IS_EMPTY(&ctx->bo[i]->fencedlist)) + LIST_DELINIT(&ctx->bo[i]->fencedlist); + LIST_ADDTAIL(&ctx->bo[i]->fencedlist, &ctx->fenced_bo); + ctx->bo[i]->fence = ctx->fence; + ctx->bo[i]->ctx = ctx; + } +} + +static void INLINE r600_context_fence_wraparound(struct r600_context *ctx, unsigned fence) +{ + struct radeon_bo *bo, *tmp; + + LIST_FOR_EACH_ENTRY_SAFE(bo, tmp, &ctx->fenced_bo, fencedlist) { + if (bo->fence <= *ctx->cfence) { + LIST_DELINIT(&bo->fencedlist); + bo->fence = 0; + } else { + bo->fence = fence; + } + } +} + int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, unsigned nreg) { struct r600_block *block; @@ -572,6 +610,9 @@ void r600_context_fini(struct r600_context *ctx) } free(ctx->reloc); free(ctx->pm4); + if (ctx->fence_bo) { + r600_bo_reference(ctx->radeon, &ctx->fence_bo, NULL); + } memset(ctx, 0, sizeof(struct r600_context)); } @@ -691,6 +732,13 @@ int r600_context_init(struct r600_context *ctx, struct radeon *radeon) r = -ENOMEM; goto out_err; } + /* save 16dwords space for fence mecanism */ + ctx->pm4_ndwords -= 16; + + r = r600_context_init_fence(ctx); + if (r) { + goto out_err; + } /* init dirty list */ LIST_INITHEAD(&ctx->dirty); @@ -1019,6 +1067,7 @@ void r600_context_flush(struct r600_context *ctx) struct drm_radeon_cs drmib; struct drm_radeon_cs_chunk chunks[2]; uint64_t chunk_array[2]; + unsigned fence; int r; if (!ctx->pm4_cdwords) @@ -1028,6 +1077,18 @@ void r600_context_flush(struct r600_context *ctx) r600_context_queries_suspend(ctx); radeon_bo_pbmgr_flush_maps(ctx->radeon->kman); + + /* emit fence */ + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE_EOP, 4); + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT | (5 << 8); + ctx->pm4[ctx->pm4_cdwords++] = 0; + ctx->pm4[ctx->pm4_cdwords++] = (1 << 29) | (0 << 24); + ctx->pm4[ctx->pm4_cdwords++] = ctx->fence; + ctx->pm4[ctx->pm4_cdwords++] = 0; + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0); + ctx->pm4[ctx->pm4_cdwords++] = 0; + r600_context_bo_reloc(ctx, &ctx->pm4[ctx->pm4_cdwords - 1], ctx->fence_bo); + #if 1 /* emit cs */ drmib.num_chunks = 2; @@ -1043,8 +1104,18 @@ void r600_context_flush(struct r600_context *ctx) r = drmCommandWriteRead(ctx->radeon->fd, DRM_RADEON_CS, &drmib, sizeof(struct drm_radeon_cs)); #endif + + r600_context_update_fenced_list(ctx); + + fence = ctx->fence + 1; + if (fence < ctx->fence) { + /* wrap around */ + fence = 1; + r600_context_fence_wraparound(ctx, fence); + } + ctx->fence = fence; + /* restart */ - radeon_bo_fencelist(ctx->radeon, ctx->bo, ctx->creloc); for (int i = 0; i < ctx->creloc; i++) { ctx->bo[i]->reloc = NULL; ctx->bo[i]->last_flush = 0; diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index ea2cf347785..a693a5b5ab8 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -64,9 +64,9 @@ struct radeon_bo { unsigned map_count; void *data; struct list_head fencedlist; + unsigned fence; + struct r600_context *ctx; boolean shared; - int64_t last_busy; - boolean set_busy; struct r600_reloc *reloc; unsigned reloc_id; unsigned last_flush; @@ -103,6 +103,7 @@ struct pb_buffer *radeon_bo_pb_create_buffer_from_handle(struct pb_manager *_mgr uint32_t handle); /* r600_hw_context.c */ +int r600_context_init_fence(struct r600_context *ctx); void r600_context_bo_reloc(struct r600_context *ctx, u32 *pm4, struct r600_bo *rbo); void r600_context_bo_flush(struct r600_context *ctx, unsigned flush_flags, unsigned flush_mask, struct r600_bo *rbo); diff --git a/src/gallium/winsys/r600/drm/r600d.h b/src/gallium/winsys/r600/drm/r600d.h index ccc9ffaf8e3..d91f7737af3 100644 --- a/src/gallium/winsys/r600/drm/r600d.h +++ b/src/gallium/winsys/r600/drm/r600d.h @@ -91,6 +91,7 @@ #define PKT3_SET_CTL_CONST 0x6F #define PKT3_SURFACE_BASE_UPDATE 0x73 +#define EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT 0x14 #define EVENT_TYPE_ZPASS_DONE 0x15 #define EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT 0x16 diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c b/src/gallium/winsys/r600/drm/radeon_bo.c index 42a23f0ab8f..836d5d77e09 100644 --- a/src/gallium/winsys/r600/drm/radeon_bo.c +++ b/src/gallium/winsys/r600/drm/radeon_bo.c @@ -128,7 +128,6 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, return bo; } - static void radeon_bo_destroy(struct radeon *radeon, struct radeon_bo *bo) { struct drm_gem_close args; @@ -158,8 +157,14 @@ int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo) struct drm_radeon_gem_wait_idle args; int ret; - if (LIST_IS_EMPTY(&bo->fencedlist) && !bo->shared) + if (!bo->fence && !bo->shared) + return 0; + + if (bo->fence <= *bo->ctx->cfence) { + LIST_DELINIT(&bo->fencedlist); + bo->fence = 0; return 0; + } /* Zero out args to make valgrind happy */ memset(&args, 0, sizeof(args)); @@ -171,22 +176,20 @@ int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo) return ret; } -#define BO_BUSY_BACKOFF 10000 - int radeon_bo_busy(struct radeon *radeon, struct radeon_bo *bo, uint32_t *domain) { struct drm_radeon_gem_busy args; int ret; - int64_t now; - - now = os_time_get(); - if (LIST_IS_EMPTY(&bo->fencedlist) && !bo->shared) - return 0; - - if (bo->set_busy && (now - bo->last_busy < BO_BUSY_BACKOFF)) - return -EBUSY; - bo->set_busy = FALSE; + if (!bo->shared) { + if (!bo->fence) + return 0; + if (bo->fence <= *bo->ctx->cfence) { + LIST_DELINIT(&bo->fencedlist); + bo->fence = 0; + return 0; + } + } memset(&args, 0, sizeof(args)); args.handle = bo->handle; @@ -195,37 +198,6 @@ int radeon_bo_busy(struct radeon *radeon, struct radeon_bo *bo, uint32_t *domain ret = drmCommandWriteRead(radeon->fd, DRM_RADEON_GEM_BUSY, &args, sizeof(args)); - if (ret == 0) { - struct radeon_bo *entry, *tent; - LIST_FOR_EACH_ENTRY_SAFE(entry, tent, &bo->fencedlist, fencedlist) { - LIST_DELINIT(&entry->fencedlist); - } - } else { - bo->set_busy = TRUE; - bo->last_busy = now; - } *domain = args.domain; return ret; } - -int radeon_bo_fencelist(struct radeon *radeon, struct radeon_bo **bolist, - uint32_t num_bo) -{ - struct radeon_bo *first; - int i; - - first = bolist[0]; - - if (!LIST_IS_EMPTY(&first->fencedlist)) - LIST_DELINIT(&first->fencedlist); - - LIST_INITHEAD(&first->fencedlist); - - for (i = 1; i < num_bo; i++) { - if (!LIST_IS_EMPTY(&bolist[i]->fencedlist)) - LIST_DELINIT(&bolist[i]->fencedlist); - - LIST_ADDTAIL(&bolist[i]->fencedlist, &first->fencedlist); - } - return 0; -} -- cgit v1.2.3 From 9528fc2107d4cae39bc932c1943ffc57ebc92499 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 6 Oct 2010 09:21:16 +1000 Subject: r600g: add evergreen stencil support. this sets the stencil up for evergreen properly. --- src/gallium/drivers/r600/eg_state_inlines.h | 8 ++++++++ src/gallium/drivers/r600/evergreen_state.c | 18 ++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/eg_state_inlines.h b/src/gallium/drivers/r600/eg_state_inlines.h index 81094904485..d7a880f5d3a 100644 --- a/src/gallium/drivers/r600/eg_state_inlines.h +++ b/src/gallium/drivers/r600/eg_state_inlines.h @@ -276,6 +276,14 @@ static inline uint32_t r600_translate_dbformat(enum pipe_format format) } } +static inline uint32_t r600_translate_stencilformat(enum pipe_format format) +{ + if (format == PIPE_FORMAT_Z24_UNORM_S8_USCALED) + return 1; + else + return 0; +} + static inline uint32_t r600_translate_colorswap(enum pipe_format format) { switch (format) { diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 147d4f372e6..603a8a7b915 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -795,7 +795,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state struct r600_resource_texture *rtex; struct r600_resource *rbuffer; unsigned level; - unsigned pitch, slice, format; + unsigned pitch, slice, format, stencil_format; if (state->zsbuf == NULL) return; @@ -811,13 +811,27 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state pitch = (rtex->pitch[level] / rtex->bpt) / 8 - 1; slice = (rtex->pitch[level] / rtex->bpt) * state->zsbuf->height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); + stencil_format = r600_translate_stencilformat(state->zsbuf->texture->format); r600_pipe_state_add_reg(rstate, R_028048_DB_Z_READ_BASE, (state->zsbuf->offset + r600_bo_offset(rbuffer->bo)) >> 8, 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_028050_DB_Z_WRITE_BASE, (state->zsbuf->offset + r600_bo_offset(rbuffer->bo)) >> 8, 0xFFFFFFFF, rbuffer->bo); -// r600_pipe_state_add_reg(rstate, R_028014_DB_HTILE_DATA_BASE, state->zsbuf->offset >> 8, 0xFFFFFFFF, rbuffer->bo); + + if (stencil_format) { + uint32_t stencil_offset; + + stencil_offset = ((state->zsbuf->height * rtex->pitch[level]) + 255) & ~255; + r600_pipe_state_add_reg(rstate, R_02804C_DB_STENCIL_READ_BASE, + (state->zsbuf->offset + stencil_offset + r600_bo_offset(rbuffer->bo)) >> 8, 0xFFFFFFFF, rbuffer->bo); + r600_pipe_state_add_reg(rstate, R_028054_DB_STENCIL_WRITE_BASE, + (state->zsbuf->offset + stencil_offset + r600_bo_offset(rbuffer->bo)) >> 8, 0xFFFFFFFF, rbuffer->bo); + } + r600_pipe_state_add_reg(rstate, R_028008_DB_DEPTH_VIEW, 0x00000000, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_028044_DB_STENCIL_INFO, + S_028044_FORMAT(stencil_format), 0xFFFFFFFF, rbuffer->bo); + r600_pipe_state_add_reg(rstate, R_028040_DB_Z_INFO, S_028040_ARRAY_MODE(rtex->array_mode) | S_028040_FORMAT(format), 0xFFFFFFFF, rbuffer->bo); -- cgit v1.2.3 From 5661e51c01cec8d8f4a1400300ced8f8f07eaff3 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 4 Oct 2010 17:05:03 +0100 Subject: retrace: Handle clear_render_target and clear_depth_stencil. --- src/gallium/tests/python/retrace/interpreter.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/tests/python/retrace/interpreter.py b/src/gallium/tests/python/retrace/interpreter.py index 16132abb06d..954a701a53f 100755 --- a/src/gallium/tests/python/retrace/interpreter.py +++ b/src/gallium/tests/python/retrace/interpreter.py @@ -610,6 +610,15 @@ class Context(Object): _rgba[i] = rgba[i] self.real.clear(buffers, _rgba, depth, stencil) + def clear_render_target(self, dst, rgba, dstx, dsty, width, height): + _rgba = gallium.FloatArray(4) + for i in range(4): + _rgba[i] = rgba[i] + self.real.clear_render_target(dst, _rgba, dstx, dsty, width, height) + + def clear_depth_stencil(self, dst, clear_flags, depth, stencil, dstx, dsty, width, height): + self.real.clear_depth_stencil(dst, clear_flags, depth, stencil, dstx, dsty, width, height) + def _present(self): self.real.flush() -- cgit v1.2.3 From 591e1bc34f5a5dd065614deae41b59682f59ac08 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 3 Oct 2010 11:39:02 +0100 Subject: llvmpipe: make debug_fs_variant respect variant->nr_samplers --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 48 ++++++++++++++---------------- 1 file changed, 23 insertions(+), 25 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index f0a15e11b9b..5a561f9abd1 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -782,31 +782,29 @@ dump_fs_variant_key(const struct lp_fragment_shader_variant_key *key) debug_printf("blend.alpha_dst_factor = %s\n", util_dump_blend_factor(key->blend.rt[0].alpha_dst_factor, TRUE)); } debug_printf("blend.colormask = 0x%x\n", key->blend.rt[0].colormask); - for (i = 0; i < PIPE_MAX_SAMPLERS; ++i) { - if (key->sampler[i].format) { - debug_printf("sampler[%u] = \n", i); - debug_printf(" .format = %s\n", - util_format_name(key->sampler[i].format)); - debug_printf(" .target = %s\n", - util_dump_tex_target(key->sampler[i].target, TRUE)); - debug_printf(" .pot = %u %u %u\n", - key->sampler[i].pot_width, - key->sampler[i].pot_height, - key->sampler[i].pot_depth); - debug_printf(" .wrap = %s %s %s\n", - util_dump_tex_wrap(key->sampler[i].wrap_s, TRUE), - util_dump_tex_wrap(key->sampler[i].wrap_t, TRUE), - util_dump_tex_wrap(key->sampler[i].wrap_r, TRUE)); - debug_printf(" .min_img_filter = %s\n", - util_dump_tex_filter(key->sampler[i].min_img_filter, TRUE)); - debug_printf(" .min_mip_filter = %s\n", - util_dump_tex_mipfilter(key->sampler[i].min_mip_filter, TRUE)); - debug_printf(" .mag_img_filter = %s\n", - util_dump_tex_filter(key->sampler[i].mag_img_filter, TRUE)); - if (key->sampler[i].compare_mode != PIPE_TEX_COMPARE_NONE) - debug_printf(" .compare_func = %s\n", util_dump_func(key->sampler[i].compare_func, TRUE)); - debug_printf(" .normalized_coords = %u\n", key->sampler[i].normalized_coords); - } + for (i = 0; i < key->nr_samplers; ++i) { + debug_printf("sampler[%u] = \n", i); + debug_printf(" .format = %s\n", + util_format_name(key->sampler[i].format)); + debug_printf(" .target = %s\n", + util_dump_tex_target(key->sampler[i].target, TRUE)); + debug_printf(" .pot = %u %u %u\n", + key->sampler[i].pot_width, + key->sampler[i].pot_height, + key->sampler[i].pot_depth); + debug_printf(" .wrap = %s %s %s\n", + util_dump_tex_wrap(key->sampler[i].wrap_s, TRUE), + util_dump_tex_wrap(key->sampler[i].wrap_t, TRUE), + util_dump_tex_wrap(key->sampler[i].wrap_r, TRUE)); + debug_printf(" .min_img_filter = %s\n", + util_dump_tex_filter(key->sampler[i].min_img_filter, TRUE)); + debug_printf(" .min_mip_filter = %s\n", + util_dump_tex_mipfilter(key->sampler[i].min_mip_filter, TRUE)); + debug_printf(" .mag_img_filter = %s\n", + util_dump_tex_filter(key->sampler[i].mag_img_filter, TRUE)); + if (key->sampler[i].compare_mode != PIPE_TEX_COMPARE_NONE) + debug_printf(" .compare_func = %s\n", util_dump_func(key->sampler[i].compare_func, TRUE)); + debug_printf(" .normalized_coords = %u\n", key->sampler[i].normalized_coords); } } -- cgit v1.2.3 From 446dbb921762710d678486f3f5a6dfdf318fe34c Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 5 Oct 2010 10:50:02 +0100 Subject: llvmpipe: Dump a few missing shader key flags. --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 5a561f9abd1..e50768445ff 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -746,6 +746,9 @@ dump_fs_variant_key(const struct lp_fragment_shader_variant_key *key) debug_printf("fs variant %p:\n", (void *) key); + if (key->flatshade) { + debug_printf("flatshade = 1\n"); + } for (i = 0; i < key->nr_cbufs; ++i) { debug_printf("cbuf_format[%u] = %s\n", i, util_format_name(key->cbuf_format[i])); } @@ -770,6 +773,10 @@ dump_fs_variant_key(const struct lp_fragment_shader_variant_key *key) debug_printf("alpha.func = %s\n", util_dump_func(key->alpha.func, TRUE)); } + if (key->occlusion_count) { + debug_printf("occlusion_count = 1\n"); + } + if (key->blend.logicop_enable) { debug_printf("blend.logicop_func = %s\n", util_dump_logicop(key->blend.logicop_func, TRUE)); } -- cgit v1.2.3 From e74955eba3fc22fcf6e9111a4e5bbc095d34d357 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 26 Sep 2010 11:22:20 +0100 Subject: llvmpipe: Fix perspective interpolation for point sprites. Once a fragment is generated with LP_INTERP_PERSPECTIVE set for an input, it will do a divide by w for that input. Therefore it's not OK to treat LP_INTERP_PERSPECTIVE as LP_INTERP_LINEAR or vice-versa, even if the attribute is known to not vary. A better strategy would be to take the primitive in consideration when generating the fragment shader key, and therefore avoid the per-fragment perspective divide. --- src/gallium/drivers/llvmpipe/lp_setup_point.c | 71 ++++++++++++++++++++------- 1 file changed, 54 insertions(+), 17 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 3b217f95447..c91e85f9159 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -64,12 +64,37 @@ constant_coef(struct lp_setup_context *setup, } +static void +point_persp_coeff(struct lp_setup_context *setup, + struct lp_rast_triangle *point, + const struct point_info *info, + unsigned slot, + unsigned i) +{ + /* + * Fragment shader expects pre-multiplied w for LP_INTERP_PERSPECTIVE. A + * better stratergy would be to take the primitive in consideration when + * generating the fragment shader key, and therefore avoid the per-fragment + * perspective divide. + */ + + float w0 = info->v0[0][3]; + + assert(i < 4); + + point->inputs.a0[slot][i] = info->v0[slot][i]*w0; + point->inputs.dadx[slot][i] = 0.0f; + point->inputs.dady[slot][i] = 0.0f; +} + + /** * Setup automatic texcoord coefficients (for sprite rendering). * \param slot the vertex attribute slot to setup * \param i the attribute channel in [0,3] * \param sprite_coord_origin one of PIPE_SPRITE_COORD_x - * \param perspective_proj will the TEX instruction do a divide by Q? + * \param perspective does the shader expects pre-multiplied w, i.e., + * LP_INTERP_PERSPECTIVE is specified in the shader key */ static void texcoord_coef(struct lp_setup_context *setup, @@ -78,7 +103,7 @@ texcoord_coef(struct lp_setup_context *setup, unsigned slot, unsigned i, unsigned sprite_coord_origin, - boolean perspective_proj) + boolean perspective) { assert(i < 4); @@ -92,7 +117,7 @@ texcoord_coef(struct lp_setup_context *setup, point->inputs.dady[slot][0] = dady; point->inputs.a0[slot][0] = 0.5 - (dadx * x0 + dady * y0); - if (!perspective_proj) { + if (perspective) { /* Divide coefficients by vertex.w here. * * It would be clearer to always multiply by w0 above and @@ -119,7 +144,7 @@ texcoord_coef(struct lp_setup_context *setup, point->inputs.dady[slot][1] = dady; point->inputs.a0[slot][1] = 0.5 - (dadx * x0 + dady * y0); - if (!perspective_proj) { + if (perspective) { float w0 = info->v0[0][3]; point->inputs.dadx[slot][1] *= w0; point->inputs.dady[slot][1] *= w0; @@ -193,11 +218,17 @@ setup_point_coefficients( struct lp_setup_context *setup, /* setup interpolation for all the remaining attributes: */ for (slot = 0; slot < setup->fs.nr_inputs; slot++) { + enum lp_interp interp = setup->fs.input[slot].interp; + boolean perspective = !!(interp == LP_INTERP_PERSPECTIVE); unsigned vert_attr = setup->fs.input[slot].src_index; unsigned usage_mask = setup->fs.input[slot].usage_mask; unsigned i; + + if (perspective & usage_mask) { + fragcoord_usage_mask |= TGSI_WRITEMASK_W; + } - switch (setup->fs.input[slot].interp) { + switch (interp) { case LP_INTERP_POSITION: /* * The generated pixel interpolators will pick up the coeffs from @@ -210,32 +241,38 @@ setup_point_coefficients( struct lp_setup_context *setup, case LP_INTERP_LINEAR: /* Sprite tex coords may use linear interpolation someday */ /* fall-through */ - case LP_INTERP_PERSPECTIVE: /* check if the sprite coord flag is set for this attribute. * If so, set it up so it up so x and y vary from 0 to 1. */ if (shader->info.input_semantic_name[slot] == TGSI_SEMANTIC_GENERIC) { - const int index = shader->info.input_semantic_index[slot]; + unsigned semantic_index = shader->info.input_semantic_index[slot]; /* Note that sprite_coord enable is a bitfield of * PIPE_MAX_SHADER_OUTPUTS bits. */ - if (index < PIPE_MAX_SHADER_OUTPUTS && - (setup->sprite_coord_enable & (1 << index))) { - for (i = 0; i < NUM_CHANNELS; i++) - if (usage_mask & (1 << i)) + if (semantic_index < PIPE_MAX_SHADER_OUTPUTS && + (setup->sprite_coord_enable & (1 << semantic_index))) { + for (i = 0; i < NUM_CHANNELS; i++) { + if (usage_mask & (1 << i)) { texcoord_coef(setup, point, info, slot + 1, i, setup->sprite_coord_origin, - (usage_mask & TGSI_WRITEMASK_W)); - fragcoord_usage_mask |= TGSI_WRITEMASK_W; - break; + perspective); + } + } + break; } } - /* FALLTHROUGH */ + /* fall-through */ case LP_INTERP_CONSTANT: for (i = 0; i < NUM_CHANNELS; i++) { - if (usage_mask & (1 << i)) - constant_coef(setup, point, slot+1, info->v0[vert_attr][i], i); + if (usage_mask & (1 << i)) { + if (perspective) { + point_persp_coeff(setup, point, info, slot+1, i); + } + else { + constant_coef(setup, point, slot+1, info->v0[vert_attr][i], i); + } + } } break; -- cgit v1.2.3 From 06472ad7e835813ef7c9bf8a5cd8b62a25fa9cc3 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 09:40:51 +0100 Subject: llvmpipe: Fix sprite coord perspective interpolation of Q. Q coordinate's coefficients also need to be multiplied by w, otherwise it will have 1/w, causing problems with TXP. --- src/gallium/drivers/llvmpipe/lp_setup_point.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index c91e85f9159..1295aeecd87 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -105,6 +105,8 @@ texcoord_coef(struct lp_setup_context *setup, unsigned sprite_coord_origin, boolean perspective) { + float w0 = info->v0[0][3]; + assert(i < 4); if (i == 0) { @@ -118,13 +120,6 @@ texcoord_coef(struct lp_setup_context *setup, point->inputs.a0[slot][0] = 0.5 - (dadx * x0 + dady * y0); if (perspective) { - /* Divide coefficients by vertex.w here. - * - * It would be clearer to always multiply by w0 above and - * then divide it out for perspective projection here, but - * doing it this way involves less algebra. - */ - float w0 = info->v0[0][3]; point->inputs.dadx[slot][0] *= w0; point->inputs.dady[slot][0] *= w0; point->inputs.a0[slot][0] *= w0; @@ -145,7 +140,6 @@ texcoord_coef(struct lp_setup_context *setup, point->inputs.a0[slot][1] = 0.5 - (dadx * x0 + dady * y0); if (perspective) { - float w0 = info->v0[0][3]; point->inputs.dadx[slot][1] *= w0; point->inputs.dady[slot][1] *= w0; point->inputs.a0[slot][1] *= w0; @@ -157,7 +151,7 @@ texcoord_coef(struct lp_setup_context *setup, point->inputs.dady[slot][2] = 0.0f; } else { - point->inputs.a0[slot][3] = 1.0f; + point->inputs.a0[slot][3] = perspective ? w0 : 1.0f; point->inputs.dadx[slot][3] = 0.0f; point->inputs.dady[slot][3] = 0.0f; } -- cgit v1.2.3 From 1644bb0f40800169a3402f08b8f8a2758e90efee Mon Sep 17 00:00:00 2001 From: Jerome Glisse Date: Wed, 6 Oct 2010 09:40:27 -0400 Subject: r600g: avoid segfault due to unintialized list pointer Signed-off-by: Jerome Glisse --- src/gallium/winsys/r600/drm/evergreen_hw_context.c | 6 +++--- src/gallium/winsys/r600/drm/r600_hw_context.c | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 2093a2d09c1..9617035c934 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -640,7 +640,7 @@ static inline void evergreen_context_pipe_state_set_resource(struct r600_context block->status &= ~(R600_BLOCK_STATUS_ENABLED | R600_BLOCK_STATUS_DIRTY); r600_bo_reference(ctx->radeon, &block->reloc[1].bo, NULL); r600_bo_reference(ctx->radeon , &block->reloc[2].bo, NULL); - LIST_DEL(&block->list); + LIST_DELINIT(&block->list); return; } block->reg[0] = state->regs[0].value; @@ -695,7 +695,7 @@ static inline void evergreen_context_pipe_state_set_sampler(struct r600_context block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; if (state == NULL) { block->status &= ~(R600_BLOCK_STATUS_ENABLED | R600_BLOCK_STATUS_DIRTY); - LIST_DEL(&block->list); + LIST_DELINIT(&block->list); return; } block->reg[0] = state->regs[0].value; @@ -719,7 +719,7 @@ static inline void evergreen_context_pipe_state_set_sampler_border(struct r600_c block = range->blocks[CTX_BLOCK_ID(ctx, fake_offset)]; if (state == NULL) { block->status &= ~(R600_BLOCK_STATUS_ENABLED | R600_BLOCK_STATUS_DIRTY); - LIST_DEL(&block->list); + LIST_DELINIT(&block->list); return; } if (state->nregs <= 3) { diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index 7d81d734571..72bfb357b33 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -125,6 +125,8 @@ int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, block->reg = &block->pm4[block->pm4_ndwords]; block->pm4_ndwords += n; block->nreg = n; + LIST_INITHEAD(&block->list); + for (j = 0; j < n; j++) { if (reg[i+j].need_bo) { block->nbo++; @@ -829,7 +831,7 @@ static inline void r600_context_pipe_state_set_resource(struct r600_context *ctx block->status &= ~(R600_BLOCK_STATUS_ENABLED | R600_BLOCK_STATUS_DIRTY); r600_bo_reference(ctx->radeon, &block->reloc[1].bo, NULL); r600_bo_reference(ctx->radeon , &block->reloc[2].bo, NULL); - LIST_DEL(&block->list); + LIST_DELINIT(&block->list); return; } block->reg[0] = state->regs[0].value; @@ -883,7 +885,7 @@ static inline void r600_context_pipe_state_set_sampler(struct r600_context *ctx, block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; if (state == NULL) { block->status &= ~(R600_BLOCK_STATUS_ENABLED | R600_BLOCK_STATUS_DIRTY); - LIST_DEL(&block->list); + LIST_DELINIT(&block->list); return; } block->reg[0] = state->regs[0].value; @@ -906,7 +908,7 @@ static inline void r600_context_pipe_state_set_sampler_border(struct r600_contex block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; if (state == NULL) { block->status &= ~(R600_BLOCK_STATUS_ENABLED | R600_BLOCK_STATUS_DIRTY); - LIST_DEL(&block->list); + LIST_DELINIT(&block->list); return; } if (state->nregs <= 3) { @@ -1314,7 +1316,7 @@ struct r600_query *r600_context_query_create(struct r600_context *ctx, unsigned void r600_context_query_destroy(struct r600_context *ctx, struct r600_query *query) { r600_bo_reference(ctx->radeon, &query->buffer, NULL); - LIST_DEL(&query->list); + LIST_DELINIT(&query->list); free(query); } -- cgit v1.2.3 From 3fabd218a0ffe1aa362440d957cf9135955045a3 Mon Sep 17 00:00:00 2001 From: Jerome Glisse Date: Wed, 6 Oct 2010 12:56:53 -0400 Subject: r600g: fix dirty state handling Avoid having object ending up in dead list of dirty object. Signed-off-by: Jerome Glisse --- src/gallium/winsys/r600/drm/evergreen_hw_context.c | 5 ++--- src/gallium/winsys/r600/drm/r600_hw_context.c | 8 ++++---- src/gallium/winsys/r600/drm/r600_priv.h | 1 + 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 9617035c934..9b39c0c4f01 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -762,7 +762,7 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr struct r600_bo *cb[12]; struct r600_bo *db; unsigned ndwords = 9, flush; - struct r600_block *dirty_block; + struct r600_block *dirty_block, *next_block; if (draw->indices) { ndwords = 13; @@ -817,10 +817,9 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr } /* enough room to copy packet */ - LIST_FOR_EACH_ENTRY(dirty_block,&ctx->dirty,list) { + LIST_FOR_EACH_ENTRY_SAFE(dirty_block, next_block, &ctx->dirty,list) { r600_context_block_emit_dirty(ctx, dirty_block); } - LIST_INITHEAD(&ctx->dirty); /* draw packet */ ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_INDEX_TYPE, 0); diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index 72bfb357b33..86bddccbbbb 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -967,7 +967,7 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) struct r600_bo *cb[8]; struct r600_bo *db; unsigned ndwords = 9; - struct r600_block *dirty_block; + struct r600_block *dirty_block, *next_block; if (draw->indices) { ndwords = 13; @@ -1020,10 +1020,9 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) } /* enough room to copy packet */ - LIST_FOR_EACH_ENTRY(dirty_block,&ctx->dirty,list) { + LIST_FOR_EACH_ENTRY_SAFE(dirty_block, next_block, &ctx->dirty,list) { r600_context_block_emit_dirty(ctx, dirty_block); } - LIST_INITHEAD(&ctx->dirty); /* draw packet */ ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_INDEX_TYPE, 0); @@ -1135,8 +1134,9 @@ void r600_context_flush(struct r600_context *ctx) */ for (int i = 0; i < ctx->nblocks; i++) { if (ctx->blocks[i]->status & R600_BLOCK_STATUS_ENABLED) { - if(!(ctx->blocks[i]->status & R600_BLOCK_STATUS_DIRTY)) + if(!(ctx->blocks[i]->status & R600_BLOCK_STATUS_DIRTY)) { LIST_ADDTAIL(&ctx->blocks[i]->list,&ctx->dirty); + } ctx->pm4_dirty_cdwords += ctx->blocks[i]->pm4_ndwords + ctx->blocks[i]->pm4_flush_ndwords; ctx->blocks[i]->status |= R600_BLOCK_STATUS_DIRTY; } diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index a693a5b5ab8..e3868d3cb9a 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -162,6 +162,7 @@ static inline void r600_context_block_emit_dirty(struct r600_context *ctx, struc memcpy(&ctx->pm4[ctx->pm4_cdwords], block->pm4, block->pm4_ndwords * 4); ctx->pm4_cdwords += block->pm4_ndwords; block->status ^= R600_BLOCK_STATUS_DIRTY; + LIST_DELINIT(&block->list); } static inline int radeon_bo_map(struct radeon *radeon, struct radeon_bo *bo) -- cgit v1.2.3 From df3505b19341424a605be703a27f50ea585ad71f Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 12:09:32 +0100 Subject: gallivm: Take the type signedness in consideration in round/ceil/floor. --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 107 +++++++++++++++------------- 1 file changed, 59 insertions(+), 48 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index e65c13e64b5..3f9c250ad57 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -1210,7 +1210,7 @@ lp_build_iround(struct lp_build_context *bld, LLVMValueRef a) { const struct lp_type type = bld->type; - LLVMTypeRef int_vec_type = lp_build_int_vec_type(type); + LLVMTypeRef int_vec_type = bld->int_vec_type; LLVMValueRef res; assert(type.floating); @@ -1222,20 +1222,24 @@ lp_build_iround(struct lp_build_context *bld, res = lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_NEAREST); } else { - LLVMTypeRef vec_type = lp_build_vec_type(type); - LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1)); - LLVMValueRef sign; LLVMValueRef half; - /* get sign bit */ - sign = LLVMBuildBitCast(bld->builder, a, int_vec_type, ""); - sign = LLVMBuildAnd(bld->builder, sign, mask, ""); - - /* sign * 0.5 */ half = lp_build_const_vec(type, 0.5); - half = LLVMBuildBitCast(bld->builder, half, int_vec_type, ""); - half = LLVMBuildOr(bld->builder, sign, half, ""); - half = LLVMBuildBitCast(bld->builder, half, vec_type, ""); + + if (type.sign) { + LLVMTypeRef vec_type = bld->vec_type; + LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1)); + LLVMValueRef sign; + + /* get sign bit */ + sign = LLVMBuildBitCast(bld->builder, a, int_vec_type, ""); + sign = LLVMBuildAnd(bld->builder, sign, mask, ""); + + /* sign * 0.5 */ + half = LLVMBuildBitCast(bld->builder, half, int_vec_type, ""); + half = LLVMBuildOr(bld->builder, sign, half, ""); + half = LLVMBuildBitCast(bld->builder, half, vec_type, ""); + } res = LLVMBuildFAdd(bld->builder, a, half, ""); } @@ -1256,7 +1260,7 @@ lp_build_ifloor(struct lp_build_context *bld, LLVMValueRef a) { const struct lp_type type = bld->type; - LLVMTypeRef int_vec_type = lp_build_int_vec_type(type); + LLVMTypeRef int_vec_type = bld->int_vec_type; LLVMValueRef res; assert(type.floating); @@ -1267,27 +1271,31 @@ lp_build_ifloor(struct lp_build_context *bld, res = lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_FLOOR); } else { - /* Take the sign bit and add it to 1 constant */ - LLVMTypeRef vec_type = lp_build_vec_type(type); - unsigned mantissa = lp_mantissa(type); - LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1)); - LLVMValueRef sign; - LLVMValueRef offset; - - /* sign = a < 0 ? ~0 : 0 */ - sign = LLVMBuildBitCast(bld->builder, a, int_vec_type, ""); - sign = LLVMBuildAnd(bld->builder, sign, mask, ""); - sign = LLVMBuildAShr(bld->builder, sign, lp_build_const_int_vec(type, type.width - 1), "ifloor.sign"); - - /* offset = -0.99999(9)f */ - offset = lp_build_const_vec(type, -(double)(((unsigned long long)1 << mantissa) - 10)/((unsigned long long)1 << mantissa)); - offset = LLVMConstBitCast(offset, int_vec_type); - - /* offset = a < 0 ? offset : 0.0f */ - offset = LLVMBuildAnd(bld->builder, offset, sign, ""); - offset = LLVMBuildBitCast(bld->builder, offset, vec_type, "ifloor.offset"); - - res = LLVMBuildFAdd(bld->builder, a, offset, "ifloor.res"); + res = a; + + if (type.sign) { + /* Take the sign bit and add it to 1 constant */ + LLVMTypeRef vec_type = bld->vec_type; + unsigned mantissa = lp_mantissa(type); + LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1)); + LLVMValueRef sign; + LLVMValueRef offset; + + /* sign = a < 0 ? ~0 : 0 */ + sign = LLVMBuildBitCast(bld->builder, a, int_vec_type, ""); + sign = LLVMBuildAnd(bld->builder, sign, mask, ""); + sign = LLVMBuildAShr(bld->builder, sign, lp_build_const_int_vec(type, type.width - 1), "ifloor.sign"); + + /* offset = -0.99999(9)f */ + offset = lp_build_const_vec(type, -(double)(((unsigned long long)1 << mantissa) - 10)/((unsigned long long)1 << mantissa)); + offset = LLVMConstBitCast(offset, int_vec_type); + + /* offset = a < 0 ? offset : 0.0f */ + offset = LLVMBuildAnd(bld->builder, offset, sign, ""); + offset = LLVMBuildBitCast(bld->builder, offset, vec_type, "ifloor.offset"); + + res = LLVMBuildFAdd(bld->builder, res, offset, "ifloor.res"); + } } /* round to nearest (toward zero) */ @@ -1307,7 +1315,7 @@ lp_build_iceil(struct lp_build_context *bld, LLVMValueRef a) { const struct lp_type type = bld->type; - LLVMTypeRef int_vec_type = lp_build_int_vec_type(type); + LLVMTypeRef int_vec_type = bld->int_vec_type; LLVMValueRef res; assert(type.floating); @@ -1318,25 +1326,28 @@ lp_build_iceil(struct lp_build_context *bld, res = lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_CEIL); } else { - LLVMTypeRef vec_type = lp_build_vec_type(type); + LLVMTypeRef vec_type = bld->vec_type; unsigned mantissa = lp_mantissa(type); - LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1)); - LLVMValueRef sign; LLVMValueRef offset; - /* sign = a < 0 ? 0 : ~0 */ - sign = LLVMBuildBitCast(bld->builder, a, int_vec_type, ""); - sign = LLVMBuildAnd(bld->builder, sign, mask, ""); - sign = LLVMBuildAShr(bld->builder, sign, lp_build_const_int_vec(type, type.width - 1), "iceil.sign"); - sign = LLVMBuildNot(bld->builder, sign, "iceil.not"); - /* offset = 0.99999(9)f */ offset = lp_build_const_vec(type, (double)(((unsigned long long)1 << mantissa) - 10)/((unsigned long long)1 << mantissa)); - offset = LLVMConstBitCast(offset, int_vec_type); - /* offset = a < 0 ? 0.0 : offset */ - offset = LLVMBuildAnd(bld->builder, offset, sign, ""); - offset = LLVMBuildBitCast(bld->builder, offset, vec_type, "iceil.offset"); + if (type.sign) { + LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1)); + LLVMValueRef sign; + + /* sign = a < 0 ? 0 : ~0 */ + sign = LLVMBuildBitCast(bld->builder, a, int_vec_type, ""); + sign = LLVMBuildAnd(bld->builder, sign, mask, ""); + sign = LLVMBuildAShr(bld->builder, sign, lp_build_const_int_vec(type, type.width - 1), "iceil.sign"); + sign = LLVMBuildNot(bld->builder, sign, "iceil.not"); + + /* offset = a < 0 ? 0.0 : offset */ + offset = LLVMConstBitCast(offset, int_vec_type); + offset = LLVMBuildAnd(bld->builder, offset, sign, ""); + offset = LLVMBuildBitCast(bld->builder, offset, vec_type, "iceil.offset"); + } res = LLVMBuildFAdd(bld->builder, a, offset, "iceil.res"); } -- cgit v1.2.3 From 4648846bd6c376877f024ccf300ceac5b0b3dcd6 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 14:06:14 +0100 Subject: gallivm: Use a faster (and less accurate) log2 in lod computation. --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 44 +++++++++++++++++++++++++++ src/gallium/auxiliary/gallivm/lp_bld_arit.h | 5 +++ src/gallium/auxiliary/gallivm/lp_bld_sample.c | 4 +++ 3 files changed, 53 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 3f9c250ad57..ff94f498acf 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -2286,3 +2286,47 @@ lp_build_log2(struct lp_build_context *bld, lp_build_log2_approx(bld, x, NULL, NULL, &res); return res; } + + +/** + * Faster (and less accurate) log2. + * + * log2(x) = floor(log2(x)) + frac(x) + * + * See http://www.flipcode.com/archives/Fast_log_Function.shtml + */ +LLVMValueRef +lp_build_fast_log2(struct lp_build_context *bld, + LLVMValueRef x) +{ + const struct lp_type type = bld->type; + LLVMTypeRef vec_type = bld->vec_type; + LLVMTypeRef int_vec_type = bld->int_vec_type; + + unsigned mantissa = lp_mantissa(type); + LLVMValueRef mantmask = lp_build_const_int_vec(type, (1ULL << mantissa) - 1); + LLVMValueRef one = LLVMConstBitCast(bld->one, int_vec_type); + + LLVMValueRef ipart; + LLVMValueRef fpart; + + assert(lp_check_value(bld->type, x)); + + assert(type.floating); + + x = LLVMBuildBitCast(bld->builder, x, int_vec_type, ""); + + /* ipart = floor(log2(x)) - 1 */ + ipart = LLVMBuildLShr(bld->builder, x, lp_build_const_int_vec(type, mantissa), ""); + ipart = LLVMBuildAnd(bld->builder, ipart, lp_build_const_int_vec(type, 255), ""); + ipart = LLVMBuildSub(bld->builder, ipart, lp_build_const_int_vec(type, 128), ""); + ipart = LLVMBuildSIToFP(bld->builder, ipart, vec_type, ""); + + /* fpart = 1.0 + frac(x) */ + fpart = LLVMBuildAnd(bld->builder, x, mantmask, ""); + fpart = LLVMBuildOr(bld->builder, fpart, one, ""); + fpart = LLVMBuildBitCast(bld->builder, fpart, vec_type, ""); + + /* floor(log2(x)) + frac(x) */ + return LLVMBuildFAdd(bld->builder, ipart, fpart, ""); +} diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.h b/src/gallium/auxiliary/gallivm/lp_bld_arit.h index 31efa9921ce..3ed4fec2333 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.h @@ -212,6 +212,11 @@ LLVMValueRef lp_build_log2(struct lp_build_context *bld, LLVMValueRef a); +LLVMValueRef +lp_build_fast_log2(struct lp_build_context *bld, + LLVMValueRef a); + + void lp_build_exp2_approx(struct lp_build_context *bld, LLVMValueRef x, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index aee94c1b866..9dee653eee8 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -243,7 +243,11 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, } /* compute lod = log2(rho) */ +#if 0 lod = lp_build_log2(float_bld, rho); +#else + lod = lp_build_fast_log2(float_bld, rho); +#endif /* add shader lod bias */ if (lod_bias) { -- cgit v1.2.3 From 012d57737b1b4e4263aa3414abe433195ff8a713 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 17:44:05 +0100 Subject: gallivm: Fast implementation of iround(log2(x)) Not tested yet, but should be correct. --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 35 +++++++++++++++++++++++++++++ src/gallium/auxiliary/gallivm/lp_bld_arit.h | 4 ++++ 2 files changed, 39 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index ff94f498acf..15b74410188 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -2330,3 +2330,38 @@ lp_build_fast_log2(struct lp_build_context *bld, /* floor(log2(x)) + frac(x) */ return LLVMBuildFAdd(bld->builder, ipart, fpart, ""); } + + +/** + * Fast implementation of iround(log2(x)). + * + * Not an approximation -- it should give accurate results all the time. + */ +LLVMValueRef +lp_build_ilog2(struct lp_build_context *bld, + LLVMValueRef x) +{ + const struct lp_type type = bld->type; + LLVMTypeRef int_vec_type = bld->int_vec_type; + + unsigned mantissa = lp_mantissa(type); + LLVMValueRef sqrt2 = lp_build_const_vec(type, 1.4142135623730951); + + LLVMValueRef ipart; + + assert(lp_check_value(bld->type, x)); + + assert(type.floating); + + /* x * 2^(0.5) i.e., add 0.5 to the log2(x) */ + x = LLVMBuildFMul(bld->builder, x, sqrt2, ""); + + x = LLVMBuildBitCast(bld->builder, x, int_vec_type, ""); + + /* ipart = floor(log2(x) + 0.5) */ + ipart = LLVMBuildLShr(bld->builder, x, lp_build_const_int_vec(type, mantissa), ""); + ipart = LLVMBuildAnd(bld->builder, ipart, lp_build_const_int_vec(type, 255), ""); + ipart = LLVMBuildSub(bld->builder, ipart, lp_build_const_int_vec(type, 127), ""); + + return ipart; +} diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.h b/src/gallium/auxiliary/gallivm/lp_bld_arit.h index 3ed4fec2333..f36197479f0 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.h @@ -216,6 +216,10 @@ LLVMValueRef lp_build_fast_log2(struct lp_build_context *bld, LLVMValueRef a); +LLVMValueRef +lp_build_ilog2(struct lp_build_context *bld, + LLVMValueRef x); + void lp_build_exp2_approx(struct lp_build_context *bld, -- cgit v1.2.3 From af05f6157668b3c5e6fd73c3d743b11e619b9067 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 18:31:36 +0100 Subject: gallivm: Combined ifloor & fract helper. The only way to ensure we don't do redundant FP <-> SI conversions. --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 42 +++++++++++++++++++++++ src/gallium/auxiliary/gallivm/lp_bld_arit.h | 6 ++++ src/gallium/auxiliary/gallivm/lp_bld_sample.c | 4 +-- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 41 +++++++++------------- 4 files changed, 65 insertions(+), 28 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 15b74410188..64c468c14d4 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -1359,6 +1359,48 @@ lp_build_iceil(struct lp_build_context *bld, } +/** + * Combined ifloor() & fract(). + * + * Preferred to calling the functions separately, as it will ensure that the + * stratergy (floor() vs ifloor()) that results in less redundant work is used. + */ +void +lp_build_ifloor_fract(struct lp_build_context *bld, + LLVMValueRef a, + LLVMValueRef *out_ipart, + LLVMValueRef *out_fpart) +{ + + + const struct lp_type type = bld->type; + LLVMValueRef ipart; + + assert(type.floating); + assert(lp_check_value(type, a)); + + if (util_cpu_caps.has_sse4_1 && + (type.length == 1 || type.width*type.length == 128)) { + /* + * floor() is easier. + */ + + ipart = lp_build_floor(bld, a); + *out_fpart = LLVMBuildFSub(bld->builder, a, ipart, "fpart"); + *out_ipart = LLVMBuildFPToSI(bld->builder, ipart, bld->int_vec_type, "ipart"); + } + else { + /* + * ifloor() is easier. + */ + + *out_ipart = lp_build_ifloor(bld, a); + ipart = LLVMBuildSIToFP(bld->builder, *out_ipart, bld->vec_type, "ipart"); + *out_fpart = LLVMBuildFSub(bld->builder, a, ipart, "fpart"); + } +} + + LLVMValueRef lp_build_sqrt(struct lp_build_context *bld, LLVMValueRef a) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.h b/src/gallium/auxiliary/gallivm/lp_bld_arit.h index f36197479f0..8424384f8f7 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.h @@ -171,6 +171,12 @@ LLVMValueRef lp_build_itrunc(struct lp_build_context *bld, LLVMValueRef a); +void +lp_build_ifloor_fract(struct lp_build_context *bld, + LLVMValueRef a, + LLVMValueRef *out_ipart, + LLVMValueRef *out_fpart); + LLVMValueRef lp_build_sqrt(struct lp_build_context *bld, LLVMValueRef a); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 9dee653eee8..acd99741f13 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -319,7 +319,7 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld, bld->builder, unit); /* convert float lod to integer */ - level = lp_build_ifloor(float_bld, lod); + lp_build_ifloor_fract(float_bld, lod, &level, weight_out); /* compute level 0 and clamp to legal range of levels */ *level0_out = lp_build_clamp(int_bld, level, @@ -330,8 +330,6 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld, *level1_out = lp_build_clamp(int_bld, level, int_bld->zero, last_level); - - *weight_out = lp_build_fract(float_bld, lod); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 36a77d3aff0..d464147371d 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -253,11 +253,9 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, /* mul by size and subtract 0.5 */ coord = lp_build_mul(coord_bld, coord, length_f); coord = lp_build_sub(coord_bld, coord, half); - /* convert to int */ - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(uint_coord_bld, coord0, uint_coord_bld->one); - /* compute lerp weight */ - weight = lp_build_fract(coord_bld, coord); /* repeat wrap */ if (is_pot) { coord0 = LLVMBuildAnd(bld->builder, coord0, length_minus_one, ""); @@ -284,8 +282,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_sub(coord_bld, coord, half); - weight = lp_build_fract(coord_bld, coord); - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); break; @@ -304,10 +302,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, max = lp_build_sub(coord_bld, length_f, min); coord = lp_build_clamp(coord_bld, coord, min, max); } - /* compute lerp weight */ - weight = lp_build_fract(coord_bld, coord); - /* coord0 = floor(coord); */ - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); /* coord0 = max(coord0, 0) */ coord0 = lp_build_max(int_coord_bld, coord0, int_coord_bld->zero); @@ -327,10 +323,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, max = lp_build_sub(coord_bld, length_f, min); coord = lp_build_clamp(coord_bld, coord, min, max); coord = lp_build_sub(coord_bld, coord, half); - /* compute lerp weight */ - weight = lp_build_fract(coord_bld, coord); - /* convert to int */ - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); } break; @@ -343,11 +337,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_mul(coord_bld, coord, length_f); coord = lp_build_sub(coord_bld, coord, half); - /* compute lerp weight */ - weight = lp_build_fract(coord_bld, coord); - - /* convert to int coords */ - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); /* coord0 = max(coord0, 0) */ @@ -369,8 +360,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_sub(coord_bld, coord, half); - weight = lp_build_fract(coord_bld, coord); - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); break; @@ -392,8 +383,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_sub(coord_bld, coord, half); - weight = lp_build_fract(coord_bld, coord); - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); } break; @@ -416,8 +407,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_sub(coord_bld, coord, half); - weight = lp_build_fract(coord_bld, coord); - coord0 = lp_build_ifloor(coord_bld, coord); + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); } break; -- cgit v1.2.3 From 5849a6ab6412eddd4552329178e6edb0bea92977 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 30 Sep 2010 16:43:56 +0100 Subject: gallivm: don't apply zero lod_bias --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 7 ++++++- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index acd99741f13..2227a062d08 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -132,6 +132,10 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, state->min_mip_filter = PIPE_TEX_MIPFILTER_NONE; } + if (sampler->lod_bias != 0.0) { + state->lod_bias_non_zero = 1; + } + /* If min_lod == max_lod we can greatly simplify mipmap selection. * This is a case that occurs during automatic mipmap generation. */ @@ -258,7 +262,8 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, } /* add sampler lod bias */ - lod = LLVMBuildFAdd(bld->builder, lod, sampler_lod_bias, "sampler_lod_bias"); + if (bld->static_state->lod_bias_non_zero) + lod = LLVMBuildFAdd(bld->builder, lod, sampler_lod_bias, "sampler_lod_bias"); /* clamp lod */ lod = lp_build_clamp(float_bld, lod, min_lod, max_lod); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index 4d2eeaa5eb4..bb1c8c8dcee 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -83,6 +83,7 @@ struct lp_sampler_static_state unsigned compare_func:3; unsigned normalized_coords:1; unsigned min_max_lod_equal:1; /**< min_lod == max_lod ? */ + unsigned lod_bias_non_zero:1; }; -- cgit v1.2.3 From 1c32583581ef5aee59901d9dd8e56cc1a125f0d4 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 14:53:19 +0100 Subject: gallivm: Only apply min/max_lod when necessary. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 51 +++++++++++++++++++-------- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 2 ++ src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 +++ 3 files changed, 42 insertions(+), 15 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 2227a062d08..c1c98bf8596 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -126,21 +126,32 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, state->wrap_r = sampler->wrap_r; state->min_img_filter = sampler->min_img_filter; state->mag_img_filter = sampler->mag_img_filter; - if (view->last_level) { + + if (view->last_level && sampler->max_lod > 0.0f) { state->min_mip_filter = sampler->min_mip_filter; } else { state->min_mip_filter = PIPE_TEX_MIPFILTER_NONE; } - if (sampler->lod_bias != 0.0) { - state->lod_bias_non_zero = 1; - } + if (state->min_mip_filter != PIPE_TEX_MIPFILTER_NONE) { + if (sampler->lod_bias != 0.0f) { + state->lod_bias_non_zero = 1; + } - /* If min_lod == max_lod we can greatly simplify mipmap selection. - * This is a case that occurs during automatic mipmap generation. - */ - if (sampler->min_lod == sampler->max_lod) { - state->min_max_lod_equal = 1; + /* If min_lod == max_lod we can greatly simplify mipmap selection. + * This is a case that occurs during automatic mipmap generation. + */ + if (sampler->min_lod == sampler->max_lod) { + state->min_max_lod_equal = 1; + } else { + if (sampler->min_lod > 0.0f) { + state->apply_min_lod = 1; + } + + if (sampler->max_lod < (float)view->last_level) { + state->apply_max_lod = 1; + } + } } state->compare_mode = sampler->compare_mode; @@ -181,21 +192,19 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, LLVMValueRef depth) { - LLVMValueRef min_lod = - bld->dynamic_state->min_lod(bld->dynamic_state, bld->builder, unit); - if (bld->static_state->min_max_lod_equal) { /* User is forcing sampling from a particular mipmap level. * This is hit during mipmap generation. */ + LLVMValueRef min_lod = + bld->dynamic_state->min_lod(bld->dynamic_state, bld->builder, unit); + return min_lod; } else { struct lp_build_context *float_bld = &bld->float_bld; LLVMValueRef sampler_lod_bias = bld->dynamic_state->lod_bias(bld->dynamic_state, bld->builder, unit); - LLVMValueRef max_lod = - bld->dynamic_state->max_lod(bld->dynamic_state, bld->builder, unit); LLVMValueRef index0 = LLVMConstInt(LLVMInt32Type(), 0, 0); LLVMValueRef lod; @@ -265,8 +274,20 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, if (bld->static_state->lod_bias_non_zero) lod = LLVMBuildFAdd(bld->builder, lod, sampler_lod_bias, "sampler_lod_bias"); + /* clamp lod */ - lod = lp_build_clamp(float_bld, lod, min_lod, max_lod); + if (bld->static_state->apply_max_lod) { + LLVMValueRef max_lod = + bld->dynamic_state->max_lod(bld->dynamic_state, bld->builder, unit); + + lod = lp_build_min(float_bld, lod, max_lod); + } + if (bld->static_state->apply_min_lod) { + LLVMValueRef min_lod = + bld->dynamic_state->min_lod(bld->dynamic_state, bld->builder, unit); + + lod = lp_build_max(float_bld, lod, min_lod); + } return lod; } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index bb1c8c8dcee..bb83ede9314 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -84,6 +84,8 @@ struct lp_sampler_static_state unsigned normalized_coords:1; unsigned min_max_lod_equal:1; /**< min_lod == max_lod ? */ unsigned lod_bias_non_zero:1; + unsigned apply_min_lod:1; /**< min_lod > 0 ? */ + unsigned apply_max_lod:1; /**< max_lod < last_level ? */ }; diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index e50768445ff..3ce8be5a0a9 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -812,6 +812,10 @@ dump_fs_variant_key(const struct lp_fragment_shader_variant_key *key) if (key->sampler[i].compare_mode != PIPE_TEX_COMPARE_NONE) debug_printf(" .compare_func = %s\n", util_dump_func(key->sampler[i].compare_func, TRUE)); debug_printf(" .normalized_coords = %u\n", key->sampler[i].normalized_coords); + debug_printf(" .min_max_lod_equal = %u\n", key->sampler[i].min_max_lod_equal); + debug_printf(" .lod_bias_non_zero = %u\n", key->sampler[i].lod_bias_non_zero); + debug_printf(" .apply_min_lod = %u\n", key->sampler[i].apply_min_lod); + debug_printf(" .apply_max_lod = %u\n", key->sampler[i].apply_max_lod); } } -- cgit v1.2.3 From 87dd859b342b844add906358810445da21b6b092 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 18:44:51 +0100 Subject: gallivm: Compute lod as integer whenever possible. More accurate/faster results for PIPE_TEX_MIPFILTER_NEAREST. Less FP <-> SI conversion overall. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 170 ++++++++++++++-------- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 12 +- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 40 ++--- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 31 ++-- 4 files changed, 158 insertions(+), 95 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index c1c98bf8596..3287cf7c376 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -167,6 +167,73 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, } +/** + * Generate code to compute coordinate gradient (rho). + * \param ddx partial derivatives of (s, t, r, q) with respect to X + * \param ddy partial derivatives of (s, t, r, q) with respect to Y + * \param width scalar int texture width + * \param height scalar int texture height + * \param depth scalar int texture depth + * + * XXX: The resulting rho is scalar, so we ignore all but the first element of + * derivatives that are passed by the shader. + */ +static LLVMValueRef +lp_build_rho(struct lp_build_sample_context *bld, + const LLVMValueRef ddx[4], + const LLVMValueRef ddy[4], + LLVMValueRef width, + LLVMValueRef height, + LLVMValueRef depth) +{ + struct lp_build_context *float_bld = &bld->float_bld; + const int dims = texture_dims(bld->static_state->target); + LLVMValueRef index0 = LLVMConstInt(LLVMInt32Type(), 0, 0); + LLVMValueRef dsdx, dsdy; + LLVMValueRef dtdx = NULL, dtdy = NULL, drdx = NULL, drdy = NULL; + LLVMValueRef rho; + + dsdx = LLVMBuildExtractElement(bld->builder, ddx[0], index0, "dsdx"); + dsdx = lp_build_abs(float_bld, dsdx); + dsdy = LLVMBuildExtractElement(bld->builder, ddy[0], index0, "dsdy"); + dsdy = lp_build_abs(float_bld, dsdy); + if (dims > 1) { + dtdx = LLVMBuildExtractElement(bld->builder, ddx[1], index0, "dtdx"); + dtdx = lp_build_abs(float_bld, dtdx); + dtdy = LLVMBuildExtractElement(bld->builder, ddy[1], index0, "dtdy"); + dtdy = lp_build_abs(float_bld, dtdy); + if (dims > 2) { + drdx = LLVMBuildExtractElement(bld->builder, ddx[2], index0, "drdx"); + drdx = lp_build_abs(float_bld, drdx); + drdy = LLVMBuildExtractElement(bld->builder, ddy[2], index0, "drdy"); + drdy = lp_build_abs(float_bld, drdy); + } + } + + /* Compute rho = max of all partial derivatives scaled by texture size. + * XXX this could be vectorized somewhat + */ + rho = LLVMBuildFMul(bld->builder, + lp_build_max(float_bld, dsdx, dsdy), + lp_build_int_to_float(float_bld, width), ""); + if (dims > 1) { + LLVMValueRef max; + max = LLVMBuildFMul(bld->builder, + lp_build_max(float_bld, dtdx, dtdy), + lp_build_int_to_float(float_bld, height), ""); + rho = lp_build_max(float_bld, rho, max); + if (dims > 2) { + max = LLVMBuildFMul(bld->builder, + lp_build_max(float_bld, drdx, drdy), + lp_build_int_to_float(float_bld, depth), ""); + rho = lp_build_max(float_bld, rho, max); + } + } + + return rho; +} + + /** * Generate code to compute texture level of detail (lambda). * \param ddx partial derivatives of (s, t, r, q) with respect to X @@ -180,7 +247,7 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, * XXX: The resulting lod is scalar, so ignore all but the first element of * derivatives, lod_bias, etc that are passed by the shader. */ -LLVMValueRef +void lp_build_lod_selector(struct lp_build_sample_context *bld, unsigned unit, const LLVMValueRef ddx[4], @@ -189,9 +256,18 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, LLVMValueRef explicit_lod, /* optional */ LLVMValueRef width, LLVMValueRef height, - LLVMValueRef depth) + LLVMValueRef depth, + unsigned mip_filter, + LLVMValueRef *out_lod_ipart, + LLVMValueRef *out_lod_fpart) { + struct lp_build_context *float_bld = &bld->float_bld; + LLVMValueRef lod; + + *out_lod_ipart = bld->int_bld.zero; + *out_lod_fpart = bld->float_bld.zero; + if (bld->static_state->min_max_lod_equal) { /* User is forcing sampling from a particular mipmap level. * This is hit during mipmap generation. @@ -199,68 +275,40 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, LLVMValueRef min_lod = bld->dynamic_state->min_lod(bld->dynamic_state, bld->builder, unit); - return min_lod; + lod = min_lod; } else { - struct lp_build_context *float_bld = &bld->float_bld; LLVMValueRef sampler_lod_bias = bld->dynamic_state->lod_bias(bld->dynamic_state, bld->builder, unit); LLVMValueRef index0 = LLVMConstInt(LLVMInt32Type(), 0, 0); - LLVMValueRef lod; if (explicit_lod) { lod = LLVMBuildExtractElement(bld->builder, explicit_lod, index0, ""); } else { - const int dims = texture_dims(bld->static_state->target); - LLVMValueRef dsdx, dsdy; - LLVMValueRef dtdx = NULL, dtdy = NULL, drdx = NULL, drdy = NULL; LLVMValueRef rho; - dsdx = LLVMBuildExtractElement(bld->builder, ddx[0], index0, "dsdx"); - dsdx = lp_build_abs(float_bld, dsdx); - dsdy = LLVMBuildExtractElement(bld->builder, ddy[0], index0, "dsdy"); - dsdy = lp_build_abs(float_bld, dsdy); - if (dims > 1) { - dtdx = LLVMBuildExtractElement(bld->builder, ddx[1], index0, "dtdx"); - dtdx = lp_build_abs(float_bld, dtdx); - dtdy = LLVMBuildExtractElement(bld->builder, ddy[1], index0, "dtdy"); - dtdy = lp_build_abs(float_bld, dtdy); - if (dims > 2) { - drdx = LLVMBuildExtractElement(bld->builder, ddx[2], index0, "drdx"); - drdx = lp_build_abs(float_bld, drdx); - drdy = LLVMBuildExtractElement(bld->builder, ddy[2], index0, "drdy"); - drdy = lp_build_abs(float_bld, drdy); - } - } + rho = lp_build_rho(bld, ddx, ddy, width, height, depth); - /* Compute rho = max of all partial derivatives scaled by texture size. - * XXX this could be vectorized somewhat - */ - rho = LLVMBuildFMul(bld->builder, - lp_build_max(float_bld, dsdx, dsdy), - lp_build_int_to_float(float_bld, width), ""); - if (dims > 1) { - LLVMValueRef max; - max = LLVMBuildFMul(bld->builder, - lp_build_max(float_bld, dtdx, dtdy), - lp_build_int_to_float(float_bld, height), ""); - rho = lp_build_max(float_bld, rho, max); - if (dims > 2) { - max = LLVMBuildFMul(bld->builder, - lp_build_max(float_bld, drdx, drdy), - lp_build_int_to_float(float_bld, depth), ""); - rho = lp_build_max(float_bld, rho, max); - } + /* compute lod = log2(rho) */ + if ((mip_filter == PIPE_TEX_MIPFILTER_NONE || + mip_filter == PIPE_TEX_MIPFILTER_NEAREST) && + !lod_bias && + !bld->static_state->lod_bias_non_zero && + !bld->static_state->apply_max_lod && + !bld->static_state->apply_min_lod) { + *out_lod_ipart = lp_build_ilog2(float_bld, rho); + *out_lod_fpart = bld->float_bld.zero; + return; } - /* compute lod = log2(rho) */ -#if 0 - lod = lp_build_log2(float_bld, rho); -#else - lod = lp_build_fast_log2(float_bld, rho); -#endif + if (0) { + lod = lp_build_log2(float_bld, rho); + } + else { + lod = lp_build_fast_log2(float_bld, rho); + } /* add shader lod bias */ if (lod_bias) { @@ -288,9 +336,20 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, lod = lp_build_max(float_bld, lod, min_lod); } + } - return lod; + if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { + LLVMValueRef ipart = lp_build_ifloor(float_bld, lod); + lp_build_name(ipart, "lod_ipart"); + *out_lod_ipart = ipart; + ipart = LLVMBuildSIToFP(bld->builder, ipart, float_bld->vec_type, ""); + *out_lod_fpart = LLVMBuildFSub(bld->builder, lod, ipart, "lod_fpart"); } + else { + *out_lod_ipart = lp_build_iround(float_bld, lod); + } + + return; } @@ -304,10 +363,9 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, void lp_build_nearest_mip_level(struct lp_build_sample_context *bld, unsigned unit, - LLVMValueRef lod, + LLVMValueRef lod_ipart, LLVMValueRef *level_out) { - struct lp_build_context *float_bld = &bld->float_bld; struct lp_build_context *int_bld = &bld->int_bld; LLVMValueRef last_level, level; @@ -317,7 +375,7 @@ lp_build_nearest_mip_level(struct lp_build_sample_context *bld, bld->builder, unit); /* convert float lod to integer */ - level = lp_build_iround(float_bld, lod); + level = lod_ipart; /* clamp level to legal range of levels */ *level_out = lp_build_clamp(int_bld, level, zero, last_level); @@ -332,12 +390,10 @@ lp_build_nearest_mip_level(struct lp_build_sample_context *bld, void lp_build_linear_mip_levels(struct lp_build_sample_context *bld, unsigned unit, - LLVMValueRef lod, + LLVMValueRef lod_ipart, LLVMValueRef *level0_out, - LLVMValueRef *level1_out, - LLVMValueRef *weight_out) + LLVMValueRef *level1_out) { - struct lp_build_context *float_bld = &bld->float_bld; struct lp_build_context *int_bld = &bld->int_bld; LLVMValueRef last_level, level; @@ -345,7 +401,7 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld, bld->builder, unit); /* convert float lod to integer */ - lp_build_ifloor_fract(float_bld, lod, &level, weight_out); + level = lod_ipart; /* compute level 0 and clamp to legal range of levels */ *level0_out = lp_build_clamp(int_bld, level, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index bb83ede9314..b019c3fa5e7 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -274,7 +274,7 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, const struct pipe_sampler_state *sampler); -LLVMValueRef +void lp_build_lod_selector(struct lp_build_sample_context *bld, unsigned unit, const LLVMValueRef ddx[4], @@ -283,7 +283,10 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, LLVMValueRef explicit_lod, /* optional */ LLVMValueRef width, LLVMValueRef height, - LLVMValueRef depth); + LLVMValueRef depth, + unsigned mip_filter, + LLVMValueRef *out_lod_ipart, + LLVMValueRef *out_lod_fpart); void lp_build_nearest_mip_level(struct lp_build_sample_context *bld, @@ -294,10 +297,9 @@ lp_build_nearest_mip_level(struct lp_build_sample_context *bld, void lp_build_linear_mip_levels(struct lp_build_sample_context *bld, unsigned unit, - LLVMValueRef lod, + LLVMValueRef lod_ipart, LLVMValueRef *level0_out, - LLVMValueRef *level1_out, - LLVMValueRef *weight_out); + LLVMValueRef *level1_out); LLVMValueRef lp_build_get_mipmap_level(struct lp_build_sample_context *bld, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 49a6eed615f..8a55681166d 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -882,13 +882,13 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, LLVMValueRef data_array, LLVMValueRef texel_out[4]) { - struct lp_build_context *float_bld = &bld->float_bld; + struct lp_build_context *int_bld = &bld->int_bld; LLVMBuilderRef builder = bld->builder; const unsigned mip_filter = bld->static_state->min_mip_filter; const unsigned min_filter = bld->static_state->min_img_filter; const unsigned mag_filter = bld->static_state->mag_img_filter; const int dims = texture_dims(bld->static_state->target); - LLVMValueRef lod = NULL, lod_fpart = NULL; + LLVMValueRef lod_ipart = NULL, lod_fpart = NULL; LLVMValueRef ilevel0, ilevel1 = NULL; LLVMValueRef width0_vec = NULL, height0_vec = NULL, depth0_vec = NULL; LLVMValueRef width1_vec = NULL, height1_vec = NULL, depth1_vec = NULL; @@ -936,7 +936,6 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, ddy = face_ddy; } - /* * Compute the level of detail (float). */ @@ -945,9 +944,13 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, /* Need to compute lod either to choose mipmap levels or to * distinguish between minification/magnification with one mipmap level. */ - lod = lp_build_lod_selector(bld, unit, ddx, ddy, - lod_bias, explicit_lod, - width, height, depth); + lp_build_lod_selector(bld, unit, ddx, ddy, + lod_bias, explicit_lod, + width, height, depth, + mip_filter, + &lod_ipart, &lod_fpart); + } else { + lod_ipart = LLVMConstInt(LLVMInt32Type(), 0, 0); } /* @@ -966,30 +969,29 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, * We should be able to set ilevel0 = const(0) but that causes * bad x86 code to be emitted. */ - lod = lp_build_const_elem(bld->coord_bld.type, 0.0); - lp_build_nearest_mip_level(bld, unit, lod, &ilevel0); + assert(lod_ipart); + lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); } else { ilevel0 = LLVMConstInt(LLVMInt32Type(), 0, 0); } break; case PIPE_TEX_MIPFILTER_NEAREST: - assert(lod); - lp_build_nearest_mip_level(bld, unit, lod, &ilevel0); + assert(lod_ipart); + lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); break; case PIPE_TEX_MIPFILTER_LINEAR: { LLVMValueRef f256 = LLVMConstReal(LLVMFloatType(), 256.0); - LLVMValueRef i255 = lp_build_const_int32(255); + LLVMTypeRef i32_type = LLVMIntType(32); LLVMTypeRef i16_type = LLVMIntType(16); - assert(lod); + assert(lod_fpart); + + lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); - lp_build_linear_mip_levels(bld, unit, lod, &ilevel0, &ilevel1, - &lod_fpart); lod_fpart = LLVMBuildFMul(builder, lod_fpart, f256, ""); - lod_fpart = lp_build_ifloor(&bld->float_bld, lod_fpart); - lod_fpart = LLVMBuildAnd(builder, lod_fpart, i255, ""); + lod_fpart = LLVMBuildFPToSI(builder, lod_fpart, i32_type, ""); lod_fpart = LLVMBuildTrunc(builder, lod_fpart, i16_type, ""); lod_fpart = lp_build_broadcast_scalar(&h16, lod_fpart); @@ -1049,9 +1051,9 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, lp_build_flow_scope_declare(flow_ctx, &packed_lo); lp_build_flow_scope_declare(flow_ctx, &packed_hi); - /* minify = lod > 0.0 */ - minify = LLVMBuildFCmp(builder, LLVMRealUGE, - lod, float_bld->zero, ""); + /* minify = lod >= 0.0 */ + minify = LLVMBuildICmp(builder, LLVMIntSGE, + lod_ipart, int_bld->zero, ""); lp_build_if(&if_ctx, flow_ctx, builder, minify); { diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index d464147371d..4f9bf6763e6 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -884,12 +884,12 @@ lp_build_sample_general(struct lp_build_sample_context *bld, LLVMValueRef data_array, LLVMValueRef *colors_out) { - struct lp_build_context *float_bld = &bld->float_bld; + struct lp_build_context *int_bld = &bld->int_bld; const unsigned mip_filter = bld->static_state->min_mip_filter; const unsigned min_filter = bld->static_state->min_img_filter; const unsigned mag_filter = bld->static_state->mag_img_filter; const int dims = texture_dims(bld->static_state->target); - LLVMValueRef lod = NULL, lod_fpart = NULL; + LLVMValueRef lod_ipart = NULL, lod_fpart = NULL; LLVMValueRef ilevel0, ilevel1 = NULL; LLVMValueRef width0_vec = NULL, height0_vec = NULL, depth0_vec = NULL; LLVMValueRef width1_vec = NULL, height1_vec = NULL, depth1_vec = NULL; @@ -935,9 +935,13 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* Need to compute lod either to choose mipmap levels or to * distinguish between minification/magnification with one mipmap level. */ - lod = lp_build_lod_selector(bld, unit, ddx, ddy, - lod_bias, explicit_lod, - width, height, depth); + lp_build_lod_selector(bld, unit, ddx, ddy, + lod_bias, explicit_lod, + width, height, depth, + mip_filter, + &lod_ipart, &lod_fpart); + } else { + lod_ipart = LLVMConstInt(LLVMInt32Type(), 0, 0); } /* @@ -950,22 +954,21 @@ lp_build_sample_general(struct lp_build_sample_context *bld, * We should be able to set ilevel0 = const(0) but that causes * bad x86 code to be emitted. */ - lod = lp_build_const_elem(bld->coord_bld.type, 0.0); - lp_build_nearest_mip_level(bld, unit, lod, &ilevel0); + assert(lod_ipart); + lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); } else { ilevel0 = LLVMConstInt(LLVMInt32Type(), 0, 0); } } else { - assert(lod); + assert(lod_ipart); if (mip_filter == PIPE_TEX_MIPFILTER_NEAREST) { - lp_build_nearest_mip_level(bld, unit, lod, &ilevel0); + lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); } else { assert(mip_filter == PIPE_TEX_MIPFILTER_LINEAR); - lp_build_linear_mip_levels(bld, unit, lod, &ilevel0, &ilevel1, - &lod_fpart); + lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); lod_fpart = lp_build_broadcast_scalar(&bld->coord_bld, lod_fpart); } } @@ -1019,9 +1022,9 @@ lp_build_sample_general(struct lp_build_sample_context *bld, lp_build_flow_scope_declare(flow_ctx, &colors_out[2]); lp_build_flow_scope_declare(flow_ctx, &colors_out[3]); - /* minify = lod > 0.0 */ - minify = LLVMBuildFCmp(bld->builder, LLVMRealUGE, - lod, float_bld->zero, ""); + /* minify = lod >= 0.0 */ + minify = LLVMBuildICmp(bld->builder, LLVMIntSGE, + lod_ipart, int_bld->zero, ""); lp_build_if(&if_ctx, flow_ctx, bld->builder, minify); { -- cgit v1.2.3 From 33f88b3492af1f4f7e78c3688d481f1dee189822 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 10:09:37 +0100 Subject: util: Cleanup util_pack_z_stencil and friends. - Handle PIPE_FORMAT_Z32_FLOAT packing correctly. - In the integer version z shouldn't be passed as as double. - Make it clear that the integer versions should only be used for masks. - Make integer type sizes explicit (uint32_t for now, although uint64_t will be necessary later to encode f32_s8_x24). --- src/gallium/auxiliary/util/u_pack_color.h | 50 +++++++++++++++++-------------- 1 file changed, 28 insertions(+), 22 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_pack_color.h b/src/gallium/auxiliary/util/u_pack_color.h index c90b0fdbc3f..5378f2d782f 100644 --- a/src/gallium/auxiliary/util/u_pack_color.h +++ b/src/gallium/auxiliary/util/u_pack_color.h @@ -434,8 +434,8 @@ util_pack_color(const float rgba[4], enum pipe_format format, union util_color * /* Integer versions of util_pack_z and util_pack_z_stencil - useful for * constructing clear masks. */ -static INLINE uint -util_pack_uint_z(enum pipe_format format, unsigned z) +static INLINE uint32_t +util_pack_mask_z(enum pipe_format format, uint32_t z) { switch (format) { case PIPE_FORMAT_Z16_UNORM: @@ -452,29 +452,32 @@ util_pack_uint_z(enum pipe_format format, unsigned z) case PIPE_FORMAT_S8_USCALED: return 0; default: - debug_print_format("gallium: unhandled format in util_pack_z()", format); + debug_print_format("gallium: unhandled format in util_pack_mask_z()", format); assert(0); return 0; } } -static INLINE uint -util_pack_uint_z_stencil(enum pipe_format format, double z, uint s) +static INLINE uint32_t +util_pack_mask_z_stencil(enum pipe_format format, uint32_t z, uint8_t s) { - unsigned packed = util_pack_uint_z(format, z); - - s &= 0xff; + uint32_t packed = util_pack_mask_z(format, z); switch (format) { case PIPE_FORMAT_Z24_UNORM_S8_USCALED: - return packed | (s << 24); + packed |= (uint32_t)s << 24; + break; case PIPE_FORMAT_S8_USCALED_Z24_UNORM: - return packed | s; + packed |= s; + break; case PIPE_FORMAT_S8_USCALED: - return packed | s; + packed |= s; + break; default: - return packed; + break; } + + return packed; } @@ -482,9 +485,11 @@ util_pack_uint_z_stencil(enum pipe_format format, double z, uint s) /** * Note: it's assumed that z is in [0,1] */ -static INLINE uint +static INLINE uint32_t util_pack_z(enum pipe_format format, double z) { + union fi fui; + if (z == 0.0) return 0; @@ -492,24 +497,25 @@ util_pack_z(enum pipe_format format, double z) case PIPE_FORMAT_Z16_UNORM: if (z == 1.0) return 0xffff; - return (uint) (z * 0xffff); + return (uint32_t) (z * 0xffff); case PIPE_FORMAT_Z32_UNORM: /* special-case to avoid overflow */ if (z == 1.0) return 0xffffffff; - return (uint) (z * 0xffffffff); + return (uint32_t) (z * 0xffffffff); case PIPE_FORMAT_Z32_FLOAT: - return (uint)z; + fui.f = (float)z; + return fui.ui; case PIPE_FORMAT_Z24_UNORM_S8_USCALED: case PIPE_FORMAT_Z24X8_UNORM: if (z == 1.0) return 0xffffff; - return (uint) (z * 0xffffff); + return (uint32_t) (z * 0xffffff); case PIPE_FORMAT_S8_USCALED_Z24_UNORM: case PIPE_FORMAT_X8Z24_UNORM: if (z == 1.0) return 0xffffff00; - return ((uint) (z * 0xffffff)) << 8; + return ((uint32_t) (z * 0xffffff)) << 8; case PIPE_FORMAT_S8_USCALED: /* this case can get it via util_pack_z_stencil() */ return 0; @@ -525,14 +531,14 @@ util_pack_z(enum pipe_format format, double z) * Pack Z and/or stencil values into a 32-bit value described by format. * Note: it's assumed that z is in [0,1] and s in [0,255] */ -static INLINE uint -util_pack_z_stencil(enum pipe_format format, double z, uint s) +static INLINE uint32_t +util_pack_z_stencil(enum pipe_format format, double z, uint8_t s) { - unsigned packed = util_pack_z(format, z); + uint32_t packed = util_pack_z(format, z); switch (format) { case PIPE_FORMAT_Z24_UNORM_S8_USCALED: - packed |= s << 24; + packed |= (uint32_t)s << 24; break; case PIPE_FORMAT_S8_USCALED_Z24_UNORM: packed |= s; -- cgit v1.2.3 From 9fe510ef35a783a244d0d54baa50f959a6b781dc Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 10:11:15 +0100 Subject: llvmpipe: Cleanup depth-stencil clears. Only cosmetic changes. No actual practical difference. --- src/gallium/drivers/llvmpipe/lp_rast.c | 34 ++++++++++++++++++++++++--------- src/gallium/drivers/llvmpipe/lp_rast.h | 4 ++-- src/gallium/drivers/llvmpipe/lp_setup.c | 11 +++++++---- 3 files changed, 34 insertions(+), 15 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index d7e6415e139..790d88a7450 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -211,8 +211,8 @@ lp_rast_clear_zstencil(struct lp_rasterizer_task *task, const union lp_rast_cmd_arg arg) { const struct lp_scene *scene = task->scene; - unsigned clear_value = arg.clear_zstencil.value; - unsigned clear_mask = arg.clear_zstencil.mask; + uint32_t clear_value = arg.clear_zstencil.value; + uint32_t clear_mask = arg.clear_zstencil.mask; const unsigned height = TILE_SIZE / TILE_VECTOR_HEIGHT; const unsigned width = TILE_SIZE * TILE_VECTOR_HEIGHT; const unsigned block_size = scene->zsbuf.blocksize; @@ -220,7 +220,8 @@ lp_rast_clear_zstencil(struct lp_rasterizer_task *task, uint8_t *dst; unsigned i, j; - LP_DBG(DEBUG_RAST, "%s 0x%x%x\n", __FUNCTION__, clear_value, clear_mask); + LP_DBG(DEBUG_RAST, "%s: value=0x%08x, mask=0x%08x\n", + __FUNCTION__, clear_value, clear_mask); /* * Clear the aera of the swizzled depth/depth buffer matching this tile, in @@ -232,16 +233,31 @@ lp_rast_clear_zstencil(struct lp_rasterizer_task *task, dst = task->depth_tile; + clear_value &= clear_mask; + switch (block_size) { case 1: + assert(clear_mask == 0xff); memset(dst, (uint8_t) clear_value, height * width); break; case 2: - for (i = 0; i < height; i++) { - uint16_t *row = (uint16_t *)dst; - for (j = 0; j < width; j++) - *row++ = (uint16_t) clear_value; - dst += dst_stride; + if (clear_mask == 0xffff) { + for (i = 0; i < height; i++) { + uint16_t *row = (uint16_t *)dst; + for (j = 0; j < width; j++) + *row++ = (uint16_t) clear_value; + dst += dst_stride; + } + } + else { + for (i = 0; i < height; i++) { + uint16_t *row = (uint16_t *)dst; + for (j = 0; j < width; j++) { + uint16_t tmp = ~clear_mask & *row; + *row++ = clear_value | tmp; + } + dst += dst_stride; + } } break; case 4: @@ -258,7 +274,7 @@ lp_rast_clear_zstencil(struct lp_rasterizer_task *task, uint32_t *row = (uint32_t *)dst; for (j = 0; j < width; j++) { uint32_t tmp = ~clear_mask & *row; - *row++ = (clear_value & clear_mask) | tmp; + *row++ = clear_value | tmp; } dst += dst_stride; } diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h index c55b97a9d13..0f62377c072 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.h +++ b/src/gallium/drivers/llvmpipe/lp_rast.h @@ -149,8 +149,8 @@ union lp_rast_cmd_arg { const struct lp_rast_state *set_state; uint8_t clear_color[4]; struct { - unsigned value; - unsigned mask; + uint32_t value; + uint32_t mask; } clear_zstencil; struct lp_fence *fence; struct llvmpipe_query *query_obj; diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 5ff11a33632..e72ead0def4 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -377,16 +377,19 @@ lp_setup_try_clear( struct lp_setup_context *setup, } if (flags & PIPE_CLEAR_DEPTHSTENCIL) { - unsigned zmask = (flags & PIPE_CLEAR_DEPTH) ? ~0 : 0; - unsigned smask = (flags & PIPE_CLEAR_STENCIL) ? ~0 : 0; + uint32_t zmask = (flags & PIPE_CLEAR_DEPTH) ? ~0 : 0; + uint32_t smask = (flags & PIPE_CLEAR_STENCIL) ? ~0 : 0; zsvalue = util_pack_z_stencil(setup->fb.zsbuf->format, depth, stencil); - zsmask = util_pack_uint_z_stencil(setup->fb.zsbuf->format, + + zsmask = util_pack_mask_z_stencil(setup->fb.zsbuf->format, zmask, smask); + + zsvalue &= zsmask; } if (setup->state == SETUP_ACTIVE) { @@ -431,7 +434,7 @@ lp_setup_try_clear( struct lp_setup_context *setup, if (flags & PIPE_CLEAR_COLOR) { memcpy(setup->clear.color.clear_color, &color_arg, - sizeof color_arg); + sizeof setup->clear.color.clear_color); } } -- cgit v1.2.3 From da495ee8708d655742eff7b0cf1fee8f71ed10e9 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 7 Oct 2010 12:06:07 +0800 Subject: targets/egl: Fix linking with libdrm. --- src/gallium/targets/egl/Makefile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/targets/egl/Makefile b/src/gallium/targets/egl/Makefile index 47c24cefe5c..38e60dbafbf 100644 --- a/src/gallium/targets/egl/Makefile +++ b/src/gallium/targets/egl/Makefile @@ -24,7 +24,9 @@ common_CPPFLAGS := \ -I$(TOP)/src/gallium/auxiliary \ -I$(TOP)/src/gallium/drivers \ -I$(TOP)/src/gallium/include \ - -I$(TOP)/src/gallium/winsys + -I$(TOP)/src/gallium/winsys \ + $(LIBDRM_CFLAGS) + common_SYS := common_LIBS := \ $(TOP)/src/gallium/drivers/identity/libidentity.a \ @@ -41,11 +43,11 @@ egl_SYS := -lm $(DLOPEN_LIBS) -L$(TOP)/$(LIB_DIR) -lEGL egl_LIBS := $(TOP)/src/gallium/state_trackers/egl/libegl.a ifneq ($(findstring x11, $(EGL_PLATFORMS)),) -egl_SYS += -lX11 -lXext -lXfixes +egl_SYS += -lX11 -lXext -lXfixes $(LIBDRM_LIB) egl_LIBS += $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a endif -ifneq ($(findstring kms, $(EGL_PLATFORMS)),) -egl_SYS += -ldrm +ifneq ($(findstring drm, $(EGL_PLATFORMS)),) +egl_SYS += $(LIBDRM_LIB) endif ifneq ($(findstring fbdev, $(EGL_PLATFORMS)),) egl_LIBS += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a -- cgit v1.2.3 From b2c0ef8b51ce86388335e83f2390940cb8fbc12f Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 7 Oct 2010 12:14:38 +0800 Subject: st/vega: Fix version check in context creation. This fixes a regression since 4531356817ec8383ac35932903773de67af92e37. --- src/gallium/state_trackers/vega/vg_manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/vega/vg_manager.c b/src/gallium/state_trackers/vega/vg_manager.c index e7996741d14..232deefa166 100644 --- a/src/gallium/state_trackers/vega/vg_manager.c +++ b/src/gallium/state_trackers/vega/vg_manager.c @@ -352,7 +352,7 @@ vg_api_create_context(struct st_api *stapi, struct st_manager *smapi, return NULL; /* only 1.0 is supported */ - if (attribs->major != 1 || attribs->minor > 0) + if (attribs->major > 1 || (attribs->major == 1 && attribs->minor > 0)) return NULL; pipe = smapi->screen->context_create(smapi->screen, NULL); -- cgit v1.2.3 From 84457701b05ef29126d90c2fe72083278d26bd4f Mon Sep 17 00:00:00 2001 From: Andre Maasikas Date: Wed, 6 Oct 2010 21:14:15 +0300 Subject: r600g: fix evergreen interpolation setup interp data is stored in gpr0 so first interp overwrote it and subsequent ones got wrong values reserve register 0 so it's not used for attribs. alternative is to interpolate attrib0 last (reverse, as r600c does) --- src/gallium/drivers/r600/r600_shader.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 016e75bd52b..1f79c15a2b5 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -529,6 +529,9 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s if (ctx.type == TGSI_PROCESSOR_VERTEX) { ctx.file_offset[TGSI_FILE_INPUT] = 1; } + if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chiprev == 2) { + ctx.file_offset[TGSI_FILE_INPUT] = 1; + } ctx.file_offset[TGSI_FILE_OUTPUT] = ctx.file_offset[TGSI_FILE_INPUT] + ctx.info.file_count[TGSI_FILE_INPUT]; ctx.file_offset[TGSI_FILE_TEMPORARY] = ctx.file_offset[TGSI_FILE_OUTPUT] + -- cgit v1.2.3 From 97eea87bde5d05f247580aeb2963ac2476417bd5 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 7 Oct 2010 15:13:09 +1000 Subject: r600g: use format from the sampler view not from the texture. we want to use the format from the sampler view which isn't always the same as the texture format when creating sampler views. --- src/gallium/drivers/r600/evergreen_state.c | 6 +++--- src/gallium/drivers/r600/r600_state.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 603a8a7b915..0fd1d399518 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -424,15 +424,15 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte swizzle[1] = state->swizzle_g; swizzle[2] = state->swizzle_b; swizzle[3] = state->swizzle_a; - format = r600_translate_texformat(texture->format, + format = r600_translate_texformat(state->format, swizzle, &word4, &yuv_format); if (format == ~0) { format = 0; } - desc = util_format_description(texture->format); + desc = util_format_description(state->format); if (desc == NULL) { - R600_ERR("unknow format %d\n", texture->format); + R600_ERR("unknow format %d\n", state->format); } tmp = (struct r600_resource_texture*)texture; rbuffer = &tmp->resource; diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index b55c3450059..7ceedf6363b 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -626,15 +626,15 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c swizzle[1] = state->swizzle_g; swizzle[2] = state->swizzle_b; swizzle[3] = state->swizzle_a; - format = r600_translate_texformat(texture->format, + format = r600_translate_texformat(state->format, swizzle, &word4, &yuv_format); if (format == ~0) { format = 0; } - desc = util_format_description(texture->format); + desc = util_format_description(state->format); if (desc == NULL) { - R600_ERR("unknow format %d\n", texture->format); + R600_ERR("unknow format %d\n", state->format); } tmp = (struct r600_resource_texture*)texture; rbuffer = &tmp->resource; -- cgit v1.2.3 From 51f9cc4759c23b74a2e4d9c79b0a5df27d403f54 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 7 Oct 2010 15:32:05 +1000 Subject: r600g: fix Z export enable bits. we should be checking output array not input to decide. Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600_shader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 1f79c15a2b5..366d5d9c351 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -132,7 +132,7 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade r600_pipe_state_add_reg(rstate, R_028644_SPI_PS_INPUT_CNTL_0 + i * 4, tmp, 0xFFFFFFFF, NULL); } for (i = 0; i < rshader->noutput; i++) { - if (rshader->input[i].name == TGSI_SEMANTIC_POSITION) + if (rshader->output[i].name == TGSI_SEMANTIC_POSITION) r600_pipe_state_add_reg(rstate, R_02880C_DB_SHADER_CONTROL, S_02880C_Z_EXPORT_ENABLE(1), -- cgit v1.2.3 From 321ec1a22468c1f23bbbf7d5c9de53d4687fec0c Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Thu, 7 Oct 2010 22:03:59 +0100 Subject: gallivm: Vectorize the rho computation. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 92 ++++++++++++++--------- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 13 +++- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 24 ++++++ 3 files changed, 92 insertions(+), 37 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 3287cf7c376..a6a64f38c84 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -171,9 +171,6 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, * Generate code to compute coordinate gradient (rho). * \param ddx partial derivatives of (s, t, r, q) with respect to X * \param ddy partial derivatives of (s, t, r, q) with respect to Y - * \param width scalar int texture width - * \param height scalar int texture height - * \param depth scalar int texture depth * * XXX: The resulting rho is scalar, so we ignore all but the first element of * derivatives that are passed by the shader. @@ -181,52 +178,75 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, static LLVMValueRef lp_build_rho(struct lp_build_sample_context *bld, const LLVMValueRef ddx[4], - const LLVMValueRef ddy[4], - LLVMValueRef width, - LLVMValueRef height, - LLVMValueRef depth) + const LLVMValueRef ddy[4]) { + struct lp_build_context *float_size_bld = &bld->float_size_bld; struct lp_build_context *float_bld = &bld->float_bld; const int dims = texture_dims(bld->static_state->target); - LLVMValueRef index0 = LLVMConstInt(LLVMInt32Type(), 0, 0); - LLVMValueRef dsdx, dsdy; - LLVMValueRef dtdx = NULL, dtdy = NULL, drdx = NULL, drdy = NULL; + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMValueRef index0 = LLVMConstInt(i32t, 0, 0); + LLVMValueRef index1 = LLVMConstInt(i32t, 1, 0); + LLVMValueRef index2 = LLVMConstInt(i32t, 2, 0); + LLVMValueRef dsdx, dsdy, dtdx, dtdy, drdx, drdy; + LLVMValueRef rho_x, rho_y; + LLVMValueRef rho_vec; + LLVMValueRef float_size; LLVMValueRef rho; dsdx = LLVMBuildExtractElement(bld->builder, ddx[0], index0, "dsdx"); - dsdx = lp_build_abs(float_bld, dsdx); dsdy = LLVMBuildExtractElement(bld->builder, ddy[0], index0, "dsdy"); - dsdy = lp_build_abs(float_bld, dsdy); - if (dims > 1) { + + if (dims <= 1) { + rho_x = dsdx; + rho_y = dsdy; + } + else { + rho_x = float_size_bld->undef; + rho_y = float_size_bld->undef; + + rho_x = LLVMBuildInsertElement(bld->builder, rho_x, dsdx, index0, ""); + rho_y = LLVMBuildInsertElement(bld->builder, rho_y, dsdy, index0, ""); + dtdx = LLVMBuildExtractElement(bld->builder, ddx[1], index0, "dtdx"); - dtdx = lp_build_abs(float_bld, dtdx); dtdy = LLVMBuildExtractElement(bld->builder, ddy[1], index0, "dtdy"); - dtdy = lp_build_abs(float_bld, dtdy); - if (dims > 2) { + + rho_x = LLVMBuildInsertElement(bld->builder, rho_x, dtdx, index1, ""); + rho_y = LLVMBuildInsertElement(bld->builder, rho_y, dtdy, index1, ""); + + if (dims >= 3) { drdx = LLVMBuildExtractElement(bld->builder, ddx[2], index0, "drdx"); - drdx = lp_build_abs(float_bld, drdx); drdy = LLVMBuildExtractElement(bld->builder, ddy[2], index0, "drdy"); - drdy = lp_build_abs(float_bld, drdy); + + rho_x = LLVMBuildInsertElement(bld->builder, rho_x, drdx, index2, ""); + rho_y = LLVMBuildInsertElement(bld->builder, rho_y, drdy, index2, ""); } } - /* Compute rho = max of all partial derivatives scaled by texture size. - * XXX this could be vectorized somewhat - */ - rho = LLVMBuildFMul(bld->builder, - lp_build_max(float_bld, dsdx, dsdy), - lp_build_int_to_float(float_bld, width), ""); - if (dims > 1) { - LLVMValueRef max; - max = LLVMBuildFMul(bld->builder, - lp_build_max(float_bld, dtdx, dtdy), - lp_build_int_to_float(float_bld, height), ""); - rho = lp_build_max(float_bld, rho, max); - if (dims > 2) { - max = LLVMBuildFMul(bld->builder, - lp_build_max(float_bld, drdx, drdy), - lp_build_int_to_float(float_bld, depth), ""); - rho = lp_build_max(float_bld, rho, max); + rho_x = lp_build_abs(float_size_bld, rho_x); + rho_y = lp_build_abs(float_size_bld, rho_y); + + rho_vec = lp_build_max(float_size_bld, rho_x, rho_y); + + float_size = lp_build_int_to_float(float_size_bld, bld->uint_size); + + rho_vec = lp_build_mul(float_size_bld, rho_vec, float_size); + + if (dims <= 1) { + rho = rho_vec; + } + else { + if (dims >= 2) { + LLVMValueRef rho_s, rho_t, rho_r; + + rho_s = LLVMBuildExtractElement(bld->builder, rho_vec, index0, ""); + rho_t = LLVMBuildExtractElement(bld->builder, rho_vec, index1, ""); + + rho = lp_build_max(float_bld, rho_s, rho_t); + + if (dims >= 3) { + rho_r = LLVMBuildExtractElement(bld->builder, rho_vec, index0, ""); + rho = lp_build_max(float_bld, rho, rho_r); + } } } @@ -289,7 +309,7 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, else { LLVMValueRef rho; - rho = lp_build_rho(bld, ddx, ddy, width, height, depth); + rho = lp_build_rho(bld, ddx, ddy); /* compute lod = log2(rho) */ if ((mip_filter == PIPE_TEX_MIPFILTER_NONE || diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index b019c3fa5e7..1dd78a07a24 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -202,9 +202,20 @@ struct lp_build_sample_context struct lp_type int_coord_type; struct lp_build_context int_coord_bld; + /** Unsigned integer texture size */ + struct lp_type uint_size_type; + struct lp_build_context uint_size_bld; + + /** Unsigned integer texture size */ + struct lp_type float_size_type; + struct lp_build_context float_size_bld; + /** Output texels type and build context */ struct lp_type texel_type; struct lp_build_context texel_bld; + + /** Unsigned vector with texture width, height, depth */ + LLVMValueRef uint_size; }; @@ -241,7 +252,7 @@ apply_sampler_swizzle(struct lp_build_sample_context *bld, } -static INLINE int +static INLINE unsigned texture_dims(enum pipe_texture_target tex) { switch (tex) { diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 4f9bf6763e6..74362abf455 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -1141,7 +1141,9 @@ lp_build_sample_soa(LLVMBuilderRef builder, LLVMValueRef explicit_lod, /* optional */ LLVMValueRef texel_out[4]) { + unsigned dims = texture_dims(static_state->target); struct lp_build_sample_context bld; + LLVMTypeRef i32t = LLVMInt32Type(); LLVMValueRef width, width_vec; LLVMValueRef height, height_vec; LLVMValueRef depth, depth_vec; @@ -1171,6 +1173,9 @@ lp_build_sample_soa(LLVMBuilderRef builder, bld.coord_type = type; bld.uint_coord_type = lp_uint_type(type); bld.int_coord_type = lp_int_type(type); + bld.float_size_type = lp_type_float(32); + bld.float_size_type.length = dims > 1 ? 4 : 1; + bld.uint_size_type = lp_uint_type(bld.float_size_type); bld.texel_type = type; float_vec_type = lp_type_float_vec(32); @@ -1181,6 +1186,8 @@ lp_build_sample_soa(LLVMBuilderRef builder, lp_build_context_init(&bld.coord_bld, builder, bld.coord_type); lp_build_context_init(&bld.uint_coord_bld, builder, bld.uint_coord_type); lp_build_context_init(&bld.int_coord_bld, builder, bld.int_coord_type); + lp_build_context_init(&bld.uint_size_bld, builder, bld.uint_size_type); + lp_build_context_init(&bld.float_size_bld, builder, bld.float_size_type); lp_build_context_init(&bld.texel_bld, builder, bld.texel_type); /* Get the dynamic state */ @@ -1196,6 +1203,23 @@ lp_build_sample_soa(LLVMBuilderRef builder, t = coords[1]; r = coords[2]; + /* width, height, depth as single uint vector */ + if (dims <= 1) { + bld.uint_size = width; + } + else { + bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size_bld.undef, + width, LLVMConstInt(i32t, 0, 0), ""); + if (dims >= 2) { + bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, + height, LLVMConstInt(i32t, 1, 0), ""); + if (dims >= 3) { + bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, + depth, LLVMConstInt(i32t, 2, 0), ""); + } + } + } + /* width, height, depth as uint vectors */ width_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, width); height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, height); -- cgit v1.2.3 From 1ae5cc2e67a02b3105b5539b5dbc6a69cbb57889 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 8 Oct 2010 09:35:17 +1000 Subject: r600g: add some RG texture format support. --- src/gallium/drivers/r600/eg_state_inlines.h | 16 ++++++++++++++++ src/gallium/drivers/r600/r600_state_inlines.h | 12 ++++++++++++ 2 files changed, 28 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/eg_state_inlines.h b/src/gallium/drivers/r600/eg_state_inlines.h index d7a880f5d3a..5a4e00aac38 100644 --- a/src/gallium/drivers/r600/eg_state_inlines.h +++ b/src/gallium/drivers/r600/eg_state_inlines.h @@ -309,6 +309,12 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) case PIPE_FORMAT_Z16_UNORM: return V_028C70_SWAP_STD; + + case PIPE_FORMAT_R8G8_UNORM: + return V_028C70_SWAP_STD; + + case PIPE_FORMAT_R16_UNORM: + return V_028C70_SWAP_STD; /* 32-bit buffers. */ case PIPE_FORMAT_A8B8G8R8_SRGB: @@ -346,6 +352,9 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) case PIPE_FORMAT_R10SG10SB10SA2U_NORM: return V_028C70_SWAP_STD_REV; + case PIPE_FORMAT_R16G16_UNORM: + return V_028C70_SWAP_STD; + /* 64-bit buffers. */ case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: @@ -390,6 +399,12 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) case PIPE_FORMAT_Z16_UNORM: return V_028C70_COLOR_16; + case PIPE_FORMAT_R8G8_UNORM: + return V_028C70_COLOR_8_8; + + case PIPE_FORMAT_R16_UNORM: + return V_028C70_COLOR_16; + /* 32-bit buffers. */ case PIPE_FORMAT_A8B8G8R8_SRGB: case PIPE_FORMAT_A8B8G8R8_UNORM: @@ -427,6 +442,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) return V_028C70_COLOR_16_16_FLOAT; case PIPE_FORMAT_R16G16_SSCALED: + case PIPE_FORMAT_R16G16_UNORM: return V_028C70_COLOR_16_16; /* 64-bit buffers. */ diff --git a/src/gallium/drivers/r600/r600_state_inlines.h b/src/gallium/drivers/r600/r600_state_inlines.h index 81f285027e6..29a29d87cd3 100644 --- a/src/gallium/drivers/r600/r600_state_inlines.h +++ b/src/gallium/drivers/r600/r600_state_inlines.h @@ -303,6 +303,10 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) return V_0280A0_SWAP_STD; case PIPE_FORMAT_L8A8_UNORM: + case PIPE_FORMAT_R8G8_UNORM: + return V_0280A0_SWAP_STD; + + case PIPE_FORMAT_R16_UNORM: return V_0280A0_SWAP_STD; /* 32-bit buffers. */ @@ -342,6 +346,9 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) case PIPE_FORMAT_R10SG10SB10SA2U_NORM: return V_0280A0_SWAP_STD_REV; + case PIPE_FORMAT_R16G16_UNORM: + return V_0280A0_SWAP_STD; + /* 64-bit buffers. */ case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: @@ -387,8 +394,12 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) return V_0280A0_COLOR_16; case PIPE_FORMAT_L8A8_UNORM: + case PIPE_FORMAT_R8G8_UNORM: return V_0280A0_COLOR_8_8; + case PIPE_FORMAT_R16_UNORM: + return V_0280A0_COLOR_16; + /* 32-bit buffers. */ case PIPE_FORMAT_A8B8G8R8_SRGB: case PIPE_FORMAT_A8B8G8R8_UNORM: @@ -426,6 +437,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) return V_0280A0_COLOR_16_16_FLOAT; case PIPE_FORMAT_R16G16_SSCALED: + case PIPE_FORMAT_R16G16_UNORM: return V_0280A0_COLOR_16_16; -- cgit v1.2.3 From 8d6a38d7b3ea85bd2199f2797e3580d76cca2f6f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 8 Oct 2010 19:55:05 +1000 Subject: r600g: drop width/height per level storage. these aren't used anywhere, so just waste memory. --- src/gallium/drivers/r600/r600_resource.h | 2 -- src/gallium/drivers/r600/r600_texture.c | 4 ---- 2 files changed, 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index f6377ea802b..323960960d6 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -51,8 +51,6 @@ struct r600_resource_texture { struct r600_resource resource; unsigned long offset[PIPE_MAX_TEXTURE_LEVELS]; unsigned long pitch[PIPE_MAX_TEXTURE_LEVELS]; - unsigned long width[PIPE_MAX_TEXTURE_LEVELS]; - unsigned long height[PIPE_MAX_TEXTURE_LEVELS]; unsigned long layer_size[PIPE_MAX_TEXTURE_LEVELS]; unsigned long pitch_override; unsigned long bpt; diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index c46bfa66ba1..db88346afbe 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -99,8 +99,6 @@ static void r600_setup_miptree(struct r600_resource_texture *rtex, enum chip_cla rtex->offset[i] = offset; rtex->layer_size[i] = layer_size; rtex->pitch[i] = pitch; - rtex->width[i] = w; - rtex->height[i] = h; offset += size; } rtex->size = offset; @@ -217,8 +215,6 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen, rtex->pitch_override = whandle->stride; rtex->bpt = util_format_get_blocksize(templ->format); rtex->pitch[0] = whandle->stride; - rtex->width[0] = templ->width0; - rtex->height[0] = templ->height0; rtex->offset[0] = 0; rtex->size = align(rtex->pitch[0] * templ->height0, 64); -- cgit v1.2.3 From 1f01f5cfcf6bb30d8c1d616019cbeb9700cd1e80 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 8 Oct 2010 04:56:49 -0700 Subject: r600g: Remove unnecessary header. --- src/gallium/winsys/r600/drm/radeon_bo.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c b/src/gallium/winsys/r600/drm/radeon_bo.c index 836d5d77e09..14a00161c8b 100644 --- a/src/gallium/winsys/r600/drm/radeon_bo.c +++ b/src/gallium/winsys/r600/drm/radeon_bo.c @@ -32,7 +32,6 @@ #include "r600_priv.h" #include "xf86drm.h" #include "radeon_drm.h" -#include "util/u_time.h" static int radeon_bo_fixed_map(struct radeon *radeon, struct radeon_bo *bo) { -- cgit v1.2.3 From 4eb222a3e654812ac1466b438a7d43f07ca6a508 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 10:54:23 +0100 Subject: gallivm: Do not do mipfiltering when magnifying. If lod < 0, then invariably follows that ilevel0 == ilevel1 == 0. --- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 16 ++++++++-------- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 8a55681166d..d42b5f61271 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -1071,14 +1071,14 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, lp_build_else(&if_ctx); { /* Use the magnification filter */ - lp_build_sample_mipmap(bld, mag_filter, mip_filter, - s, t, r, lod_fpart, - width0_vec, width1_vec, - height0_vec, height1_vec, - depth0_vec, depth1_vec, - row_stride0_vec, row_stride1_vec, - img_stride0_vec, img_stride1_vec, - data_ptr0, data_ptr1, + lp_build_sample_mipmap(bld, mag_filter, PIPE_TEX_MIPFILTER_NONE, + s, t, r, NULL, + width_vec, NULL, + height_vec, NULL, + depth_vec, NULL, + row_stride0_vec, NULL, + img_stride0_vec, NULL, + data_ptr0, NULL, &packed_lo, &packed_hi); } lp_build_endif(&if_ctx); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 74362abf455..c7947f06e81 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -1044,14 +1044,14 @@ lp_build_sample_general(struct lp_build_sample_context *bld, { /* Use the magnification filter */ lp_build_sample_mipmap(bld, unit, - mag_filter, mip_filter, - s, t, r, lod_fpart, - width0_vec, width1_vec, - height0_vec, height1_vec, - depth0_vec, depth1_vec, - row_stride0_vec, row_stride1_vec, - img_stride0_vec, img_stride1_vec, - data_ptr0, data_ptr1, + mag_filter, PIPE_TEX_MIPFILTER_NONE, + s, t, r, NULL, + width_vec, NULL, + height_vec, NULL, + depth_vec, NULL, + row_stride0_vec, NULL, + img_stride0_vec, NULL, + data_ptr0, NULL, colors_out); } lp_build_endif(&if_ctx); -- cgit v1.2.3 From 05fe33b71cd913876184d1aa4086e4e3f8636eb1 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 13:24:39 +0100 Subject: gallivm: Simplify lp_build_mipmap_level_sizes' interface. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 59 ++++++----------------- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 18 +++---- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 16 +++--- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 16 +++--- 4 files changed, 42 insertions(+), 67 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index a6a64f38c84..c4ed79e0e7e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -513,61 +513,34 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, LLVMValueRef width_vec, LLVMValueRef height_vec, LLVMValueRef depth_vec, - LLVMValueRef ilevel0, - LLVMValueRef ilevel1, + LLVMValueRef ilevel, LLVMValueRef row_stride_array, LLVMValueRef img_stride_array, - LLVMValueRef *width0_vec, - LLVMValueRef *width1_vec, - LLVMValueRef *height0_vec, - LLVMValueRef *height1_vec, - LLVMValueRef *depth0_vec, - LLVMValueRef *depth1_vec, - LLVMValueRef *row_stride0_vec, - LLVMValueRef *row_stride1_vec, - LLVMValueRef *img_stride0_vec, - LLVMValueRef *img_stride1_vec) + LLVMValueRef *out_width_vec, + LLVMValueRef *out_height_vec, + LLVMValueRef *out_depth_vec, + LLVMValueRef *row_stride_vec, + LLVMValueRef *img_stride_vec) { - const unsigned mip_filter = bld->static_state->min_mip_filter; - LLVMValueRef ilevel0_vec, ilevel1_vec; + LLVMValueRef ilevel_vec; - ilevel0_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, ilevel0); - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) - ilevel1_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, ilevel1); + ilevel_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, ilevel); /* - * Compute width, height, depth at mipmap level 'ilevel0' + * Compute width, height, depth at mipmap level 'ilevel' */ - *width0_vec = lp_build_minify(bld, width_vec, ilevel0_vec); + *out_width_vec = lp_build_minify(bld, width_vec, ilevel_vec); if (dims >= 2) { - *height0_vec = lp_build_minify(bld, height_vec, ilevel0_vec); - *row_stride0_vec = lp_build_get_level_stride_vec(bld, + *out_height_vec = lp_build_minify(bld, height_vec, ilevel_vec); + *row_stride_vec = lp_build_get_level_stride_vec(bld, row_stride_array, - ilevel0); + ilevel); if (dims == 3 || bld->static_state->target == PIPE_TEXTURE_CUBE) { - *img_stride0_vec = lp_build_get_level_stride_vec(bld, + *img_stride_vec = lp_build_get_level_stride_vec(bld, img_stride_array, - ilevel0); + ilevel); if (dims == 3) { - *depth0_vec = lp_build_minify(bld, depth_vec, ilevel0_vec); - } - } - } - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - /* compute width, height, depth for second mipmap level at 'ilevel1' */ - *width1_vec = lp_build_minify(bld, width_vec, ilevel1_vec); - if (dims >= 2) { - *height1_vec = lp_build_minify(bld, height_vec, ilevel1_vec); - *row_stride1_vec = lp_build_get_level_stride_vec(bld, - row_stride_array, - ilevel1); - if (dims == 3 || bld->static_state->target == PIPE_TEXTURE_CUBE) { - *img_stride1_vec = lp_build_get_level_stride_vec(bld, - img_stride_array, - ilevel1); - if (dims == 3) { - *depth1_vec = lp_build_minify(bld, depth_vec, ilevel1_vec); - } + *out_depth_vec = lp_build_minify(bld, depth_vec, ilevel_vec); } } } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index 1dd78a07a24..76f428d4be1 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -327,20 +327,14 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, LLVMValueRef width_vec, LLVMValueRef height_vec, LLVMValueRef depth_vec, - LLVMValueRef ilevel0, - LLVMValueRef ilevel1, + LLVMValueRef ilevel, LLVMValueRef row_stride_array, LLVMValueRef img_stride_array, - LLVMValueRef *width0_vec, - LLVMValueRef *width1_vec, - LLVMValueRef *height0_vec, - LLVMValueRef *height1_vec, - LLVMValueRef *depth0_vec, - LLVMValueRef *depth1_vec, - LLVMValueRef *row_stride0_vec, - LLVMValueRef *row_stride1_vec, - LLVMValueRef *img_stride0_vec, - LLVMValueRef *img_stride1_vec); + LLVMValueRef *out_width_vec, + LLVMValueRef *out_height_vec, + LLVMValueRef *out_depth_vec, + LLVMValueRef *row_stride_vec, + LLVMValueRef *img_stride_vec); void diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index d42b5f61271..5c5669bb8b7 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -1002,13 +1002,17 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, /* compute image size(s) of source mipmap level(s) */ lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, - ilevel0, ilevel1, + ilevel0, row_stride_array, img_stride_array, - &width0_vec, &width1_vec, - &height0_vec, &height1_vec, - &depth0_vec, &depth1_vec, - &row_stride0_vec, &row_stride1_vec, - &img_stride0_vec, &img_stride1_vec); + &width0_vec, &height0_vec, &depth0_vec, + &row_stride0_vec, &img_stride0_vec); + if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { + lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, + ilevel1, + row_stride_array, img_stride_array, + &width1_vec, &height1_vec, &depth1_vec, + &row_stride1_vec, &img_stride1_vec); + } /* * Get pointer(s) to image data for mipmap level(s). diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index c7947f06e81..1883c198e57 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -975,13 +975,17 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* compute image size(s) of source mipmap level(s) */ lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, - ilevel0, ilevel1, + ilevel0, row_stride_array, img_stride_array, - &width0_vec, &width1_vec, - &height0_vec, &height1_vec, - &depth0_vec, &depth1_vec, - &row_stride0_vec, &row_stride1_vec, - &img_stride0_vec, &img_stride1_vec); + &width0_vec, &height0_vec, &depth0_vec, + &row_stride0_vec, &img_stride0_vec); + if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { + lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, + ilevel1, + row_stride_array, img_stride_array, + &width1_vec, &height1_vec, &depth1_vec, + &row_stride1_vec, &img_stride1_vec); + } /* * Get pointer(s) to image data for mipmap level(s). -- cgit v1.2.3 From 4f2e2ca4e39a4c6fe11739832203a36877bdf0d8 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 13:26:37 +0100 Subject: gallivm: Don't compute the second mipmap level when frac(lod) == 0 --- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 167 +++++++++++----------- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 147 +++++++++++-------- 2 files changed, 175 insertions(+), 139 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 5c5669bb8b7..511090ed14d 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -794,63 +794,89 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMValueRef img_stride1_vec, LLVMValueRef data_ptr0, LLVMValueRef data_ptr1, - LLVMValueRef *colors_lo, - LLVMValueRef *colors_hi) + LLVMValueRef colors_lo_var, + LLVMValueRef colors_hi_var) { + LLVMBuilderRef builder = bld->builder; LLVMValueRef colors0_lo, colors0_hi; LLVMValueRef colors1_lo, colors1_hi; + /* sample the first mipmap level */ if (img_filter == PIPE_TEX_FILTER_NEAREST) { - /* sample the first mipmap level */ lp_build_sample_image_nearest(bld, width0_vec, height0_vec, depth0_vec, row_stride0_vec, img_stride0_vec, data_ptr0, s, t, r, &colors0_lo, &colors0_hi); - - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - /* sample the second mipmap level */ - lp_build_sample_image_nearest(bld, - width1_vec, height1_vec, depth1_vec, - row_stride1_vec, img_stride1_vec, - data_ptr1, s, t, r, - &colors1_lo, &colors1_hi); - } } else { assert(img_filter == PIPE_TEX_FILTER_LINEAR); - - /* sample the first mipmap level */ lp_build_sample_image_linear(bld, width0_vec, height0_vec, depth0_vec, row_stride0_vec, img_stride0_vec, data_ptr0, s, t, r, &colors0_lo, &colors0_hi); + } + + /* Store the first level's colors in the output variables */ + LLVMBuildStore(builder, colors0_lo, colors_lo_var); + LLVMBuildStore(builder, colors0_hi, colors_hi_var); + + if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { + LLVMValueRef h16_scale = LLVMConstReal(LLVMFloatType(), 256.0); + LLVMTypeRef i32_type = LLVMIntType(32); + struct lp_build_flow_context *flow_ctx; + struct lp_build_if_state if_ctx; + LLVMValueRef need_lerp; + + flow_ctx = lp_build_flow_create(builder); + + lod_fpart = LLVMBuildFMul(builder, lod_fpart, h16_scale, ""); + lod_fpart = LLVMBuildFPToSI(builder, lod_fpart, i32_type, "lod_fpart.fixed16"); + + /* need_lerp = lod_fpart > 0 */ + need_lerp = LLVMBuildICmp(builder, LLVMIntSGT, + lod_fpart, LLVMConstNull(i32_type), + "need_lerp"); + + lp_build_if(&if_ctx, flow_ctx, builder, need_lerp); + { + struct lp_build_context h16_bld; + + lp_build_context_init(&h16_bld, builder, lp_type_ufixed(16)); - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { /* sample the second mipmap level */ - lp_build_sample_image_linear(bld, - width1_vec, height1_vec, depth1_vec, - row_stride1_vec, img_stride1_vec, - data_ptr1, s, t, r, - &colors1_lo, &colors1_hi); + if (img_filter == PIPE_TEX_FILTER_NEAREST) { + lp_build_sample_image_nearest(bld, + width1_vec, height1_vec, depth1_vec, + row_stride1_vec, img_stride1_vec, + data_ptr1, s, t, r, + &colors1_lo, &colors1_hi); + } + else { + lp_build_sample_image_linear(bld, + width1_vec, height1_vec, depth1_vec, + row_stride1_vec, img_stride1_vec, + data_ptr1, s, t, r, + &colors1_lo, &colors1_hi); + } + + /* interpolate samples from the two mipmap levels */ + + lod_fpart = LLVMBuildTrunc(builder, lod_fpart, h16_bld.elem_type, ""); + lod_fpart = lp_build_broadcast_scalar(&h16_bld, lod_fpart); + + colors0_lo = lp_build_lerp(&h16_bld, lod_fpart, + colors0_lo, colors1_lo); + colors0_hi = lp_build_lerp(&h16_bld, lod_fpart, + colors0_hi, colors1_hi); + + LLVMBuildStore(builder, colors0_lo, colors_lo_var); + LLVMBuildStore(builder, colors0_hi, colors_hi_var); } - } + lp_build_endif(&if_ctx); - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - /* interpolate samples from the two mipmap levels */ - struct lp_build_context h16; - lp_build_context_init(&h16, bld->builder, lp_type_ufixed(16)); - - *colors_lo = lp_build_lerp(&h16, lod_fpart, - colors0_lo, colors1_lo); - *colors_hi = lp_build_lerp(&h16, lod_fpart, - colors0_hi, colors1_hi); - } - else { - /* use first/only level's colors */ - *colors_lo = colors0_lo; - *colors_hi = colors0_hi; + lp_build_flow_destroy(flow_ctx); } } @@ -898,8 +924,7 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, LLVMValueRef packed, packed_lo, packed_hi; LLVMValueRef unswizzled[4]; LLVMValueRef face_ddx[4], face_ddy[4]; - struct lp_build_context h16; - LLVMTypeRef h16_vec_type; + struct lp_build_context h16_bld; /* we only support the common/simple wrap modes at this time */ assert(lp_is_simple_wrap_mode(bld->static_state->wrap_s)); @@ -910,9 +935,7 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, /* make 16-bit fixed-pt builder context */ - lp_build_context_init(&h16, builder, lp_type_ufixed(16)); - h16_vec_type = lp_build_vec_type(h16.type); - + lp_build_context_init(&h16_bld, builder, lp_type_ufixed(16)); /* cube face selection, compute pre-face coords, etc. */ if (bld->static_state->target == PIPE_TEXTURE_CUBE) { @@ -955,8 +978,6 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, /* * Compute integer mipmap level(s) to fetch texels from: ilevel0, ilevel1 - * If mipfilter=linear, also compute the weight between the two - * mipmap levels: lod_fpart */ switch (mip_filter) { default: @@ -981,22 +1002,9 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); break; case PIPE_TEX_MIPFILTER_LINEAR: - { - LLVMValueRef f256 = LLVMConstReal(LLVMFloatType(), 256.0); - LLVMTypeRef i32_type = LLVMIntType(32); - LLVMTypeRef i16_type = LLVMIntType(16); - - assert(lod_fpart); - - lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); - - lod_fpart = LLVMBuildFMul(builder, lod_fpart, f256, ""); - lod_fpart = LLVMBuildFPToSI(builder, lod_fpart, i32_type, ""); - lod_fpart = LLVMBuildTrunc(builder, lod_fpart, i16_type, ""); - lod_fpart = lp_build_broadcast_scalar(&h16, lod_fpart); - - /* the lod_fpart values will be fixed pt values in [0,1) */ - } + assert(lod_ipart); + assert(lod_fpart); + lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); break; } @@ -1022,13 +1030,17 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, data_ptr1 = lp_build_get_mipmap_level(bld, data_array, ilevel1); } - /* * Get/interpolate texture colors. */ + + packed_lo = lp_build_alloca(builder, h16_bld.vec_type, "packed_lo"); + packed_hi = lp_build_alloca(builder, h16_bld.vec_type, "packed_hi"); + if (min_filter == mag_filter) { /* no need to distinquish between minification and magnification */ - lp_build_sample_mipmap(bld, min_filter, mip_filter, + lp_build_sample_mipmap(bld, + min_filter, mip_filter, s, t, r, lod_fpart, width0_vec, width1_vec, height0_vec, height1_vec, @@ -1036,7 +1048,7 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, row_stride0_vec, row_stride1_vec, img_stride0_vec, img_stride1_vec, data_ptr0, data_ptr1, - &packed_lo, &packed_hi); + packed_lo, packed_hi); } else { /* Emit conditional to choose min image filter or mag image filter @@ -1047,13 +1059,6 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, LLVMValueRef minify; flow_ctx = lp_build_flow_create(builder); - lp_build_flow_scope_begin(flow_ctx); - - packed_lo = LLVMGetUndef(h16_vec_type); - packed_hi = LLVMGetUndef(h16_vec_type); - - lp_build_flow_scope_declare(flow_ctx, &packed_lo); - lp_build_flow_scope_declare(flow_ctx, &packed_hi); /* minify = lod >= 0.0 */ minify = LLVMBuildICmp(builder, LLVMIntSGE, @@ -1070,12 +1075,13 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, row_stride0_vec, row_stride1_vec, img_stride0_vec, img_stride1_vec, data_ptr0, data_ptr1, - &packed_lo, &packed_hi); + packed_lo, packed_hi); } lp_build_else(&if_ctx); { /* Use the magnification filter */ - lp_build_sample_mipmap(bld, mag_filter, PIPE_TEX_MIPFILTER_NONE, + lp_build_sample_mipmap(bld, + mag_filter, PIPE_TEX_MIPFILTER_NONE, s, t, r, NULL, width_vec, NULL, height_vec, NULL, @@ -1083,24 +1089,21 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, row_stride0_vec, NULL, img_stride0_vec, NULL, data_ptr0, NULL, - &packed_lo, &packed_hi); + packed_lo, packed_hi); } lp_build_endif(&if_ctx); - lp_build_flow_scope_end(flow_ctx); lp_build_flow_destroy(flow_ctx); } - /* combine 'packed_lo', 'packed_hi' into 'packed' */ - { - struct lp_build_context h16, u8n; - - lp_build_context_init(&h16, builder, lp_type_ufixed(16)); - lp_build_context_init(&u8n, builder, lp_type_unorm(8)); - - packed = lp_build_pack2(builder, h16.type, u8n.type, - packed_lo, packed_hi); - } + /* + * combine the values stored in 'packed_lo' and 'packed_hi' variables + * into 'packed' + */ + packed = lp_build_pack2(builder, + h16_bld.type, lp_type_unorm(8), + LLVMBuildLoad(builder, packed_lo, ""), + LLVMBuildLoad(builder, packed_hi, "")); /* * Convert to SoA and swizzle. diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 1883c198e57..4adce4e8b32 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -805,54 +805,76 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMValueRef data_ptr1, LLVMValueRef *colors_out) { + LLVMBuilderRef builder = bld->builder; LLVMValueRef colors0[4], colors1[4]; - int chan; + unsigned chan; + /* sample the first mipmap level */ if (img_filter == PIPE_TEX_FILTER_NEAREST) { - /* sample the first mipmap level */ lp_build_sample_image_nearest(bld, unit, width0_vec, height0_vec, depth0_vec, row_stride0_vec, img_stride0_vec, - data_ptr0, s, t, r, colors0); - - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - /* sample the second mipmap level */ - lp_build_sample_image_nearest(bld, unit, - width1_vec, height1_vec, depth1_vec, - row_stride1_vec, img_stride1_vec, - data_ptr1, s, t, r, colors1); - } + data_ptr0, s, t, r, + colors0); } else { assert(img_filter == PIPE_TEX_FILTER_LINEAR); - - /* sample the first mipmap level */ lp_build_sample_image_linear(bld, unit, width0_vec, height0_vec, depth0_vec, row_stride0_vec, img_stride0_vec, - data_ptr0, s, t, r, colors0); + data_ptr0, s, t, r, + colors0); + } - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - /* sample the second mipmap level */ - lp_build_sample_image_linear(bld, unit, - width1_vec, height1_vec, depth1_vec, - row_stride1_vec, img_stride1_vec, - data_ptr1, s, t, r, colors1); - } + /* Store the first level's colors in the output variables */ + for (chan = 0; chan < 4; chan++) { + LLVMBuildStore(builder, colors0[chan], colors_out[chan]); } if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - /* interpolate samples from the two mipmap levels */ - for (chan = 0; chan < 4; chan++) { - colors_out[chan] = lp_build_lerp(&bld->texel_bld, lod_fpart, + struct lp_build_flow_context *flow_ctx; + struct lp_build_if_state if_ctx; + LLVMValueRef need_lerp; + + flow_ctx = lp_build_flow_create(builder); + + /* need_lerp = lod_fpart > 0 */ + need_lerp = LLVMBuildFCmp(builder, LLVMRealUGT, + lod_fpart, + bld->float_bld.zero, + "need_lerp"); + + lp_build_if(&if_ctx, flow_ctx, builder, need_lerp); + { + /* sample the second mipmap level */ + if (img_filter == PIPE_TEX_FILTER_NEAREST) { + lp_build_sample_image_nearest(bld, unit, + width1_vec, height1_vec, depth1_vec, + row_stride1_vec, img_stride1_vec, + data_ptr1, s, t, r, + colors1); + } + else { + lp_build_sample_image_linear(bld, unit, + width1_vec, height1_vec, depth1_vec, + row_stride1_vec, img_stride1_vec, + data_ptr1, s, t, r, + colors1); + } + + /* interpolate samples from the two mipmap levels */ + + lod_fpart = lp_build_broadcast_scalar(&bld->texel_bld, lod_fpart); + + for (chan = 0; chan < 4; chan++) { + colors0[chan] = lp_build_lerp(&bld->texel_bld, lod_fpart, colors0[chan], colors1[chan]); + LLVMBuildStore(builder, colors0[chan], colors_out[chan]); + } } - } - else { - /* use first/only level's colors */ - for (chan = 0; chan < 4; chan++) { - colors_out[chan] = colors0[chan]; - } + lp_build_endif(&if_ctx); + + lp_build_flow_destroy(flow_ctx); } } @@ -885,6 +907,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld, LLVMValueRef *colors_out) { struct lp_build_context *int_bld = &bld->int_bld; + LLVMBuilderRef builder = bld->builder; const unsigned mip_filter = bld->static_state->min_mip_filter; const unsigned min_filter = bld->static_state->min_img_filter; const unsigned mag_filter = bld->static_state->mag_img_filter; @@ -897,6 +920,8 @@ lp_build_sample_general(struct lp_build_sample_context *bld, LLVMValueRef img_stride0_vec = NULL, img_stride1_vec = NULL; LLVMValueRef data_ptr0, data_ptr1 = NULL; LLVMValueRef face_ddx[4], face_ddy[4]; + LLVMValueRef texels[4]; + unsigned chan; /* printf("%s mip %d min %d mag %d\n", __FUNCTION__, @@ -945,9 +970,13 @@ lp_build_sample_general(struct lp_build_sample_context *bld, } /* - * Compute integer mipmap level(s) to fetch texels from. + * Compute integer mipmap level(s) to fetch texels from: ilevel0, ilevel1 */ - if (mip_filter == PIPE_TEX_MIPFILTER_NONE) { + switch (mip_filter) { + default: + assert(0 && "bad mip_filter value in lp_build_sample_soa()"); + /* fall-through */ + case PIPE_TEX_MIPFILTER_NONE: /* always use mip level 0 */ if (bld->static_state->target == PIPE_TEXTURE_CUBE) { /* XXX this is a work-around for an apparent bug in LLVM 2.7. @@ -960,17 +989,16 @@ lp_build_sample_general(struct lp_build_sample_context *bld, else { ilevel0 = LLVMConstInt(LLVMInt32Type(), 0, 0); } - } - else { + break; + case PIPE_TEX_MIPFILTER_NEAREST: assert(lod_ipart); - if (mip_filter == PIPE_TEX_MIPFILTER_NEAREST) { - lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); - } - else { - assert(mip_filter == PIPE_TEX_MIPFILTER_LINEAR); - lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); - lod_fpart = lp_build_broadcast_scalar(&bld->coord_bld, lod_fpart); - } + lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); + break; + case PIPE_TEX_MIPFILTER_LINEAR: + assert(lod_ipart); + assert(lod_fpart); + lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); + break; } /* compute image size(s) of source mipmap level(s) */ @@ -998,39 +1026,40 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* * Get/interpolate texture colors. */ + + for (chan = 0; chan < 4; ++chan) { + texels[chan] = lp_build_alloca(builder, bld->texel_bld.vec_type, ""); + lp_build_name(texels[chan], "sampler%u_texel_%c_var", unit, "xyzw"[chan]); + } + if (min_filter == mag_filter) { /* no need to distinquish between minification and magnification */ lp_build_sample_mipmap(bld, unit, - min_filter, mip_filter, s, t, r, lod_fpart, + min_filter, mip_filter, + s, t, r, lod_fpart, width0_vec, width1_vec, height0_vec, height1_vec, depth0_vec, depth1_vec, row_stride0_vec, row_stride1_vec, img_stride0_vec, img_stride1_vec, data_ptr0, data_ptr1, - colors_out); + texels); } else { /* Emit conditional to choose min image filter or mag image filter - * depending on the lod being >0 or <= 0, respectively. + * depending on the lod being > 0 or <= 0, respectively. */ struct lp_build_flow_context *flow_ctx; struct lp_build_if_state if_ctx; LLVMValueRef minify; - flow_ctx = lp_build_flow_create(bld->builder); - lp_build_flow_scope_begin(flow_ctx); - - lp_build_flow_scope_declare(flow_ctx, &colors_out[0]); - lp_build_flow_scope_declare(flow_ctx, &colors_out[1]); - lp_build_flow_scope_declare(flow_ctx, &colors_out[2]); - lp_build_flow_scope_declare(flow_ctx, &colors_out[3]); + flow_ctx = lp_build_flow_create(builder); /* minify = lod >= 0.0 */ - minify = LLVMBuildICmp(bld->builder, LLVMIntSGE, + minify = LLVMBuildICmp(builder, LLVMIntSGE, lod_ipart, int_bld->zero, ""); - lp_build_if(&if_ctx, flow_ctx, bld->builder, minify); + lp_build_if(&if_ctx, flow_ctx, builder, minify); { /* Use the minification filter */ lp_build_sample_mipmap(bld, unit, @@ -1042,7 +1071,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld, row_stride0_vec, row_stride1_vec, img_stride0_vec, img_stride1_vec, data_ptr0, data_ptr1, - colors_out); + texels); } lp_build_else(&if_ctx); { @@ -1056,13 +1085,17 @@ lp_build_sample_general(struct lp_build_sample_context *bld, row_stride0_vec, NULL, img_stride0_vec, NULL, data_ptr0, NULL, - colors_out); + texels); } lp_build_endif(&if_ctx); - lp_build_flow_scope_end(flow_ctx); lp_build_flow_destroy(flow_ctx); } + + for (chan = 0; chan < 4; ++chan) { + colors_out[chan] = LLVMBuildLoad(builder, texels[chan], ""); + lp_build_name(colors_out[chan], "sampler%u_texel_%c", unit, "xyzw"[chan]); + } } -- cgit v1.2.3 From 0d84b64a4f4cf4dd9c884b5d47cc9d1df9bf8e79 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 13:36:18 +0100 Subject: gallivm: Use lp_build_ifloor_fract for lod computation. Forgot this one before. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index c4ed79e0e7e..d6b50fbe5ff 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -359,11 +359,9 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, } if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - LLVMValueRef ipart = lp_build_ifloor(float_bld, lod); - lp_build_name(ipart, "lod_ipart"); - *out_lod_ipart = ipart; - ipart = LLVMBuildSIToFP(bld->builder, ipart, float_bld->vec_type, ""); - *out_lod_fpart = LLVMBuildFSub(bld->builder, lod, ipart, "lod_fpart"); + lp_build_ifloor_fract(float_bld, lod, out_lod_ipart, out_lod_fpart); + lp_build_name(*out_lod_ipart, "lod_ipart"); + lp_build_name(*out_lod_fpart, "lod_fpart"); } else { *out_lod_ipart = lp_build_iround(float_bld, lod); -- cgit v1.2.3 From df7a2451b1a7b9ce8cc389b20bb707cf951f8d4e Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 14:05:50 +0100 Subject: gallivm: Clamp mipmap level and zero mip weight simultaneously. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 57 ++++++++++++++++++----- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 1 + src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 4 +- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 4 +- 4 files changed, 52 insertions(+), 14 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index d6b50fbe5ff..cf6da2c2783 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -409,27 +409,60 @@ void lp_build_linear_mip_levels(struct lp_build_sample_context *bld, unsigned unit, LLVMValueRef lod_ipart, + LLVMValueRef *lod_fpart_inout, LLVMValueRef *level0_out, LLVMValueRef *level1_out) { + LLVMBuilderRef builder = bld->builder; struct lp_build_context *int_bld = &bld->int_bld; - LLVMValueRef last_level, level; + struct lp_build_context *float_bld = &bld->float_bld; + LLVMValueRef last_level; + LLVMValueRef clamp_min; + LLVMValueRef clamp_max; + + *level0_out = lod_ipart; + *level1_out = lp_build_add(int_bld, lod_ipart, int_bld->one); last_level = bld->dynamic_state->last_level(bld->dynamic_state, bld->builder, unit); - /* convert float lod to integer */ - level = lod_ipart; + /* + * Clamp both lod_ipart and lod_ipart + 1 to [0, last_level], with the + * minimum number of comparisons, and zeroing lod_fpart in the extreme + * ends in the process. + */ + + /* lod_ipart < 0 */ + clamp_min = LLVMBuildICmp(builder, LLVMIntSLT, + lod_ipart, int_bld->zero, + "clamp_lod_to_zero"); + + *level0_out = LLVMBuildSelect(builder, clamp_min, + int_bld->zero, *level0_out, ""); + + *level1_out = LLVMBuildSelect(builder, clamp_min, + int_bld->zero, *level1_out, ""); + + *lod_fpart_inout = LLVMBuildSelect(builder, clamp_min, + float_bld->zero, *lod_fpart_inout, ""); + + /* lod_ipart >= last_level */ + clamp_max = LLVMBuildICmp(builder, LLVMIntSGE, + lod_ipart, last_level, + "clamp_lod_to_last"); + + *level0_out = LLVMBuildSelect(builder, clamp_max, + int_bld->zero, *level0_out, ""); + + *level1_out = LLVMBuildSelect(builder, clamp_max, + int_bld->zero, *level1_out, ""); + + *lod_fpart_inout = LLVMBuildSelect(builder, clamp_max, + float_bld->zero, *lod_fpart_inout, ""); - /* compute level 0 and clamp to legal range of levels */ - *level0_out = lp_build_clamp(int_bld, level, - int_bld->zero, - last_level); - /* compute level 1 and clamp to legal range of levels */ - level = lp_build_add(int_bld, level, int_bld->one); - *level1_out = lp_build_clamp(int_bld, level, - int_bld->zero, - last_level); + lp_build_name(*level0_out, "sampler%u_miplevel0", unit); + lp_build_name(*level1_out, "sampler%u_miplevel1", unit); + lp_build_name(*lod_fpart_inout, "sampler%u_mipweight", unit); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index 76f428d4be1..e5d7f10778f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -309,6 +309,7 @@ void lp_build_linear_mip_levels(struct lp_build_sample_context *bld, unsigned unit, LLVMValueRef lod_ipart, + LLVMValueRef *lod_fpart_inout, LLVMValueRef *level0_out, LLVMValueRef *level1_out); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 511090ed14d..293237c5b1e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -1004,7 +1004,9 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, case PIPE_TEX_MIPFILTER_LINEAR: assert(lod_ipart); assert(lod_fpart); - lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); + lp_build_linear_mip_levels(bld, unit, + lod_ipart, &lod_fpart, + &ilevel0, &ilevel1); break; } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 4adce4e8b32..886df7c29c0 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -997,7 +997,9 @@ lp_build_sample_general(struct lp_build_sample_context *bld, case PIPE_TEX_MIPFILTER_LINEAR: assert(lod_ipart); assert(lod_fpart); - lp_build_linear_mip_levels(bld, unit, lod_ipart, &ilevel0, &ilevel1); + lp_build_linear_mip_levels(bld, unit, + lod_ipart, &lod_fpart, + &ilevel0, &ilevel1); break; } -- cgit v1.2.3 From c8179ef5e8db46afd4efdf5cbb4d9c9d37e488f8 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 14:09:22 +0100 Subject: gallivm: Fix copy'n'paste typo in previous commit. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index cf6da2c2783..754902891b9 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -452,10 +452,10 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld, "clamp_lod_to_last"); *level0_out = LLVMBuildSelect(builder, clamp_max, - int_bld->zero, *level0_out, ""); + last_level, *level0_out, ""); *level1_out = LLVMBuildSelect(builder, clamp_max, - int_bld->zero, *level1_out, ""); + last_level, *level1_out, ""); *lod_fpart_inout = LLVMBuildSelect(builder, clamp_max, float_bld->zero, *lod_fpart_inout, ""); -- cgit v1.2.3 From eb605701aa4af9ea44004008256a5707e470738c Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 15:50:28 +0100 Subject: gallivm: Implement brilinear filtering. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 90 ++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 754902891b9..f23ede33197 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -39,12 +39,20 @@ #include "lp_bld_arit.h" #include "lp_bld_const.h" #include "lp_bld_debug.h" +#include "lp_bld_printf.h" #include "lp_bld_flow.h" #include "lp_bld_sample.h" #include "lp_bld_swizzle.h" #include "lp_bld_type.h" +/* + * Bri-linear factor. Use zero or any other number less than one to force + * tri-linear filtering. + */ +#define BRILINEAR_FACTOR 2 + + /** * Does the given texture wrap mode allow sampling the texture border color? * XXX maybe move this into gallium util code. @@ -254,6 +262,79 @@ lp_build_rho(struct lp_build_sample_context *bld, } +/* + * Bri-linear lod computation + * + * Use a piece-wise linear approximation of log2 such that: + * - round to nearest, for values in the neighborhood of -1, 0, 1, 2, etc. + * - linear approximation for values in the neighborhood of 0.5, 1.5., etc, + * with the steepness specified in 'factor' + * - exact result for 0.5, 1.5, etc. + * + * + * 1.0 - /----* + * / + * / + * / + * 0.5 - * + * / + * / + * / + * 0.0 - *----/ + * + * | | + * 2^0 2^1 + * + * This is a technique also commonly used in hardware: + * - http://ixbtlabs.com/articles2/gffx/nv40-rx800-3.html + * + * TODO: For correctness, this should only be applied when texture is known to + * have regular mipmaps, i.e., mipmaps derived from the base level. + * + * TODO: This could be done in fixed point, where applicable. + */ +static void +lp_build_brilinear_lod(struct lp_build_sample_context *bld, + LLVMValueRef lod, + double factor, + LLVMValueRef *out_lod_ipart, + LLVMValueRef *out_lod_fpart) +{ + struct lp_build_context *float_bld = &bld->float_bld; + LLVMValueRef lod_fpart; + float pre_offset = (factor - 0.5)/factor - 0.5; + float post_offset = 1 - factor; + + if (0) { + lp_build_printf(bld->builder, "lod = %f\n", lod); + } + + lod = lp_build_add(float_bld, lod, + lp_build_const_vec(float_bld->type, pre_offset)); + + lp_build_ifloor_fract(float_bld, lod, out_lod_ipart, &lod_fpart); + + lod_fpart = lp_build_mul(float_bld, lod_fpart, + lp_build_const_vec(float_bld->type, factor)); + + lod_fpart = lp_build_add(float_bld, lod_fpart, + lp_build_const_vec(float_bld->type, post_offset)); + + /* + * It's not necessary to clamp lod_fpart since: + * - the above expression will never produce numbers greater than one. + * - the mip filtering branch is only taken if lod_fpart is positive + */ + + *out_lod_fpart = lod_fpart; + + if (0) { + lp_build_printf(bld->builder, "lod_ipart = %i\n", *out_lod_ipart); + lp_build_printf(bld->builder, "lod_fpart = %f\n\n", *out_lod_fpart); + } +} + + /** * Generate code to compute texture level of detail (lambda). * \param ddx partial derivatives of (s, t, r, q) with respect to X @@ -359,7 +440,14 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, } if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - lp_build_ifloor_fract(float_bld, lod, out_lod_ipart, out_lod_fpart); + if (BRILINEAR_FACTOR > 1.0) { + lp_build_brilinear_lod(bld, lod, BRILINEAR_FACTOR, + out_lod_ipart, out_lod_fpart); + } + else { + lp_build_ifloor_fract(float_bld, lod, out_lod_ipart, out_lod_fpart); + } + lp_build_name(*out_lod_ipart, "lod_ipart"); lp_build_name(*out_lod_fpart, "lod_fpart"); } -- cgit v1.2.3 From ad6730fadbbeacea96322e31064ede9ea7ebad6f Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 8 Oct 2010 17:01:16 +0100 Subject: llvmpipe: fail gracefully on oom in scene creation --- src/gallium/drivers/llvmpipe/lp_setup.c | 97 ++++++++++++++++++------- src/gallium/drivers/llvmpipe/lp_setup_context.h | 6 +- src/gallium/drivers/llvmpipe/lp_setup_line.c | 5 +- src/gallium/drivers/llvmpipe/lp_setup_point.c | 5 +- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 15 ++-- src/gallium/drivers/llvmpipe/lp_setup_vbuf.c | 6 +- 6 files changed, 92 insertions(+), 42 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index e72ead0def4..e96f012f1bb 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -56,7 +56,7 @@ #include "draw/draw_vbuf.h" -static void set_scene_state( struct lp_setup_context *, enum setup_state, +static boolean set_scene_state( struct lp_setup_context *, enum setup_state, const char *reason); static boolean try_update_scene_state( struct lp_setup_context *setup ); @@ -167,7 +167,7 @@ lp_setup_rasterize_scene( struct lp_setup_context *setup ) -static void +static boolean begin_binning( struct lp_setup_context *setup ) { struct lp_scene *scene = setup->scene; @@ -181,6 +181,8 @@ begin_binning( struct lp_setup_context *setup ) /* Always create a fence: */ scene->fence = lp_fence_create(MAX2(1, setup->num_threads)); + if (!scene->fence) + return FALSE; /* Initialize the bin flags and x/y coords: */ @@ -192,7 +194,8 @@ begin_binning( struct lp_setup_context *setup ) } ok = try_update_scene_state(setup); - assert(ok); + if (!ok) + return FALSE; if (setup->fb.zsbuf && ((setup->clear.flags & PIPE_CLEAR_DEPTHSTENCIL) != PIPE_CLEAR_DEPTHSTENCIL) && @@ -208,7 +211,8 @@ begin_binning( struct lp_setup_context *setup ) ok = lp_scene_bin_everywhere( scene, LP_RAST_OP_CLEAR_COLOR, setup->clear.color ); - assert(ok); + if (!ok) + return FALSE; } } @@ -216,12 +220,14 @@ begin_binning( struct lp_setup_context *setup ) if (setup->clear.flags & PIPE_CLEAR_DEPTHSTENCIL) { if (!need_zsload) scene->has_depthstencil_clear = TRUE; + ok = lp_scene_bin_everywhere( scene, LP_RAST_OP_CLEAR_ZSTENCIL, lp_rast_arg_clearzs( setup->clear.zsvalue, setup->clear.zsmask)); - assert(ok); + if (!ok) + return FALSE; } } @@ -229,15 +235,16 @@ begin_binning( struct lp_setup_context *setup ) ok = lp_scene_bin_everywhere( scene, LP_RAST_OP_BEGIN_QUERY, lp_rast_arg_query(setup->active_query) ); - assert(ok); + if (!ok) + return FALSE; } - setup->clear.flags = 0; setup->clear.zsmask = 0; setup->clear.zsvalue = 0; LP_DBG(DEBUG_SETUP, "%s done\n", __FUNCTION__); + return TRUE; } @@ -246,12 +253,12 @@ begin_binning( struct lp_setup_context *setup ) * * TODO: fast path for fullscreen clears and no triangles. */ -static void +static boolean execute_clears( struct lp_setup_context *setup ) { LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__); - begin_binning( setup ); + return begin_binning( setup ); } const char *states[] = { @@ -262,7 +269,7 @@ const char *states[] = { }; -static void +static boolean set_scene_state( struct lp_setup_context *setup, enum setup_state new_state, const char *reason) @@ -270,7 +277,7 @@ set_scene_state( struct lp_setup_context *setup, unsigned old_state = setup->state; if (old_state == new_state) - return; + return TRUE; if (LP_DEBUG & DEBUG_SCENE) { debug_printf("%s old %s new %s%s%s\n", @@ -294,12 +301,14 @@ set_scene_state( struct lp_setup_context *setup, break; case SETUP_ACTIVE: - begin_binning( setup ); + if (!begin_binning( setup )) + goto fail; break; case SETUP_FLUSHED: if (old_state == SETUP_CLEARED) - execute_clears( setup ); + if (!execute_clears( setup )) + goto fail; lp_setup_rasterize_scene( setup ); assert(setup->scene == NULL); @@ -307,9 +316,21 @@ set_scene_state( struct lp_setup_context *setup, default: assert(0 && "invalid setup state mode"); + goto fail; } setup->state = new_state; + return TRUE; + +fail: + if (setup->scene) { + lp_scene_end_rasterization(setup->scene); + setup->scene = NULL; + } + + setup->state = SETUP_FLUSHED; + lp_setup_reset( setup ); + return FALSE; } @@ -878,7 +899,7 @@ try_update_scene_state( struct lp_setup_context *setup ) return TRUE; } -void +boolean lp_setup_update_state( struct lp_setup_context *setup, boolean update_scene ) { @@ -902,20 +923,38 @@ lp_setup_update_state( struct lp_setup_context *setup, assert(lp->dirty == 0); } - if (update_scene) - set_scene_state( setup, SETUP_ACTIVE, __FUNCTION__ ); + if (update_scene) { + if (!set_scene_state( setup, SETUP_ACTIVE, __FUNCTION__ )) + return FALSE; + } /* Only call into update_scene_state() if we already have a * scene: */ if (update_scene && setup->scene) { assert(setup->state == SETUP_ACTIVE); - if (!try_update_scene_state(setup)) { - lp_setup_flush_and_restart(setup); - if (!try_update_scene_state(setup)) - assert(0); - } + + if (try_update_scene_state(setup)) + return TRUE; + + /* Update failed, try to restart the scene. + * + * Cannot call lp_setup_flush_and_restart() directly here + * because of potential recursion. + */ + if (!set_scene_state(setup, SETUP_FLUSHED, __FUNCTION__)) + return FALSE; + + if (!set_scene_state(setup, SETUP_ACTIVE, __FUNCTION__)) + return FALSE; + + if (!setup->scene) + return FALSE; + + return try_update_scene_state(setup); } + + return TRUE; } @@ -1019,12 +1058,12 @@ lp_setup_begin_query(struct lp_setup_context *setup, LP_RAST_OP_BEGIN_QUERY, lp_rast_arg_query(pq))) { - lp_setup_flush_and_restart(setup); + if (!lp_setup_flush_and_restart(setup)) + return; if (!lp_scene_bin_everywhere(setup->scene, LP_RAST_OP_BEGIN_QUERY, lp_rast_arg_query(pq))) { - assert(0); return; } } @@ -1068,14 +1107,20 @@ lp_setup_end_query(struct lp_setup_context *setup, struct llvmpipe_query *pq) } -void +boolean lp_setup_flush_and_restart(struct lp_setup_context *setup) { if (0) debug_printf("%s\n", __FUNCTION__); assert(setup->state == SETUP_ACTIVE); - set_scene_state(setup, SETUP_FLUSHED, __FUNCTION__); - lp_setup_update_state(setup, TRUE); + + if (!set_scene_state(setup, SETUP_FLUSHED, __FUNCTION__)) + return FALSE; + + if (!lp_setup_update_state(setup, TRUE)) + return FALSE; + + return TRUE; } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h index 8506ed2dc9e..e7b425ebcbc 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_context.h +++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h @@ -160,12 +160,12 @@ void lp_setup_choose_point( struct lp_setup_context *setup ); void lp_setup_init_vbuf(struct lp_setup_context *setup); -void lp_setup_update_state( struct lp_setup_context *setup, +boolean lp_setup_update_state( struct lp_setup_context *setup, boolean update_scene); void lp_setup_destroy( struct lp_setup_context *setup ); -void lp_setup_flush_and_restart(struct lp_setup_context *setup); +boolean lp_setup_flush_and_restart(struct lp_setup_context *setup); void lp_setup_print_triangle(struct lp_setup_context *setup, @@ -191,6 +191,4 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, const struct u_rect *bbox, int nr_planes ); -void lp_setup_flush_and_restart(struct lp_setup_context *setup); - #endif diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index 156bd633754..4d7d6235b07 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -712,10 +712,11 @@ static void lp_setup_line( struct lp_setup_context *setup, { if (!try_setup_line( setup, v0, v1 )) { - lp_setup_flush_and_restart(setup); + if (!lp_setup_flush_and_restart(setup)) + return; if (!try_setup_line( setup, v0, v1 )) - assert(0); + return; } } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 1295aeecd87..31d85f43c2f 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -414,10 +414,11 @@ lp_setup_point(struct lp_setup_context *setup, { if (!try_setup_point( setup, v0 )) { - lp_setup_flush_and_restart(setup); + if (!lp_setup_flush_and_restart(setup)) + return; if (!try_setup_point( setup, v0 )) - assert(0); + return; } } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 9016bb8e249..eeffbb5fee0 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -644,27 +644,30 @@ static void triangle_cw( struct lp_setup_context *setup, { if (!do_triangle_ccw( setup, v1, v0, v2, !setup->ccw_is_frontface )) { - lp_setup_flush_and_restart(setup); + if (!lp_setup_flush_and_restart(setup)) + return; if (!do_triangle_ccw( setup, v1, v0, v2, !setup->ccw_is_frontface )) - assert(0); + return; } } /** - * Draw triangle if it's CCW, cull otherwise. + * Draw triangle if it's CW, cull otherwise. */ -static void triangle_ccw( struct lp_setup_context *setup, +static void triangle_cw( struct lp_setup_context *setup, const float (*v0)[4], const float (*v1)[4], const float (*v2)[4] ) { if (!do_triangle_ccw( setup, v0, v1, v2, setup->ccw_is_frontface )) { - lp_setup_flush_and_restart(setup); + if (!lp_setup_flush_and_restart(setup)) + return; + if (!do_triangle_ccw( setup, v0, v1, v2, setup->ccw_is_frontface )) - assert(0); + return; } } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c b/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c index 6308561f242..9c1f0fe7939 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c @@ -141,7 +141,8 @@ lp_setup_draw_elements(struct vbuf_render *vbr, const ushort *indices, uint nr) const boolean flatshade_first = setup->flatshade_first; unsigned i; - lp_setup_update_state(setup, TRUE); + if (!lp_setup_update_state(setup, TRUE)) + return; switch (setup->prim) { case PIPE_PRIM_POINTS: @@ -338,7 +339,8 @@ lp_setup_draw_arrays(struct vbuf_render *vbr, uint start, uint nr) const boolean flatshade_first = setup->flatshade_first; unsigned i; - lp_setup_update_state(setup, TRUE); + if (!lp_setup_update_state(setup, TRUE)) + return; switch (setup->prim) { case PIPE_PRIM_POINTS: -- cgit v1.2.3 From 29d6a1483d6c4ecb9c34989423e025b3784ec019 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 8 Oct 2010 17:06:05 +0100 Subject: llvmpipe: avoid overflow in triangle culling Avoid multiplying fixed-point values. Calculate triangle area in floating point use that for culling. Lift area calculations up a level as we are already doing this in the triangle_both() case. Would like to share the calculated area with attribute interpolation, but the way the code is structured makes this difficult. --- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 79 ++++++++++++++--------------- 1 file changed, 39 insertions(+), 40 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index eeffbb5fee0..0d57f13f61b 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -228,7 +228,6 @@ do_triangle_ccw(struct lp_setup_context *setup, struct lp_rast_triangle *tri; int x[3]; int y[3]; - int area; struct u_rect bbox; unsigned tri_bytes; int i; @@ -312,21 +311,8 @@ do_triangle_ccw(struct lp_setup_context *setup, tri->plane[1].dcdx = y[1] - y[2]; tri->plane[2].dcdx = y[2] - y[0]; - area = (tri->plane[0].dcdy * tri->plane[2].dcdx - - tri->plane[2].dcdy * tri->plane[0].dcdx); - LP_COUNT(nr_tris); - /* Cull non-ccw and zero-sized triangles. - * - * XXX: subject to overflow?? - */ - if (area <= 0) { - lp_scene_putback_data( scene, tri_bytes ); - LP_COUNT(nr_culled_tris); - return TRUE; - } - /* Setup parameter interpolants: */ lp_setup_tri_coef( setup, &tri->inputs, v0, v1, v2, frontfacing ); @@ -635,23 +621,36 @@ fail: /** - * Draw triangle if it's CW, cull otherwise. + * Try to draw the triangle, restart the scene on failure. */ -static void triangle_cw( struct lp_setup_context *setup, - const float (*v0)[4], - const float (*v1)[4], - const float (*v2)[4] ) +static void retry_triangle_ccw( struct lp_setup_context *setup, + const float (*v0)[4], + const float (*v1)[4], + const float (*v2)[4], + boolean front) { - if (!do_triangle_ccw( setup, v1, v0, v2, !setup->ccw_is_frontface )) + if (!do_triangle_ccw( setup, v0, v1, v2, front )) { if (!lp_setup_flush_and_restart(setup)) return; - if (!do_triangle_ccw( setup, v1, v0, v2, !setup->ccw_is_frontface )) + if (!do_triangle_ccw( setup, v0, v1, v2, front )) return; } } +static INLINE float +calc_area(const float (*v0)[4], + const float (*v1)[4], + const float (*v2)[4]) +{ + float dx01 = v0[0][0] - v1[0][0]; + float dy01 = v0[0][1] - v1[0][1]; + float dx20 = v2[0][0] - v0[0][0]; + float dy20 = v2[0][1] - v0[0][1]; + return dx01 * dy20 - dx20 * dy01; +} + /** * Draw triangle if it's CW, cull otherwise. @@ -661,17 +660,23 @@ static void triangle_cw( struct lp_setup_context *setup, const float (*v1)[4], const float (*v2)[4] ) { - if (!do_triangle_ccw( setup, v0, v1, v2, setup->ccw_is_frontface )) - { - if (!lp_setup_flush_and_restart(setup)) - return; + float area = calc_area(v0, v1, v2); - if (!do_triangle_ccw( setup, v0, v1, v2, setup->ccw_is_frontface )) - return; - } + if (area < 0.0f) + retry_triangle_ccw(setup, v0, v2, v1, !setup->ccw_is_frontface); } +static void triangle_ccw( struct lp_setup_context *setup, + const float (*v0)[4], + const float (*v1)[4], + const float (*v2)[4]) +{ + float area = calc_area(v0, v1, v2); + + if (area > 0.0f) + retry_triangle_ccw(setup, v0, v1, v2, setup->ccw_is_frontface); +} /** * Draw triangle whether it's CW or CCW. @@ -681,18 +686,12 @@ static void triangle_both( struct lp_setup_context *setup, const float (*v1)[4], const float (*v2)[4] ) { - /* edge vectors e = v0 - v2, f = v1 - v2 */ - const float ex = v0[0][0] - v2[0][0]; - const float ey = v0[0][1] - v2[0][1]; - const float fx = v1[0][0] - v2[0][0]; - const float fy = v1[0][1] - v2[0][1]; - - /* det = cross(e,f).z */ - const float det = ex * fy - ey * fx; - if (det < 0.0f) - triangle_ccw( setup, v0, v1, v2 ); - else if (det > 0.0f) - triangle_cw( setup, v0, v1, v2 ); + float area = calc_area(v0, v1, v2); + + if (area > 0.0f) + retry_triangle_ccw( setup, v0, v1, v2, setup->ccw_is_frontface ); + else if (area < 0.0f) + retry_triangle_ccw( setup, v0, v2, v1, !setup->ccw_is_frontface ); } -- cgit v1.2.3 From 607e3c542cedd645da91c96abfe6698623acf503 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Mon, 4 Oct 2010 15:00:34 +0100 Subject: gallivm: special case conversion 4x4f to 1x16ub Nice reduction in the number of operations required for final color output in many shaders. --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 84 +++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 8b477313d48..605eb043c73 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -69,6 +69,7 @@ #include "lp_bld_arit.h" #include "lp_bld_pack.h" #include "lp_bld_conv.h" +#include "lp_bld_intr.h" /** @@ -241,6 +242,89 @@ lp_build_conv(LLVMBuilderRef builder, } num_tmps = num_srcs; + + /* Special case 4x4f --> 1x16ub + */ + if (src_type.floating == 1 && + src_type.fixed == 0 && + src_type.sign == 1 && + src_type.norm == 0 && + src_type.width == 32 && + src_type.length == 4 && + + dst_type.floating == 0 && + dst_type.fixed == 0 && + dst_type.sign == 0 && + dst_type.norm == 1 && + dst_type.width == 8 && + dst_type.length == 16) + { + int i; + + for (i = 0; i < num_dsts; i++, src += 4) { + struct lp_type int16_type = dst_type; + struct lp_type int32_type = dst_type; + LLVMValueRef lo, hi; + LLVMValueRef src_int0; + LLVMValueRef src_int1; + LLVMValueRef src_int2; + LLVMValueRef src_int3; + LLVMTypeRef int16_vec_type; + LLVMTypeRef int32_vec_type; + LLVMTypeRef src_vec_type; + LLVMTypeRef dst_vec_type; + LLVMValueRef const_255f; + + int16_type.width *= 2; + int16_type.length /= 2; + int16_type.sign = 1; + + int32_type.width *= 4; + int32_type.length /= 4; + int32_type.sign = 1; + + src_vec_type = lp_build_vec_type(src_type); + dst_vec_type = lp_build_vec_type(dst_type); + int16_vec_type = lp_build_vec_type(int16_type); + int32_vec_type = lp_build_vec_type(int32_type); + + const_255f = lp_build_const_vec(src_type, 255.0); + + src_int0 = LLVMBuildFPToSI(builder, + LLVMBuildFMul(builder, src[0], const_255f, ""), + int32_vec_type, ""); + + src_int1 = LLVMBuildFPToSI(builder, + LLVMBuildFMul(builder, src[1], const_255f, ""), + int32_vec_type, ""); + + src_int2 = LLVMBuildFPToSI(builder, + LLVMBuildFMul(builder, src[2], const_255f, ""), + int32_vec_type, ""); + + src_int3 = LLVMBuildFPToSI(builder, + LLVMBuildFMul(builder, src[3], const_255f, ""), + int32_vec_type, ""); + +#if HAVE_LLVM >= 0x0207 + lo = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", + int16_vec_type, src_int0, src_int1); + hi = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", + int16_vec_type, src_int2, src_int3); + dst[i] = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packuswb.128", + dst_vec_type, lo, hi); +#else + lo = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", + int32_vec_type, src_int0, src_int1); + hi = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", + int32_vec_type, src_int2, src_int3); + dst[i] = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packuswb.128", + int16_vec_type, lo, hi); +#endif + } + return; + } + /* * Clamp if necessary */ -- cgit v1.2.3 From f91b4266c6ca950b267bc8968091c85de8cae032 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 4 Oct 2010 17:42:18 +0100 Subject: gallivm: Use the wrappers for SSE pack intrinsics. Fixes assertion failures on LLVM 2.6. --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 605eb043c73..40c66187520 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -306,21 +306,9 @@ lp_build_conv(LLVMBuilderRef builder, LLVMBuildFMul(builder, src[3], const_255f, ""), int32_vec_type, ""); -#if HAVE_LLVM >= 0x0207 - lo = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", - int16_vec_type, src_int0, src_int1); - hi = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", - int16_vec_type, src_int2, src_int3); - dst[i] = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packuswb.128", - dst_vec_type, lo, hi); -#else - lo = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", - int32_vec_type, src_int0, src_int1); - hi = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packssdw.128", - int32_vec_type, src_int2, src_int3); - dst[i] = lp_build_intrinsic_binary(builder, "llvm.x86.sse2.packuswb.128", - int16_vec_type, lo, hi); -#endif + lo = lp_build_pack2(builder, int32_type, int16_type, src_int0, src_int1); + hi = lp_build_pack2(builder, int32_type, int16_type, src_int2, src_int3); + dst[i] = lp_build_pack2(builder, int16_type, dst_type, lo, hi); } return; } -- cgit v1.2.3 From e191bf4a8591c8bbccda606a72ed5b90a9db8f72 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 6 Oct 2010 11:48:10 +0100 Subject: gallivm: round rather than truncate in new 4x4f->1x16ub conversion path --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 59 ++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 17 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 40c66187520..b5ed4c2d9b7 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -63,6 +63,7 @@ #include "util/u_debug.h" #include "util/u_math.h" +#include "util/u_cpu_detect.h" #include "lp_bld_type.h" #include "lp_bld_const.h" @@ -274,6 +275,7 @@ lp_build_conv(LLVMBuilderRef builder, LLVMTypeRef src_vec_type; LLVMTypeRef dst_vec_type; LLVMValueRef const_255f; + LLVMValueRef a, b, c, d; int16_type.width *= 2; int16_type.length /= 2; @@ -288,23 +290,46 @@ lp_build_conv(LLVMBuilderRef builder, int16_vec_type = lp_build_vec_type(int16_type); int32_vec_type = lp_build_vec_type(int32_type); - const_255f = lp_build_const_vec(src_type, 255.0); - - src_int0 = LLVMBuildFPToSI(builder, - LLVMBuildFMul(builder, src[0], const_255f, ""), - int32_vec_type, ""); - - src_int1 = LLVMBuildFPToSI(builder, - LLVMBuildFMul(builder, src[1], const_255f, ""), - int32_vec_type, ""); - - src_int2 = LLVMBuildFPToSI(builder, - LLVMBuildFMul(builder, src[2], const_255f, ""), - int32_vec_type, ""); - - src_int3 = LLVMBuildFPToSI(builder, - LLVMBuildFMul(builder, src[3], const_255f, ""), - int32_vec_type, ""); + const_255f = lp_build_const_vec(src_type, 255.0f); + + a = LLVMBuildFMul(builder, src[0], const_255f, ""); + b = LLVMBuildFMul(builder, src[1], const_255f, ""); + c = LLVMBuildFMul(builder, src[2], const_255f, ""); + d = LLVMBuildFMul(builder, src[3], const_255f, ""); + + /* lp_build_round generates excessively general code without + * sse4, so do rounding manually. + */ + if (!util_cpu_caps.has_sse4_1) { + LLVMValueRef const_half = lp_build_const_vec(src_type, 0.5f); + + a = LLVMBuildFAdd(builder, a, const_half, ""); + b = LLVMBuildFAdd(builder, b, const_half, ""); + c = LLVMBuildFAdd(builder, c, const_half, ""); + d = LLVMBuildFAdd(builder, d, const_half, ""); + + src_int0 = LLVMBuildFPToSI(builder, a, int32_vec_type, ""); + src_int1 = LLVMBuildFPToSI(builder, b, int32_vec_type, ""); + src_int2 = LLVMBuildFPToSI(builder, c, int32_vec_type, ""); + src_int3 = LLVMBuildFPToSI(builder, d, int32_vec_type, ""); + } + else { + struct lp_build_context bld; + + bld.builder = builder; + bld.type = src_type; + bld.vec_type = src_vec_type; + bld.int_elem_type = lp_build_elem_type(int32_type); + bld.int_vec_type = int32_vec_type; + bld.undef = lp_build_undef(src_type); + bld.zero = lp_build_zero(src_type); + bld.one = lp_build_one(src_type); + + src_int0 = lp_build_iround(&bld, a); + src_int1 = lp_build_iround(&bld, b); + src_int2 = lp_build_iround(&bld, c); + src_int3 = lp_build_iround(&bld, d); + } lo = lp_build_pack2(builder, int32_type, int16_type, src_int0, src_int1); hi = lp_build_pack2(builder, int32_type, int16_type, src_int2, src_int3); -- cgit v1.2.3 From eeb13e2352d7a44881b011cb3232bb80aee0c826 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 23 Sep 2010 19:56:48 +0100 Subject: llvmpipe: clean up setup_tri a little --- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 53 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 27 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 0d57f13f61b..9f871011d8b 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -473,33 +473,6 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, int sz = floor_pot((bbox->x1 - (bbox->x0 & ~3)) | (bbox->y1 - (bbox->y0 & ~3))); - if (nr_planes == 3) { - if (sz < 4 && dx < 64) - { - /* Triangle is contained in a single 4x4 stamp: - */ - int mask = (bbox->x0 & 63 & ~3) | ((bbox->y0 & 63 & ~3) << 8); - - return lp_scene_bin_command( scene, - bbox->x0/64, bbox->y0/64, - LP_RAST_OP_TRIANGLE_3_4, - lp_rast_arg_triangle(tri, mask) ); - } - - if (sz < 16 && dx < 64) - { - int mask = (bbox->x0 & 63 & ~3) | ((bbox->y0 & 63 & ~3) << 8); - - /* Triangle is contained in a single 16x16 block: - */ - return lp_scene_bin_command( scene, - bbox->x0/64, bbox->y0/64, - LP_RAST_OP_TRIANGLE_3_16, - lp_rast_arg_triangle(tri, mask) ); - } - } - - /* Determine which tile(s) intersect the triangle's bounding box */ if (dx < TILE_SIZE) @@ -510,6 +483,32 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, assert(iy0 == bbox->y1 / TILE_SIZE && ix0 == bbox->x1 / TILE_SIZE); + if (nr_planes == 3) { + int px = bbox->x0 & 63 & ~3; + int py = bbox->y0 & 63 & ~3; + int mask = px | (py << 8); + + if (sz < 4) + { + /* Triangle is contained in a single 4x4 stamp: + */ + + return lp_scene_bin_command( scene, ix0, iy0, + LP_RAST_OP_TRIANGLE_3_4, + lp_rast_arg_triangle(tri, mask) ); + } + + if (sz < 16) + { + /* Triangle is contained in a single 16x16 block: + */ + return lp_scene_bin_command( scene, ix0, iy0, + LP_RAST_OP_TRIANGLE_3_16, + lp_rast_arg_triangle(tri, mask) ); + } + } + + /* Triangle is contained in a single tile: */ return lp_scene_bin_command( scene, ix0, iy0, -- cgit v1.2.3 From 0ff132e5a633170afaed0aea54d01438c895b8ab Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 8 Oct 2010 17:21:03 +0100 Subject: llvmpipe: add rast_tri_4_16 for small lines and points --- src/gallium/drivers/llvmpipe/lp_rast.c | 1 + src/gallium/drivers/llvmpipe/lp_rast.h | 11 +- src/gallium/drivers/llvmpipe/lp_rast_debug.c | 1 + src/gallium/drivers/llvmpipe/lp_rast_priv.h | 4 + src/gallium/drivers/llvmpipe/lp_rast_tri.c | 152 +++---------------------- src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h | 127 +++++++++++++++++++++ src/gallium/drivers/llvmpipe/lp_setup_tri.c | 13 ++- 7 files changed, 161 insertions(+), 148 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index 790d88a7450..db9b2f9b128 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -597,6 +597,7 @@ static lp_rast_cmd_func dispatch[LP_RAST_OP_MAX] = lp_rast_triangle_8, lp_rast_triangle_3_4, lp_rast_triangle_3_16, + lp_rast_triangle_4_16, lp_rast_shade_tile, lp_rast_shade_tile_opaque, lp_rast_begin_query, diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h index 0f62377c072..df0bea04b9a 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.h +++ b/src/gallium/drivers/llvmpipe/lp_rast.h @@ -238,12 +238,13 @@ lp_rast_arg_null( void ) #define LP_RAST_OP_TRIANGLE_8 0x9 #define LP_RAST_OP_TRIANGLE_3_4 0xa #define LP_RAST_OP_TRIANGLE_3_16 0xb -#define LP_RAST_OP_SHADE_TILE 0xc -#define LP_RAST_OP_SHADE_TILE_OPAQUE 0xd -#define LP_RAST_OP_BEGIN_QUERY 0xe -#define LP_RAST_OP_END_QUERY 0xf +#define LP_RAST_OP_TRIANGLE_4_16 0xc +#define LP_RAST_OP_SHADE_TILE 0xd +#define LP_RAST_OP_SHADE_TILE_OPAQUE 0xe +#define LP_RAST_OP_BEGIN_QUERY 0xf +#define LP_RAST_OP_END_QUERY 0x10 -#define LP_RAST_OP_MAX 0x10 +#define LP_RAST_OP_MAX 0x11 #define LP_RAST_OP_MASK 0xff void diff --git a/src/gallium/drivers/llvmpipe/lp_rast_debug.c b/src/gallium/drivers/llvmpipe/lp_rast_debug.c index 9fc78645a3a..6f4ba1c6fef 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_debug.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_debug.c @@ -42,6 +42,7 @@ static const char *cmd_names[LP_RAST_OP_MAX] = "triangle_8", "triangle_3_4", "triangle_3_16", + "triangle_4_16", "shade_tile", "shade_tile_opaque", "begin_query", diff --git a/src/gallium/drivers/llvmpipe/lp_rast_priv.h b/src/gallium/drivers/llvmpipe/lp_rast_priv.h index 7370119e966..104000a040c 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_priv.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_priv.h @@ -293,6 +293,10 @@ void lp_rast_triangle_3_4(struct lp_rasterizer_task *, void lp_rast_triangle_3_16( struct lp_rasterizer_task *, const union lp_rast_cmd_arg ); + +void lp_rast_triangle_4_16( struct lp_rasterizer_task *, + const union lp_rast_cmd_arg ); + void lp_debug_bin( const struct cmd_bin *bin ); diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index a1f309d4b01..f870a187db5 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -122,6 +122,16 @@ lp_rast_triangle_3_16(struct lp_rasterizer_task *task, lp_rast_triangle_3(task, arg2); } +void +lp_rast_triangle_4_16(struct lp_rasterizer_task *task, + const union lp_rast_cmd_arg arg) +{ + union lp_rast_cmd_arg arg2; + arg2.triangle.tri = arg.triangle.tri; + arg2.triangle.plane_mask = (1<<4)-1; + lp_rast_triangle_3(task, arg2); +} + void lp_rast_triangle_3_4(struct lp_rasterizer_task *task, const union lp_rast_cmd_arg arg) @@ -229,145 +239,6 @@ sign_bits4(const __m128i *cstep, int cdiff) return _mm_movemask_epi8(result); } - -/* Special case for 3 plane triangle which is contained entirely - * within a 16x16 block. - */ -void -lp_rast_triangle_3_16(struct lp_rasterizer_task *task, - const union lp_rast_cmd_arg arg) -{ - const struct lp_rast_triangle *tri = arg.triangle.tri; - const struct lp_rast_plane *plane = tri->plane; - unsigned mask = arg.triangle.plane_mask; - const int x = task->x + (mask & 0xff); - const int y = task->y + (mask >> 8); - unsigned outmask, inmask, partmask, partial_mask; - unsigned j; - __m128i cstep4[3][4]; - - outmask = 0; /* outside one or more trivial reject planes */ - partmask = 0; /* outside one or more trivial accept planes */ - - for (j = 0; j < 3; j++) { - const int dcdx = -plane[j].dcdx * 4; - const int dcdy = plane[j].dcdy * 4; - __m128i xdcdy = _mm_set1_epi32(dcdy); - - cstep4[j][0] = _mm_setr_epi32(0, dcdx, dcdx*2, dcdx*3); - cstep4[j][1] = _mm_add_epi32(cstep4[j][0], xdcdy); - cstep4[j][2] = _mm_add_epi32(cstep4[j][1], xdcdy); - cstep4[j][3] = _mm_add_epi32(cstep4[j][2], xdcdy); - - { - const int c = plane[j].c + plane[j].dcdy * y - plane[j].dcdx * x; - const int cox = plane[j].eo * 4; - const int cio = plane[j].ei * 4 - 1; - - outmask |= sign_bits4(cstep4[j], c + cox); - partmask |= sign_bits4(cstep4[j], c + cio); - } - } - - if (outmask == 0xffff) - return; - - /* Mask of sub-blocks which are inside all trivial accept planes: - */ - inmask = ~partmask & 0xffff; - - /* Mask of sub-blocks which are inside all trivial reject planes, - * but outside at least one trivial accept plane: - */ - partial_mask = partmask & ~outmask; - - assert((partial_mask & inmask) == 0); - - /* Iterate over partials: - */ - while (partial_mask) { - int i = ffs(partial_mask) - 1; - int ix = (i & 3) * 4; - int iy = (i >> 2) * 4; - int px = x + ix; - int py = y + iy; - unsigned mask = 0xffff; - - partial_mask &= ~(1 << i); - - for (j = 0; j < 3; j++) { - const int cx = (plane[j].c - - plane[j].dcdx * px - + plane[j].dcdy * py) * 4; - - mask &= ~sign_bits4(cstep4[j], cx); - } - - if (mask) - lp_rast_shade_quads_mask(task, &tri->inputs, px, py, mask); - } - - /* Iterate over fulls: - */ - while (inmask) { - int i = ffs(inmask) - 1; - int ix = (i & 3) * 4; - int iy = (i >> 2) * 4; - int px = x + ix; - int py = y + iy; - - inmask &= ~(1 << i); - - block_full_4(task, tri, px, py); - } -} - - -void -lp_rast_triangle_3_4(struct lp_rasterizer_task *task, - const union lp_rast_cmd_arg arg) -{ - const struct lp_rast_triangle *tri = arg.triangle.tri; - const struct lp_rast_plane *plane = tri->plane; - unsigned mask = arg.triangle.plane_mask; - const int x = task->x + (mask & 0xff); - const int y = task->y + (mask >> 8); - unsigned j; - - /* Iterate over partials: - */ - { - unsigned mask = 0xffff; - - for (j = 0; j < 3; j++) { - const int cx = (plane[j].c - - plane[j].dcdx * x - + plane[j].dcdy * y); - - const int dcdx = -plane[j].dcdx; - const int dcdy = plane[j].dcdy; - __m128i xdcdy = _mm_set1_epi32(dcdy); - - __m128i cstep0 = _mm_setr_epi32(cx, cx + dcdx, cx + dcdx*2, cx + dcdx*3); - __m128i cstep1 = _mm_add_epi32(cstep0, xdcdy); - __m128i cstep2 = _mm_add_epi32(cstep1, xdcdy); - __m128i cstep3 = _mm_add_epi32(cstep2, xdcdy); - - __m128i cstep01 = _mm_packs_epi32(cstep0, cstep1); - __m128i cstep23 = _mm_packs_epi32(cstep2, cstep3); - __m128i result = _mm_packs_epi16(cstep01, cstep23); - - /* Extract the sign bits - */ - mask &= ~_mm_movemask_epi8(result); - } - - if (mask) - lp_rast_shade_quads_mask(task, &tri->inputs, x, y, mask); - } -} - - #endif @@ -383,10 +254,13 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task, #define TAG(x) x##_3 #define NR_PLANES 3 +#define TRI_4 lp_rast_triangle_3_4 +#define TRI_16 lp_rast_triangle_3_16 #include "lp_rast_tri_tmp.h" #define TAG(x) x##_4 #define NR_PLANES 4 +#define TRI_16 lp_rast_triangle_4_16 #include "lp_rast_tri_tmp.h" #define TAG(x) x##_5 diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h index 9830a43ba55..c8f9956fda4 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h @@ -245,6 +245,133 @@ TAG(lp_rast_triangle)(struct lp_rasterizer_task *task, } } +#if defined(PIPE_ARCH_SSE) && defined(TRI_16) +/* XXX: special case this when intersection is not required. + * - tile completely within bbox, + * - bbox completely within tile. + */ +void +TRI_16(struct lp_rasterizer_task *task, + const union lp_rast_cmd_arg arg) +{ + const struct lp_rast_triangle *tri = arg.triangle.tri; + const struct lp_rast_plane *plane = tri->plane; + unsigned mask = arg.triangle.plane_mask; + unsigned outmask, partial_mask; + unsigned j; + __m128i cstep4[NR_PLANES][4]; + + int x = (mask & 0xff); + int y = (mask >> 8); + + outmask = 0; /* outside one or more trivial reject planes */ + + x += task->x; + y += task->y; + + for (j = 0; j < NR_PLANES; j++) { + const int dcdx = -plane[j].dcdx * 4; + const int dcdy = plane[j].dcdy * 4; + __m128i xdcdy = _mm_set1_epi32(dcdy); + + cstep4[j][0] = _mm_setr_epi32(0, dcdx, dcdx*2, dcdx*3); + cstep4[j][1] = _mm_add_epi32(cstep4[j][0], xdcdy); + cstep4[j][2] = _mm_add_epi32(cstep4[j][1], xdcdy); + cstep4[j][3] = _mm_add_epi32(cstep4[j][2], xdcdy); + + { + const int c = plane[j].c + plane[j].dcdy * y - plane[j].dcdx * x; + const int cox = plane[j].eo * 4; + + outmask |= sign_bits4(cstep4[j], c + cox); + } + } + + if (outmask == 0xffff) + return; + + + /* Mask of sub-blocks which are inside all trivial reject planes, + * but outside at least one trivial accept plane: + */ + partial_mask = 0xffff & ~outmask; + + /* Iterate over partials: + */ + while (partial_mask) { + int i = ffs(partial_mask) - 1; + int ix = (i & 3) * 4; + int iy = (i >> 2) * 4; + int px = x + ix; + int py = y + iy; + unsigned mask = 0xffff; + + partial_mask &= ~(1 << i); + + for (j = 0; j < NR_PLANES; j++) { + const int cx = (plane[j].c + - plane[j].dcdx * px + + plane[j].dcdy * py) * 4; + + mask &= ~sign_bits4(cstep4[j], cx); + } + + if (mask) + lp_rast_shade_quads_mask(task, &tri->inputs, px, py, mask); + } +} +#endif + +#if defined(PIPE_ARCH_SSE) && defined(TRI_4) +void +TRI_4(struct lp_rasterizer_task *task, + const union lp_rast_cmd_arg arg) +{ + const struct lp_rast_triangle *tri = arg.triangle.tri; + const struct lp_rast_plane *plane = tri->plane; + unsigned mask = arg.triangle.plane_mask; + const int x = task->x + (mask & 0xff); + const int y = task->y + (mask >> 8); + unsigned j; + + /* Iterate over partials: + */ + { + unsigned mask = 0xffff; + + for (j = 0; j < NR_PLANES; j++) { + const int cx = (plane[j].c + - plane[j].dcdx * x + + plane[j].dcdy * y); + + const int dcdx = -plane[j].dcdx; + const int dcdy = plane[j].dcdy; + __m128i xdcdy = _mm_set1_epi32(dcdy); + + __m128i cstep0 = _mm_setr_epi32(cx, cx + dcdx, cx + dcdx*2, cx + dcdx*3); + __m128i cstep1 = _mm_add_epi32(cstep0, xdcdy); + __m128i cstep2 = _mm_add_epi32(cstep1, xdcdy); + __m128i cstep3 = _mm_add_epi32(cstep2, xdcdy); + + __m128i cstep01 = _mm_packs_epi32(cstep0, cstep1); + __m128i cstep23 = _mm_packs_epi32(cstep2, cstep3); + __m128i result = _mm_packs_epi16(cstep01, cstep23); + + /* Extract the sign bits + */ + mask &= ~_mm_movemask_epi8(result); + } + + if (mask) + lp_rast_shade_quads_mask(task, &tri->inputs, x, y, mask); + } +} +#endif + + + #undef TAG +#undef TRI_4 +#undef TRI_16 #undef NR_PLANES diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 9f871011d8b..8fd034666c3 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -479,15 +479,14 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, { int ix0 = bbox->x0 / TILE_SIZE; int iy0 = bbox->y0 / TILE_SIZE; + int px = bbox->x0 & 63 & ~3; + int py = bbox->y0 & 63 & ~3; + int mask = px | (py << 8); assert(iy0 == bbox->y1 / TILE_SIZE && ix0 == bbox->x1 / TILE_SIZE); if (nr_planes == 3) { - int px = bbox->x0 & 63 & ~3; - int py = bbox->y0 & 63 & ~3; - int mask = px | (py << 8); - if (sz < 4) { /* Triangle is contained in a single 4x4 stamp: @@ -507,6 +506,12 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, lp_rast_arg_triangle(tri, mask) ); } } + else if (nr_planes == 4 && sz < 16) + { + return lp_scene_bin_command( scene, ix0, iy0, + LP_RAST_OP_TRIANGLE_4_16, + lp_rast_arg_triangle(tri, mask) ); + } /* Triangle is contained in a single tile: -- cgit v1.2.3 From ef3407672ed4c2c6d070384ea763e73b3da2240a Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 5 Oct 2010 16:50:22 +0100 Subject: llvmpipe: fix off-by-one in tri_16 --- src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h index c8f9956fda4..2f032295126 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h @@ -309,7 +309,7 @@ TRI_16(struct lp_rasterizer_task *task, partial_mask &= ~(1 << i); for (j = 0; j < NR_PLANES; j++) { - const int cx = (plane[j].c + const int cx = (plane[j].c - 1 - plane[j].dcdx * px + plane[j].dcdy * py) * 4; -- cgit v1.2.3 From d5ef59d8b0ce2ea8f0ad983951e696d1679e3eb7 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 16:56:45 +0100 Subject: gallivm: Avoid control flow for two-sided stencil test. --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 150 +++++++++++----------------- 1 file changed, 58 insertions(+), 92 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 7561899a74e..7eabe0508de 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -128,57 +128,32 @@ lp_build_stencil_test_single(struct lp_build_context *bld, /** * Do the one or two-sided stencil test comparison. * \sa lp_build_stencil_test_single - * \param face an integer indicating front (+) or back (-) facing polygon. - * If NULL, assume front-facing. + * \param front_facing an integer vector mask, indicating front (~0) or back + * (0) facing polygon. If NULL, assume front-facing. */ static LLVMValueRef lp_build_stencil_test(struct lp_build_context *bld, const struct pipe_stencil_state stencil[2], LLVMValueRef stencilRefs[2], LLVMValueRef stencilVals, - LLVMValueRef face) + LLVMValueRef front_facing) { LLVMValueRef res; assert(stencil[0].enabled); - if (stencil[1].enabled && face) { - /* do two-sided test */ - struct lp_build_flow_context *flow_ctx; - struct lp_build_if_state if_ctx; - LLVMValueRef front_facing; - LLVMValueRef zero = LLVMConstReal(LLVMFloatType(), 0.0); - LLVMValueRef result = bld->undef; + /* do front face test */ + res = lp_build_stencil_test_single(bld, &stencil[0], + stencilRefs[0], stencilVals); - flow_ctx = lp_build_flow_create(bld->builder); - lp_build_flow_scope_begin(flow_ctx); + if (stencil[1].enabled && front_facing) { + /* do back face test */ + LLVMValueRef back_res; - lp_build_flow_scope_declare(flow_ctx, &result); + back_res = lp_build_stencil_test_single(bld, &stencil[1], + stencilRefs[1], stencilVals); - /* front_facing = face > 0.0 */ - front_facing = LLVMBuildFCmp(bld->builder, LLVMRealUGT, face, zero, ""); - - lp_build_if(&if_ctx, flow_ctx, bld->builder, front_facing); - { - result = lp_build_stencil_test_single(bld, &stencil[0], - stencilRefs[0], stencilVals); - } - lp_build_else(&if_ctx); - { - result = lp_build_stencil_test_single(bld, &stencil[1], - stencilRefs[1], stencilVals); - } - lp_build_endif(&if_ctx); - - lp_build_flow_scope_end(flow_ctx); - lp_build_flow_destroy(flow_ctx); - - res = result; - } - else { - /* do single-side test */ - res = lp_build_stencil_test_single(bld, &stencil[0], - stencilRefs[0], stencilVals); + res = lp_build_select(bld, front_facing, res, back_res); } return res; @@ -195,14 +170,12 @@ lp_build_stencil_op_single(struct lp_build_context *bld, const struct pipe_stencil_state *stencil, enum stencil_op op, LLVMValueRef stencilRef, - LLVMValueRef stencilVals, - LLVMValueRef mask) + LLVMValueRef stencilVals) { - const unsigned stencilMax = 255; /* XXX fix */ struct lp_type type = bld->type; LLVMValueRef res; - LLVMValueRef max = lp_build_const_int_vec(type, stencilMax); + LLVMValueRef max = lp_build_const_int_vec(type, 0xff); unsigned stencil_op; assert(type.sign); @@ -255,19 +228,7 @@ lp_build_stencil_op_single(struct lp_build_context *bld, break; default: assert(0 && "bad stencil op mode"); - res = NULL; - } - - if (stencil->writemask != stencilMax) { - /* mask &= stencil->writemask */ - LLVMValueRef writemask = lp_build_const_int_vec(type, stencil->writemask); - mask = LLVMBuildAnd(bld->builder, mask, writemask, ""); - /* res = (res & mask) | (stencilVals & ~mask) */ - res = lp_build_select_bitwise(bld, writemask, res, stencilVals); - } - else { - /* res = mask ? res : stencilVals */ - res = lp_build_select(bld, mask, res, stencilVals); + res = bld->undef; } return res; @@ -284,49 +245,40 @@ lp_build_stencil_op(struct lp_build_context *bld, LLVMValueRef stencilRefs[2], LLVMValueRef stencilVals, LLVMValueRef mask, - LLVMValueRef face) + LLVMValueRef front_facing) { - assert(stencil[0].enabled); + LLVMValueRef res; - if (stencil[1].enabled && face) { - /* do two-sided op */ - struct lp_build_flow_context *flow_ctx; - struct lp_build_if_state if_ctx; - LLVMValueRef front_facing; - LLVMValueRef zero = LLVMConstReal(LLVMFloatType(), 0.0); - LLVMValueRef result = bld->undef; + assert(stencil[0].enabled); - flow_ctx = lp_build_flow_create(bld->builder); - lp_build_flow_scope_begin(flow_ctx); + /* do front face op */ + res = lp_build_stencil_op_single(bld, &stencil[0], op, + stencilRefs[0], stencilVals); - lp_build_flow_scope_declare(flow_ctx, &result); + if (stencil[1].enabled && front_facing) { + /* do back face op */ + LLVMValueRef back_res; - /* front_facing = face > 0.0 */ - front_facing = LLVMBuildFCmp(bld->builder, LLVMRealUGT, face, zero, ""); + back_res = lp_build_stencil_op_single(bld, &stencil[1], op, + stencilRefs[1], stencilVals); - lp_build_if(&if_ctx, flow_ctx, bld->builder, front_facing); - { - result = lp_build_stencil_op_single(bld, &stencil[0], op, - stencilRefs[0], stencilVals, mask); - } - lp_build_else(&if_ctx); - { - result = lp_build_stencil_op_single(bld, &stencil[1], op, - stencilRefs[1], stencilVals, mask); - } - lp_build_endif(&if_ctx); - - lp_build_flow_scope_end(flow_ctx); - lp_build_flow_destroy(flow_ctx); + res = lp_build_select(bld, front_facing, res, back_res); + } - return result; + if (stencil->writemask != 0xff) { + /* mask &= stencil->writemask */ + LLVMValueRef writemask = lp_build_const_int_vec(bld->type, stencil->writemask); + mask = LLVMBuildAnd(bld->builder, mask, writemask, ""); + /* res = (res & mask) | (stencilVals & ~mask) */ + res = lp_build_select_bitwise(bld, writemask, res, stencilVals); } else { - /* do single-sided op */ - return lp_build_stencil_op_single(bld, &stencil[0], op, - stencilRefs[0], stencilVals, mask); + /* res = mask ? res : stencilVals */ + res = lp_build_select(bld, mask, res, stencilVals); } + + return res; } @@ -519,6 +471,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef z_bitmask = NULL, stencil_shift = NULL; LLVMValueRef z_pass = NULL, s_pass_mask = NULL; LLVMValueRef orig_mask = mask->value; + LLVMValueRef front_facing = NULL; /* Sanity checking */ { @@ -616,21 +569,34 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } } - if (stencil[0].enabled) { + + if (face) { + LLVMValueRef zero = LLVMConstReal(LLVMFloatType(), 0.0); + + /* front_facing = face > 0.0 ? ~0 : 0 */ + front_facing = LLVMBuildFCmp(builder, LLVMRealUGT, face, zero, ""); + front_facing = LLVMBuildSExt(builder, front_facing, + LLVMIntType(bld.type.length*bld.type.width), + ""); + front_facing = LLVMBuildBitCast(builder, front_facing, + bld.int_vec_type, ""); + } + /* convert scalar stencil refs into vectors */ stencil_refs[0] = lp_build_broadcast_scalar(&bld, stencil_refs[0]); stencil_refs[1] = lp_build_broadcast_scalar(&bld, stencil_refs[1]); s_pass_mask = lp_build_stencil_test(&sbld, stencil, - stencil_refs, stencil_vals, face); + stencil_refs, stencil_vals, + front_facing); /* apply stencil-fail operator */ { LLVMValueRef s_fail_mask = lp_build_andnot(&bld, orig_mask, s_pass_mask); stencil_vals = lp_build_stencil_op(&sbld, stencil, S_FAIL_OP, stencil_refs, stencil_vals, - s_fail_mask, face); + s_fail_mask, front_facing); } } @@ -676,13 +642,13 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, z_fail_mask = lp_build_andnot(&bld, orig_mask, z_pass); stencil_vals = lp_build_stencil_op(&sbld, stencil, Z_FAIL_OP, stencil_refs, stencil_vals, - z_fail_mask, face); + z_fail_mask, front_facing); /* apply Z-pass operator */ z_pass_mask = LLVMBuildAnd(bld.builder, orig_mask, z_pass, ""); stencil_vals = lp_build_stencil_op(&sbld, stencil, Z_PASS_OP, stencil_refs, stencil_vals, - z_pass_mask, face); + z_pass_mask, front_facing); } } else { @@ -692,7 +658,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, s_pass_mask = LLVMBuildAnd(bld.builder, orig_mask, s_pass_mask, ""); stencil_vals = lp_build_stencil_op(&sbld, stencil, Z_PASS_OP, stencil_refs, stencil_vals, - s_pass_mask, face); + s_pass_mask, front_facing); } /* The Z bits are already in the right place but we may need to shift the -- cgit v1.2.3 From 6b0c79e058d4d008cad32c0ff06de9757ccd6fa0 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 17:37:18 +0100 Subject: gallivm: Warn when doing inefficient integer comparisons. --- src/gallium/auxiliary/gallivm/lp_bld_logic.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_logic.c b/src/gallium/auxiliary/gallivm/lp_bld_logic.c index d5c62a3f734..ce5d0214b43 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_logic.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_logic.c @@ -92,9 +92,23 @@ lp_build_compare(LLVMBuilderRef builder, if(func == PIPE_FUNC_ALWAYS) return ones; - /* TODO: optimize the constant case */ +#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) + /* + * There are no unsigned integer comparison instructions in SSE. + */ - /* XXX: It is not clear if we should use the ordered or unordered operators */ + if (!type.floating && !type.sign && + type.width * type.length == 128 && + util_cpu_caps.has_sse2 && + (func == PIPE_FUNC_LESS || + func == PIPE_FUNC_LEQUAL || + func == PIPE_FUNC_GREATER || + func == PIPE_FUNC_GEQUAL) && + (gallivm_debug & GALLIVM_DEBUG_PERF)) { + debug_printf("%s: inefficient <%u x i%u> unsigned comparison\n", + __FUNCTION__, type.length, type.width); + } +#endif #if HAVE_LLVM < 0x0207 #if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) @@ -225,6 +239,8 @@ lp_build_compare(LLVMBuilderRef builder, #endif #endif /* HAVE_LLVM < 0x0207 */ + /* XXX: It is not clear if we should use the ordered or unordered operators */ + if(type.floating) { LLVMRealPredicate op; switch(func) { -- cgit v1.2.3 From f5b5fb32d3a9eb8667f91907bcf065fe8bd4988d Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 18:24:54 +0100 Subject: gallivm: Move into the as much of the second level code as possible. Also, pass more stuff trhough the sample build context, instead of arguments. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 34 ++--- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 29 ++-- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 114 ++++++---------- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h | 9 -- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 153 ++++++++-------------- 5 files changed, 120 insertions(+), 219 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index f23ede33197..f01a878777f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -190,7 +190,7 @@ lp_build_rho(struct lp_build_sample_context *bld, { struct lp_build_context *float_size_bld = &bld->float_size_bld; struct lp_build_context *float_bld = &bld->float_bld; - const int dims = texture_dims(bld->static_state->target); + const unsigned dims = bld->dims; LLVMTypeRef i32t = LLVMInt32Type(); LLVMValueRef index0 = LLVMConstInt(i32t, 0, 0); LLVMValueRef index1 = LLVMConstInt(i32t, 1, 0); @@ -355,9 +355,6 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, const LLVMValueRef ddy[4], LLVMValueRef lod_bias, /* optional */ LLVMValueRef explicit_lod, /* optional */ - LLVMValueRef width, - LLVMValueRef height, - LLVMValueRef depth, unsigned mip_filter, LLVMValueRef *out_lod_ipart, LLVMValueRef *out_lod_fpart) @@ -561,12 +558,12 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld, */ LLVMValueRef lp_build_get_mipmap_level(struct lp_build_sample_context *bld, - LLVMValueRef data_array, LLVMValueRef level) + LLVMValueRef level) { LLVMValueRef indexes[2], data_ptr; indexes[0] = LLVMConstInt(LLVMInt32Type(), 0, 0); indexes[1] = level; - data_ptr = LLVMBuildGEP(bld->builder, data_array, indexes, 2, ""); + data_ptr = LLVMBuildGEP(bld->builder, bld->data_array, indexes, 2, ""); data_ptr = LLVMBuildLoad(bld->builder, data_ptr, ""); return data_ptr; } @@ -574,10 +571,10 @@ lp_build_get_mipmap_level(struct lp_build_sample_context *bld, LLVMValueRef lp_build_get_const_mipmap_level(struct lp_build_sample_context *bld, - LLVMValueRef data_array, int level) + int level) { LLVMValueRef lvl = LLVMConstInt(LLVMInt32Type(), level, 0); - return lp_build_get_mipmap_level(bld, data_array, lvl); + return lp_build_get_mipmap_level(bld, lvl); } @@ -628,19 +625,14 @@ lp_build_get_level_stride_vec(struct lp_build_sample_context *bld, */ void lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, - unsigned dims, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, LLVMValueRef ilevel, - LLVMValueRef row_stride_array, - LLVMValueRef img_stride_array, LLVMValueRef *out_width_vec, LLVMValueRef *out_height_vec, LLVMValueRef *out_depth_vec, LLVMValueRef *row_stride_vec, LLVMValueRef *img_stride_vec) { + const unsigned dims = bld->dims; LLVMValueRef ilevel_vec; ilevel_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, ilevel); @@ -648,18 +640,18 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, /* * Compute width, height, depth at mipmap level 'ilevel' */ - *out_width_vec = lp_build_minify(bld, width_vec, ilevel_vec); + *out_width_vec = lp_build_minify(bld, bld->width_vec, ilevel_vec); if (dims >= 2) { - *out_height_vec = lp_build_minify(bld, height_vec, ilevel_vec); + *out_height_vec = lp_build_minify(bld, bld->height_vec, ilevel_vec); *row_stride_vec = lp_build_get_level_stride_vec(bld, - row_stride_array, - ilevel); + bld->row_stride_array, + ilevel); if (dims == 3 || bld->static_state->target == PIPE_TEXTURE_CUBE) { *img_stride_vec = lp_build_get_level_stride_vec(bld, - img_stride_array, - ilevel); + bld->img_stride_array, + ilevel); if (dims == 3) { - *out_depth_vec = lp_build_minify(bld, depth_vec, ilevel_vec); + *out_depth_vec = lp_build_minify(bld, bld->depth_vec, ilevel_vec); } } } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index e5d7f10778f..44c8fc57647 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -179,6 +179,9 @@ struct lp_build_sample_context const struct util_format_description *format_desc; + /* See texture_dims() */ + unsigned dims; + /** regular scalar float type */ struct lp_type float_type; struct lp_build_context float_bld; @@ -214,8 +217,21 @@ struct lp_build_sample_context struct lp_type texel_type; struct lp_build_context texel_bld; + /* Common dynamic state values */ + LLVMValueRef width; + LLVMValueRef height; + LLVMValueRef depth; + LLVMValueRef row_stride_array; + LLVMValueRef img_stride_array; + LLVMValueRef data_array; + /** Unsigned vector with texture width, height, depth */ LLVMValueRef uint_size; + + /* width, height, depth as uint vectors */ + LLVMValueRef width_vec; + LLVMValueRef height_vec; + LLVMValueRef depth_vec; }; @@ -292,9 +308,6 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, const LLVMValueRef ddy[4], LLVMValueRef lod_bias, /* optional */ LLVMValueRef explicit_lod, /* optional */ - LLVMValueRef width, - LLVMValueRef height, - LLVMValueRef depth, unsigned mip_filter, LLVMValueRef *out_lod_ipart, LLVMValueRef *out_lod_fpart); @@ -315,22 +328,16 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld, LLVMValueRef lp_build_get_mipmap_level(struct lp_build_sample_context *bld, - LLVMValueRef data_array, LLVMValueRef level); + LLVMValueRef level); LLVMValueRef lp_build_get_const_mipmap_level(struct lp_build_sample_context *bld, - LLVMValueRef data_array, int level); + int level); void lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, - unsigned dims, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, LLVMValueRef ilevel, - LLVMValueRef row_stride_array, - LLVMValueRef img_stride_array, LLVMValueRef *out_width_vec, LLVMValueRef *out_height_vec, LLVMValueRef *out_depth_vec, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 293237c5b1e..e7410448c04 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -265,7 +265,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, LLVMValueRef *colors_lo, LLVMValueRef *colors_hi) { - const int dims = texture_dims(bld->static_state->target); + const unsigned dims = bld->dims; LLVMBuilderRef builder = bld->builder; struct lp_build_context i32, h16, u8n; LLVMTypeRef i32_vec_type, h16_vec_type, u8n_vec_type; @@ -429,7 +429,7 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, LLVMValueRef *colors_lo, LLVMValueRef *colors_hi) { - const int dims = texture_dims(bld->static_state->target); + const unsigned dims = bld->dims; LLVMBuilderRef builder = bld->builder; struct lp_build_context i32, h16, u8n; LLVMTypeRef i32_vec_type, h16_vec_type, u8n_vec_type; @@ -781,27 +781,34 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMValueRef s, LLVMValueRef t, LLVMValueRef r, + LLVMValueRef ilevel0, + LLVMValueRef ilevel1, LLVMValueRef lod_fpart, - LLVMValueRef width0_vec, - LLVMValueRef width1_vec, - LLVMValueRef height0_vec, - LLVMValueRef height1_vec, - LLVMValueRef depth0_vec, - LLVMValueRef depth1_vec, - LLVMValueRef row_stride0_vec, - LLVMValueRef row_stride1_vec, - LLVMValueRef img_stride0_vec, - LLVMValueRef img_stride1_vec, - LLVMValueRef data_ptr0, - LLVMValueRef data_ptr1, LLVMValueRef colors_lo_var, LLVMValueRef colors_hi_var) { LLVMBuilderRef builder = bld->builder; + LLVMValueRef width0_vec; + LLVMValueRef width1_vec; + LLVMValueRef height0_vec; + LLVMValueRef height1_vec; + LLVMValueRef depth0_vec; + LLVMValueRef depth1_vec; + LLVMValueRef row_stride0_vec; + LLVMValueRef row_stride1_vec; + LLVMValueRef img_stride0_vec; + LLVMValueRef img_stride1_vec; + LLVMValueRef data_ptr0; + LLVMValueRef data_ptr1; LLVMValueRef colors0_lo, colors0_hi; LLVMValueRef colors1_lo, colors1_hi; + /* sample the first mipmap level */ + lp_build_mipmap_level_sizes(bld, ilevel0, + &width0_vec, &height0_vec, &depth0_vec, + &row_stride0_vec, &img_stride0_vec); + data_ptr0 = lp_build_get_mipmap_level(bld, ilevel0); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, width0_vec, height0_vec, depth0_vec, @@ -846,6 +853,10 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, lp_build_context_init(&h16_bld, builder, lp_type_ufixed(16)); /* sample the second mipmap level */ + lp_build_mipmap_level_sizes(bld, ilevel1, + &width1_vec, &height1_vec, &depth1_vec, + &row_stride1_vec, &img_stride1_vec); + data_ptr1 = lp_build_get_mipmap_level(bld, ilevel1); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, width1_vec, height1_vec, depth1_vec, @@ -897,15 +908,6 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, const LLVMValueRef *ddy, LLVMValueRef lod_bias, /* optional */ LLVMValueRef explicit_lod, /* optional */ - LLVMValueRef width, - LLVMValueRef height, - LLVMValueRef depth, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, - LLVMValueRef row_stride_array, - LLVMValueRef img_stride_array, - LLVMValueRef data_array, LLVMValueRef texel_out[4]) { struct lp_build_context *int_bld = &bld->int_bld; @@ -913,18 +915,15 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, const unsigned mip_filter = bld->static_state->min_mip_filter; const unsigned min_filter = bld->static_state->min_img_filter; const unsigned mag_filter = bld->static_state->mag_img_filter; - const int dims = texture_dims(bld->static_state->target); + const unsigned dims = bld->dims; LLVMValueRef lod_ipart = NULL, lod_fpart = NULL; LLVMValueRef ilevel0, ilevel1 = NULL; - LLVMValueRef width0_vec = NULL, height0_vec = NULL, depth0_vec = NULL; - LLVMValueRef width1_vec = NULL, height1_vec = NULL, depth1_vec = NULL; - LLVMValueRef row_stride0_vec = NULL, row_stride1_vec = NULL; - LLVMValueRef img_stride0_vec = NULL, img_stride1_vec = NULL; - LLVMValueRef data_ptr0, data_ptr1 = NULL; LLVMValueRef packed, packed_lo, packed_hi; LLVMValueRef unswizzled[4]; LLVMValueRef face_ddx[4], face_ddy[4]; struct lp_build_context h16_bld; + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMValueRef i32t_zero = LLVMConstInt(i32t, 0, 0); /* we only support the common/simple wrap modes at this time */ assert(lp_is_simple_wrap_mode(bld->static_state->wrap_s)); @@ -969,11 +968,10 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, */ lp_build_lod_selector(bld, unit, ddx, ddy, lod_bias, explicit_lod, - width, height, depth, mip_filter, &lod_ipart, &lod_fpart); } else { - lod_ipart = LLVMConstInt(LLVMInt32Type(), 0, 0); + lod_ipart = i32t_zero; } /* @@ -994,7 +992,7 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); } else { - ilevel0 = LLVMConstInt(LLVMInt32Type(), 0, 0); + ilevel0 = i32t_zero; } break; case PIPE_TEX_MIPFILTER_NEAREST: @@ -1010,28 +1008,6 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, break; } - /* compute image size(s) of source mipmap level(s) */ - lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, - ilevel0, - row_stride_array, img_stride_array, - &width0_vec, &height0_vec, &depth0_vec, - &row_stride0_vec, &img_stride0_vec); - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, - ilevel1, - row_stride_array, img_stride_array, - &width1_vec, &height1_vec, &depth1_vec, - &row_stride1_vec, &img_stride1_vec); - } - - /* - * Get pointer(s) to image data for mipmap level(s). - */ - data_ptr0 = lp_build_get_mipmap_level(bld, data_array, ilevel0); - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - data_ptr1 = lp_build_get_mipmap_level(bld, data_array, ilevel1); - } - /* * Get/interpolate texture colors. */ @@ -1043,13 +1019,8 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, /* no need to distinquish between minification and magnification */ lp_build_sample_mipmap(bld, min_filter, mip_filter, - s, t, r, lod_fpart, - width0_vec, width1_vec, - height0_vec, height1_vec, - depth0_vec, depth1_vec, - row_stride0_vec, row_stride1_vec, - img_stride0_vec, img_stride1_vec, - data_ptr0, data_ptr1, + s, t, r, + ilevel0, ilevel1, lod_fpart, packed_lo, packed_hi); } else { @@ -1069,14 +1040,10 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, lp_build_if(&if_ctx, flow_ctx, builder, minify); { /* Use the minification filter */ - lp_build_sample_mipmap(bld, min_filter, mip_filter, - s, t, r, lod_fpart, - width0_vec, width1_vec, - height0_vec, height1_vec, - depth0_vec, depth1_vec, - row_stride0_vec, row_stride1_vec, - img_stride0_vec, img_stride1_vec, - data_ptr0, data_ptr1, + lp_build_sample_mipmap(bld, + min_filter, mip_filter, + s, t, r, + ilevel0, ilevel1, lod_fpart, packed_lo, packed_hi); } lp_build_else(&if_ctx); @@ -1084,13 +1051,8 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, /* Use the magnification filter */ lp_build_sample_mipmap(bld, mag_filter, PIPE_TEX_MIPFILTER_NONE, - s, t, r, NULL, - width_vec, NULL, - height_vec, NULL, - depth_vec, NULL, - row_stride0_vec, NULL, - img_stride0_vec, NULL, - data_ptr0, NULL, + s, t, r, + i32t_zero, NULL, NULL, packed_lo, packed_hi); } lp_build_endif(&if_ctx); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h index e1045bbbc21..5d9ecac4d50 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h @@ -50,15 +50,6 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, const LLVMValueRef *ddy, LLVMValueRef lod_bias, /* optional */ LLVMValueRef explicit_lod, /* optional */ - LLVMValueRef width, - LLVMValueRef height, - LLVMValueRef depth, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, - LLVMValueRef row_stride_array, - LLVMValueRef img_stride_array, - LLVMValueRef data_array, LLVMValueRef texel_out[4]); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 886df7c29c0..158c6e6a79f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -82,7 +82,7 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld, LLVMValueRef texel_out[4]) { const struct lp_sampler_static_state *static_state = bld->static_state; - const int dims = texture_dims(static_state->target); + const unsigned dims = bld->dims; struct lp_build_context *int_coord_bld = &bld->int_coord_bld; LLVMValueRef offset; LLVMValueRef i, j; @@ -565,7 +565,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, LLVMValueRef r, LLVMValueRef colors_out[4]) { - const int dims = texture_dims(bld->static_state->target); + const unsigned dims = bld->dims; LLVMValueRef x, y, z; /* @@ -628,7 +628,7 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, LLVMValueRef r, LLVMValueRef colors_out[4]) { - const int dims = texture_dims(bld->static_state->target); + const unsigned dims = bld->dims; LLVMValueRef x0, y0, z0, x1, y1, z1; LLVMValueRef s_fpart, t_fpart, r_fpart; LLVMValueRef neighbors[2][2][4]; @@ -790,26 +790,32 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMValueRef s, LLVMValueRef t, LLVMValueRef r, + LLVMValueRef ilevel0, + LLVMValueRef ilevel1, LLVMValueRef lod_fpart, - LLVMValueRef width0_vec, - LLVMValueRef width1_vec, - LLVMValueRef height0_vec, - LLVMValueRef height1_vec, - LLVMValueRef depth0_vec, - LLVMValueRef depth1_vec, - LLVMValueRef row_stride0_vec, - LLVMValueRef row_stride1_vec, - LLVMValueRef img_stride0_vec, - LLVMValueRef img_stride1_vec, - LLVMValueRef data_ptr0, - LLVMValueRef data_ptr1, LLVMValueRef *colors_out) { LLVMBuilderRef builder = bld->builder; + LLVMValueRef width0_vec; + LLVMValueRef width1_vec; + LLVMValueRef height0_vec; + LLVMValueRef height1_vec; + LLVMValueRef depth0_vec; + LLVMValueRef depth1_vec; + LLVMValueRef row_stride0_vec; + LLVMValueRef row_stride1_vec; + LLVMValueRef img_stride0_vec; + LLVMValueRef img_stride1_vec; + LLVMValueRef data_ptr0; + LLVMValueRef data_ptr1; LLVMValueRef colors0[4], colors1[4]; unsigned chan; /* sample the first mipmap level */ + lp_build_mipmap_level_sizes(bld, ilevel0, + &width0_vec, &height0_vec, &depth0_vec, + &row_stride0_vec, &img_stride0_vec); + data_ptr0 = lp_build_get_mipmap_level(bld, ilevel0); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, unit, width0_vec, height0_vec, depth0_vec, @@ -847,6 +853,10 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, lp_build_if(&if_ctx, flow_ctx, builder, need_lerp); { /* sample the second mipmap level */ + lp_build_mipmap_level_sizes(bld, ilevel1, + &width1_vec, &height1_vec, &depth1_vec, + &row_stride1_vec, &img_stride1_vec); + data_ptr1 = lp_build_get_mipmap_level(bld, ilevel1); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, unit, width1_vec, height1_vec, depth1_vec, @@ -895,15 +905,6 @@ lp_build_sample_general(struct lp_build_sample_context *bld, const LLVMValueRef *ddy, LLVMValueRef lod_bias, /* optional */ LLVMValueRef explicit_lod, /* optional */ - LLVMValueRef width, - LLVMValueRef height, - LLVMValueRef depth, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, - LLVMValueRef row_stride_array, - LLVMValueRef img_stride_array, - LLVMValueRef data_array, LLVMValueRef *colors_out) { struct lp_build_context *int_bld = &bld->int_bld; @@ -911,16 +912,12 @@ lp_build_sample_general(struct lp_build_sample_context *bld, const unsigned mip_filter = bld->static_state->min_mip_filter; const unsigned min_filter = bld->static_state->min_img_filter; const unsigned mag_filter = bld->static_state->mag_img_filter; - const int dims = texture_dims(bld->static_state->target); LLVMValueRef lod_ipart = NULL, lod_fpart = NULL; LLVMValueRef ilevel0, ilevel1 = NULL; - LLVMValueRef width0_vec = NULL, height0_vec = NULL, depth0_vec = NULL; - LLVMValueRef width1_vec = NULL, height1_vec = NULL, depth1_vec = NULL; - LLVMValueRef row_stride0_vec = NULL, row_stride1_vec = NULL; - LLVMValueRef img_stride0_vec = NULL, img_stride1_vec = NULL; - LLVMValueRef data_ptr0, data_ptr1 = NULL; LLVMValueRef face_ddx[4], face_ddy[4]; LLVMValueRef texels[4]; + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMValueRef i32t_zero = LLVMConstInt(i32t, 0, 0); unsigned chan; /* @@ -962,11 +959,10 @@ lp_build_sample_general(struct lp_build_sample_context *bld, */ lp_build_lod_selector(bld, unit, ddx, ddy, lod_bias, explicit_lod, - width, height, depth, mip_filter, &lod_ipart, &lod_fpart); } else { - lod_ipart = LLVMConstInt(LLVMInt32Type(), 0, 0); + lod_ipart = i32t_zero; } /* @@ -987,7 +983,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld, lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); } else { - ilevel0 = LLVMConstInt(LLVMInt32Type(), 0, 0); + ilevel0 = i32t_zero; } break; case PIPE_TEX_MIPFILTER_NEAREST: @@ -1003,28 +999,6 @@ lp_build_sample_general(struct lp_build_sample_context *bld, break; } - /* compute image size(s) of source mipmap level(s) */ - lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, - ilevel0, - row_stride_array, img_stride_array, - &width0_vec, &height0_vec, &depth0_vec, - &row_stride0_vec, &img_stride0_vec); - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - lp_build_mipmap_level_sizes(bld, dims, width_vec, height_vec, depth_vec, - ilevel1, - row_stride_array, img_stride_array, - &width1_vec, &height1_vec, &depth1_vec, - &row_stride1_vec, &img_stride1_vec); - } - - /* - * Get pointer(s) to image data for mipmap level(s). - */ - data_ptr0 = lp_build_get_mipmap_level(bld, data_array, ilevel0); - if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - data_ptr1 = lp_build_get_mipmap_level(bld, data_array, ilevel1); - } - /* * Get/interpolate texture colors. */ @@ -1038,13 +1012,8 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* no need to distinquish between minification and magnification */ lp_build_sample_mipmap(bld, unit, min_filter, mip_filter, - s, t, r, lod_fpart, - width0_vec, width1_vec, - height0_vec, height1_vec, - depth0_vec, depth1_vec, - row_stride0_vec, row_stride1_vec, - img_stride0_vec, img_stride1_vec, - data_ptr0, data_ptr1, + s, t, r, + ilevel0, ilevel1, lod_fpart, texels); } else { @@ -1066,13 +1035,8 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* Use the minification filter */ lp_build_sample_mipmap(bld, unit, min_filter, mip_filter, - s, t, r, lod_fpart, - width0_vec, width1_vec, - height0_vec, height1_vec, - depth0_vec, depth1_vec, - row_stride0_vec, row_stride1_vec, - img_stride0_vec, img_stride1_vec, - data_ptr0, data_ptr1, + s, t, r, + ilevel0, ilevel1, lod_fpart, texels); } lp_build_else(&if_ctx); @@ -1080,13 +1044,8 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* Use the magnification filter */ lp_build_sample_mipmap(bld, unit, mag_filter, PIPE_TEX_MIPFILTER_NONE, - s, t, r, NULL, - width_vec, NULL, - height_vec, NULL, - depth_vec, NULL, - row_stride0_vec, NULL, - img_stride0_vec, NULL, - data_ptr0, NULL, + s, t, r, + i32t_zero, NULL, NULL, texels); } lp_build_endif(&if_ctx); @@ -1183,11 +1142,7 @@ lp_build_sample_soa(LLVMBuilderRef builder, unsigned dims = texture_dims(static_state->target); struct lp_build_sample_context bld; LLVMTypeRef i32t = LLVMInt32Type(); - LLVMValueRef width, width_vec; - LLVMValueRef height, height_vec; - LLVMValueRef depth, depth_vec; - LLVMValueRef row_stride_array, img_stride_array; - LLVMValueRef data_array; + LLVMValueRef s; LLVMValueRef t; LLVMValueRef r; @@ -1206,6 +1161,7 @@ lp_build_sample_soa(LLVMBuilderRef builder, bld.static_state = static_state; bld.dynamic_state = dynamic_state; bld.format_desc = util_format_description(static_state->format); + bld.dims = dims; bld.float_type = lp_type_float(32); bld.int_type = lp_type_int(32); @@ -1230,12 +1186,12 @@ lp_build_sample_soa(LLVMBuilderRef builder, lp_build_context_init(&bld.texel_bld, builder, bld.texel_type); /* Get the dynamic state */ - width = dynamic_state->width(dynamic_state, builder, unit); - height = dynamic_state->height(dynamic_state, builder, unit); - depth = dynamic_state->depth(dynamic_state, builder, unit); - row_stride_array = dynamic_state->row_stride(dynamic_state, builder, unit); - img_stride_array = dynamic_state->img_stride(dynamic_state, builder, unit); - data_array = dynamic_state->data_ptr(dynamic_state, builder, unit); + bld.width = dynamic_state->width(dynamic_state, builder, unit); + bld.height = dynamic_state->height(dynamic_state, builder, unit); + bld.depth = dynamic_state->depth(dynamic_state, builder, unit); + bld.row_stride_array = dynamic_state->row_stride(dynamic_state, builder, unit); + bld.img_stride_array = dynamic_state->img_stride(dynamic_state, builder, unit); + bld.data_array = dynamic_state->data_ptr(dynamic_state, builder, unit); /* Note that data_array is an array[level] of pointers to texture images */ s = coords[0]; @@ -1244,25 +1200,25 @@ lp_build_sample_soa(LLVMBuilderRef builder, /* width, height, depth as single uint vector */ if (dims <= 1) { - bld.uint_size = width; + bld.uint_size = bld.width; } else { bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size_bld.undef, - width, LLVMConstInt(i32t, 0, 0), ""); + bld.width, LLVMConstInt(i32t, 0, 0), ""); if (dims >= 2) { bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, - height, LLVMConstInt(i32t, 1, 0), ""); + bld.height, LLVMConstInt(i32t, 1, 0), ""); if (dims >= 3) { bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, - depth, LLVMConstInt(i32t, 2, 0), ""); + bld.depth, LLVMConstInt(i32t, 2, 0), ""); } } } /* width, height, depth as uint vectors */ - width_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, width); - height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, height); - depth_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, depth); + bld.width_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.width); + bld.height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.height); + bld.depth_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.depth); if (0) { /* For debug: no-op texture sampling */ @@ -1274,10 +1230,7 @@ lp_build_sample_soa(LLVMBuilderRef builder, /* do sampling/filtering with fixed pt arithmetic */ lp_build_sample_aos(&bld, unit, s, t, r, ddx, ddy, lod_bias, explicit_lod, - width, height, depth, - width_vec, height_vec, depth_vec, - row_stride_array, img_stride_array, - data_array, texel_out); + texel_out); } else { @@ -1295,10 +1248,6 @@ lp_build_sample_soa(LLVMBuilderRef builder, lp_build_sample_general(&bld, unit, s, t, r, ddx, ddy, lod_bias, explicit_lod, - width, height, depth, - width_vec, height_vec, depth_vec, - row_stride_array, img_stride_array, - data_array, texel_out); } -- cgit v1.2.3 From 438390418d27838bcfcb5bbb4c486db45dbaa44d Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 19:11:32 +0100 Subject: llvmpipe: First minify the texture size, then broadcast. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 36 ++++++++++++++++++----- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 13 +++----- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 25 +++++++--------- 3 files changed, 42 insertions(+), 32 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index f01a878777f..6a684a9a0bf 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -235,7 +235,7 @@ lp_build_rho(struct lp_build_sample_context *bld, rho_vec = lp_build_max(float_size_bld, rho_x, rho_y); - float_size = lp_build_int_to_float(float_size_bld, bld->uint_size); + float_size = lp_build_int_to_float(float_size_bld, bld->int_size); rho_vec = lp_build_mul(float_size_bld, rho_vec, float_size); @@ -583,18 +583,22 @@ lp_build_get_const_mipmap_level(struct lp_build_sample_context *bld, * Return max(1, base_size >> level); */ static LLVMValueRef -lp_build_minify(struct lp_build_sample_context *bld, +lp_build_minify(struct lp_build_context *bld, LLVMValueRef base_size, LLVMValueRef level) { - if (level == bld->int_coord_bld.zero) { + assert(lp_check_value(bld->type, base_size)); + assert(lp_check_value(bld->type, level)); + + if (level == bld->zero) { /* if we're using mipmap level zero, no minification is needed */ return base_size; } else { LLVMValueRef size = LLVMBuildLShr(bld->builder, base_size, level, "minify"); - size = lp_build_max(&bld->int_coord_bld, size, bld->int_coord_bld.one); + assert(bld->type.sign); + size = lp_build_max(bld, size, bld->one); return size; } } @@ -634,15 +638,29 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, { const unsigned dims = bld->dims; LLVMValueRef ilevel_vec; + LLVMValueRef size_vec; + LLVMValueRef width, height, depth; + LLVMTypeRef i32t = LLVMInt32Type(); - ilevel_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, ilevel); + ilevel_vec = lp_build_broadcast_scalar(&bld->int_size_bld, ilevel); /* * Compute width, height, depth at mipmap level 'ilevel' */ - *out_width_vec = lp_build_minify(bld, bld->width_vec, ilevel_vec); + size_vec = lp_build_minify(&bld->int_size_bld, bld->int_size, ilevel_vec); + + if (dims <= 1) { + width = size_vec; + } + else { + width = LLVMBuildExtractElement(bld->builder, size_vec, + LLVMConstInt(i32t, 0, 0), ""); + } + *out_width_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, width); if (dims >= 2) { - *out_height_vec = lp_build_minify(bld, bld->height_vec, ilevel_vec); + height = LLVMBuildExtractElement(bld->builder, size_vec, + LLVMConstInt(i32t, 1, 0), ""); + *out_height_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, height); *row_stride_vec = lp_build_get_level_stride_vec(bld, bld->row_stride_array, ilevel); @@ -651,7 +669,9 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, bld->img_stride_array, ilevel); if (dims == 3) { - *out_depth_vec = lp_build_minify(bld, bld->depth_vec, ilevel_vec); + depth = LLVMBuildExtractElement(bld->builder, size_vec, + LLVMConstInt(i32t, 2, 0), ""); + *out_depth_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, depth); } } } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index 44c8fc57647..d1a1aa143d8 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -206,8 +206,8 @@ struct lp_build_sample_context struct lp_build_context int_coord_bld; /** Unsigned integer texture size */ - struct lp_type uint_size_type; - struct lp_build_context uint_size_bld; + struct lp_type int_size_type; + struct lp_build_context int_size_bld; /** Unsigned integer texture size */ struct lp_type float_size_type; @@ -225,13 +225,8 @@ struct lp_build_sample_context LLVMValueRef img_stride_array; LLVMValueRef data_array; - /** Unsigned vector with texture width, height, depth */ - LLVMValueRef uint_size; - - /* width, height, depth as uint vectors */ - LLVMValueRef width_vec; - LLVMValueRef height_vec; - LLVMValueRef depth_vec; + /** Integer vector with texture width, height, depth */ + LLVMValueRef int_size; }; diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 158c6e6a79f..b8cf938acfe 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -1170,7 +1170,7 @@ lp_build_sample_soa(LLVMBuilderRef builder, bld.int_coord_type = lp_int_type(type); bld.float_size_type = lp_type_float(32); bld.float_size_type.length = dims > 1 ? 4 : 1; - bld.uint_size_type = lp_uint_type(bld.float_size_type); + bld.int_size_type = lp_int_type(bld.float_size_type); bld.texel_type = type; float_vec_type = lp_type_float_vec(32); @@ -1181,7 +1181,7 @@ lp_build_sample_soa(LLVMBuilderRef builder, lp_build_context_init(&bld.coord_bld, builder, bld.coord_type); lp_build_context_init(&bld.uint_coord_bld, builder, bld.uint_coord_type); lp_build_context_init(&bld.int_coord_bld, builder, bld.int_coord_type); - lp_build_context_init(&bld.uint_size_bld, builder, bld.uint_size_type); + lp_build_context_init(&bld.int_size_bld, builder, bld.int_size_type); lp_build_context_init(&bld.float_size_bld, builder, bld.float_size_type); lp_build_context_init(&bld.texel_bld, builder, bld.texel_type); @@ -1198,28 +1198,23 @@ lp_build_sample_soa(LLVMBuilderRef builder, t = coords[1]; r = coords[2]; - /* width, height, depth as single uint vector */ + /* width, height, depth as single int vector */ if (dims <= 1) { - bld.uint_size = bld.width; + bld.int_size = bld.width; } else { - bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size_bld.undef, - bld.width, LLVMConstInt(i32t, 0, 0), ""); + bld.int_size = LLVMBuildInsertElement(builder, bld.int_size_bld.undef, + bld.width, LLVMConstInt(i32t, 0, 0), ""); if (dims >= 2) { - bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, - bld.height, LLVMConstInt(i32t, 1, 0), ""); + bld.int_size = LLVMBuildInsertElement(builder, bld.int_size, + bld.height, LLVMConstInt(i32t, 1, 0), ""); if (dims >= 3) { - bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, - bld.depth, LLVMConstInt(i32t, 2, 0), ""); + bld.int_size = LLVMBuildInsertElement(builder, bld.int_size, + bld.depth, LLVMConstInt(i32t, 2, 0), ""); } } } - /* width, height, depth as uint vectors */ - bld.width_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.width); - bld.height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.height); - bld.depth_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.depth); - if (0) { /* For debug: no-op texture sampling */ lp_build_sample_nop(bld.texel_type, texel_out); -- cgit v1.2.3 From 3fde8167a5d9c1e845053ae4e6a9cd49628adc71 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 8 Oct 2010 19:48:16 +0100 Subject: gallivm: Help for combined extraction and broadcasting. Doesn't change generated code quality, but saves some typing. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 32 ++++++----- src/gallium/auxiliary/gallivm/lp_bld_swizzle.c | 77 ++++++++++++++++++++++++++ src/gallium/auxiliary/gallivm/lp_bld_swizzle.h | 8 +++ 3 files changed, 102 insertions(+), 15 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 6a684a9a0bf..7a64392d3c1 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -639,7 +639,6 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, const unsigned dims = bld->dims; LLVMValueRef ilevel_vec; LLVMValueRef size_vec; - LLVMValueRef width, height, depth; LLVMTypeRef i32t = LLVMInt32Type(); ilevel_vec = lp_build_broadcast_scalar(&bld->int_size_bld, ilevel); @@ -649,18 +648,19 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, */ size_vec = lp_build_minify(&bld->int_size_bld, bld->int_size, ilevel_vec); - if (dims <= 1) { - width = size_vec; - } - else { - width = LLVMBuildExtractElement(bld->builder, size_vec, - LLVMConstInt(i32t, 0, 0), ""); - } - *out_width_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, width); + *out_width_vec = lp_build_extract_broadcast(bld->builder, + bld->int_size_type, + bld->int_coord_type, + size_vec, + LLVMConstInt(i32t, 0, 0)); if (dims >= 2) { - height = LLVMBuildExtractElement(bld->builder, size_vec, - LLVMConstInt(i32t, 1, 0), ""); - *out_height_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, height); + + *out_height_vec = lp_build_extract_broadcast(bld->builder, + bld->int_size_type, + bld->int_coord_type, + size_vec, + LLVMConstInt(i32t, 1, 0)); + *row_stride_vec = lp_build_get_level_stride_vec(bld, bld->row_stride_array, ilevel); @@ -669,9 +669,11 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, bld->img_stride_array, ilevel); if (dims == 3) { - depth = LLVMBuildExtractElement(bld->builder, size_vec, - LLVMConstInt(i32t, 2, 0), ""); - *out_depth_vec = lp_build_broadcast_scalar(&bld->int_coord_bld, depth); + *out_depth_vec = lp_build_extract_broadcast(bld->builder, + bld->int_size_type, + bld->int_coord_type, + size_vec, + LLVMConstInt(i32t, 2, 0)); } } } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_swizzle.c b/src/gallium/auxiliary/gallivm/lp_bld_swizzle.c index 2e9e8386de0..4685a90e418 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_swizzle.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_swizzle.c @@ -100,6 +100,83 @@ lp_build_broadcast_scalar(struct lp_build_context *bld, } +/** + * Combined extract and broadcast (or a mere shuffle when the two types match) + */ +LLVMValueRef +lp_build_extract_broadcast(LLVMBuilderRef builder, + struct lp_type src_type, + struct lp_type dst_type, + LLVMValueRef vector, + LLVMValueRef index) +{ + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMValueRef res; + + assert(src_type.floating == dst_type.floating); + assert(src_type.width == dst_type.width); + + assert(lp_check_value(src_type, vector)); + assert(LLVMTypeOf(index) == i32t); + + if (src_type.length == 1) { + if (dst_type.length == 1) { + /* + * Trivial scalar -> scalar. + */ + + res = vector; + } + else { + /* + * Broadcast scalar -> vector. + */ + + res = lp_build_broadcast(builder, + lp_build_vec_type(dst_type), + vector); + } + } + else { + if (dst_type.length == src_type.length) { + /* + * Special shuffle of the same size. + */ + + LLVMValueRef shuffle; + shuffle = lp_build_broadcast(builder, + LLVMVectorType(i32t, dst_type.length), + index); + res = LLVMBuildShuffleVector(builder, vector, + LLVMGetUndef(lp_build_vec_type(dst_type)), + shuffle, ""); + } + else { + LLVMValueRef scalar; + scalar = LLVMBuildExtractElement(builder, vector, index, ""); + if (dst_type.length == 1) { + /* + * Trivial extract scalar from vector. + */ + + res = scalar; + } + else { + /* + * General case of different sized vectors. + */ + + res = lp_build_broadcast(builder, + lp_build_vec_type(dst_type), + vector); + } + } + } + + return res; +} + + /** * Swizzle one channel into all other three channels. */ diff --git a/src/gallium/auxiliary/gallivm/lp_bld_swizzle.h b/src/gallium/auxiliary/gallivm/lp_bld_swizzle.h index f9b6a5e7258..fdea8442aef 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_swizzle.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_swizzle.h @@ -55,6 +55,14 @@ lp_build_broadcast_scalar(struct lp_build_context *bld, LLVMValueRef scalar); +LLVMValueRef +lp_build_extract_broadcast(LLVMBuilderRef builder, + struct lp_type src_type, + struct lp_type dst_type, + LLVMValueRef vector, + LLVMValueRef index); + + /** * Broadcast one channel of a vector composed of arrays of XYZW structures into * all four channel. -- cgit v1.2.3 From 5e90971475a7057022b63ee032eb4b6adba2d455 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 8 Oct 2010 14:03:10 -0700 Subject: gallivm: Remove unnecessary header. --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index b5ed4c2d9b7..127b13bc286 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -70,7 +70,6 @@ #include "lp_bld_arit.h" #include "lp_bld_pack.h" #include "lp_bld_conv.h" -#include "lp_bld_intr.h" /** -- cgit v1.2.3 From 131485efae3e919c2ba619eb087931f402c219f1 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 8 Oct 2010 14:08:50 -0700 Subject: r600g: Silence uninitialized variable warning. --- src/gallium/winsys/r600/drm/r600_hw_context.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index 86bddccbbbb..fa005379b53 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -67,7 +67,8 @@ static void INLINE r600_context_update_fenced_list(struct r600_context *ctx) static void INLINE r600_context_fence_wraparound(struct r600_context *ctx, unsigned fence) { - struct radeon_bo *bo, *tmp; + struct radeon_bo *bo = NULL; + struct radeon_bo *tmp; LIST_FOR_EACH_ENTRY_SAFE(bo, tmp, &ctx->fenced_bo, fencedlist) { if (bo->fence <= *ctx->cfence) { -- cgit v1.2.3 From 36b65a373adc88650e4a2ad8d99642a569b7662a Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 8 Oct 2010 14:14:16 -0700 Subject: r600g: Silence uninitialized variable warning. --- src/gallium/winsys/r600/drm/r600_hw_context.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index fa005379b53..2521ff96473 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -968,7 +968,8 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) struct r600_bo *cb[8]; struct r600_bo *db; unsigned ndwords = 9; - struct r600_block *dirty_block, *next_block; + struct r600_block *dirty_block = NULL; + struct r600_block *next_block; if (draw->indices) { ndwords = 13; -- cgit v1.2.3 From 3b16c591a4b0b8477874290bbe19333f9524b8c2 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Fri, 8 Oct 2010 14:17:14 -0700 Subject: r600g: Silence uninitialized variable warning. --- src/gallium/winsys/r600/drm/evergreen_hw_context.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 9b39c0c4f01..7f21b53ace0 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -762,7 +762,8 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr struct r600_bo *cb[12]; struct r600_bo *db; unsigned ndwords = 9, flush; - struct r600_block *dirty_block, *next_block; + struct r600_block *dirty_block = NULL; + struct r600_block *next_block; if (draw->indices) { ndwords = 13; -- cgit v1.2.3 From 0ed8c56bfe4ff5e3d451ec4791ee2cd64fb3daf2 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Fri, 8 Oct 2010 18:31:38 +0200 Subject: gallivm: fix trunc/itrunc comment trunc of -1.5 is -1.0 not 1.0... --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 64c468c14d4..4f108f6e818 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -1054,9 +1054,9 @@ lp_build_round_sse41(struct lp_build_context *bld, /** - * Return the integer part of a float (vector) value. The returned value is - * a float (vector). - * Ex: trunc(-1.5) = 1.0 + * Return the integer part of a float (vector) value (== round toward zero). + * The returned value is a float (vector). + * Ex: trunc(-1.5) = -1.0 */ LLVMValueRef lp_build_trunc(struct lp_build_context *bld, @@ -1181,9 +1181,9 @@ lp_build_fract(struct lp_build_context *bld, /** - * Return the integer part of a float (vector) value. The returned value is - * an integer (vector). - * Ex: itrunc(-1.5) = 1 + * Return the integer part of a float (vector) value (== round toward zero). + * The returned value is an integer (vector). + * Ex: itrunc(-1.5) = -1 */ LLVMValueRef lp_build_itrunc(struct lp_build_context *bld, -- cgit v1.2.3 From cb3af2b43439088fc0be0085df8b1ee1a91f33c7 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Fri, 8 Oct 2010 18:38:25 +0200 Subject: gallivm: faster iround implementation for sse2 sse2 supports round to nearest directly (or rather, assuming default nearest rounding mode in MXCSR). Use intrinsic to use this rather than round (sse41) or bit manipulation whenever possible. --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 54 ++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 4f108f6e818..6ab13506e15 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -1053,6 +1053,54 @@ lp_build_round_sse41(struct lp_build_context *bld, } +static INLINE LLVMValueRef +lp_build_iround_nearest_sse2(struct lp_build_context *bld, + LLVMValueRef a) +{ + const struct lp_type type = bld->type; + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMTypeRef ret_type = lp_build_int_vec_type(type); + const char *intrinsic; + LLVMValueRef res; + + assert(type.floating); + /* using the double precision conversions is a bit more complicated */ + assert(type.width == 32); + + assert(lp_check_value(type, a)); + assert(util_cpu_caps.has_sse2); + + /* This is relying on MXCSR rounding mode, which should always be nearest. */ + if (type.length == 1) { + LLVMTypeRef vec_type; + LLVMValueRef undef; + LLVMValueRef arg; + LLVMValueRef index0 = LLVMConstInt(i32t, 0, 0); + + vec_type = LLVMVectorType(bld->elem_type, 4); + + intrinsic = "llvm.x86.sse.cvtss2si"; + + undef = LLVMGetUndef(vec_type); + + arg = LLVMBuildInsertElement(bld->builder, undef, a, index0, ""); + + res = lp_build_intrinsic_unary(bld->builder, intrinsic, + ret_type, arg); + } + else { + assert(type.width*type.length == 128); + + intrinsic = "llvm.x86.sse2.cvtps2dq"; + + res = lp_build_intrinsic_unary(bld->builder, intrinsic, + ret_type, a); + } + + return res; +} + + /** * Return the integer part of a float (vector) value (== round toward zero). * The returned value is a float (vector). @@ -1217,7 +1265,11 @@ lp_build_iround(struct lp_build_context *bld, assert(lp_check_value(type, a)); - if (util_cpu_caps.has_sse4_1 && + if (util_cpu_caps.has_sse2 && + ((type.width == 32) && (type.length == 1 || type.length == 4))) { + return lp_build_iround_nearest_sse2(bld, a); + } + else if (util_cpu_caps.has_sse4_1 && (type.length == 1 || type.width*type.length == 128)) { res = lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_NEAREST); } -- cgit v1.2.3 From 1e17e0c4ffc0f1d1b9170c5574606172998c8917 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Fri, 8 Oct 2010 18:43:49 +0200 Subject: gallivm: replace sub/floor/ifloor combo with ifloor_fract --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index b8cf938acfe..90fd99067b3 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -202,11 +202,7 @@ lp_build_coord_mirror(struct lp_build_sample_context *bld, struct lp_build_context *int_coord_bld = &bld->int_coord_bld; LLVMValueRef fract, flr, isOdd; - /* fract = coord - floor(coord) */ - fract = lp_build_sub(coord_bld, coord, lp_build_floor(coord_bld, coord)); - - /* flr = ifloor(coord); */ - flr = lp_build_ifloor(coord_bld, coord); + lp_build_ifloor_fract(coord_bld, coord, &flr, &fract); /* isOdd = flr & 1 */ isOdd = LLVMBuildAnd(bld->builder, flr, int_coord_bld->one, ""); -- cgit v1.2.3 From 99ade19e6e0dc9f5a4507bdcd7fb9704ca6c1df5 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Fri, 8 Oct 2010 20:57:50 +0200 Subject: gallivm: optimize some tex wrap mode calculations a bit Sometimes coords are clamped to positive numbers before doing conversion to int, or clamped to 0 afterwards, in this case can use itrunc instead of ifloor which is easier. This is only the case for nearest calculations unfortunately, except linear MIRROR_CLAMP_TO_EDGE which for the same reason can use a unsigned float build context so the ifloor_fract helper can reduce this to itrunc in the ifloor helper itself. --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 90fd99067b3..29adb579288 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -364,7 +364,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE: { LLVMValueRef min, max; - + struct lp_build_context abs_coord_bld = bld->coord_bld; + abs_coord_bld.type.sign = FALSE; coord = lp_build_abs(coord_bld, coord); if (bld->static_state->normalized_coords) { @@ -380,7 +381,7 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_sub(coord_bld, coord, half); /* convert to int, compute lerp weight */ - lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); + lp_build_ifloor_fract(&abs_coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); } break; @@ -465,7 +466,8 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, } /* floor */ - icoord = lp_build_ifloor(coord_bld, coord); + /* use itrunc instead since we clamp to 0 anyway */ + icoord = lp_build_itrunc(coord_bld, coord); /* clamp to [0, length - 1]. */ icoord = lp_build_clamp(int_coord_bld, icoord, int_coord_bld->zero, @@ -499,7 +501,8 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, assert(bld->static_state->normalized_coords); coord = lp_build_mul(coord_bld, coord, length_f); - icoord = lp_build_ifloor(coord_bld, coord); + /* itrunc == ifloor here */ + icoord = lp_build_itrunc(coord_bld, coord); /* clamp to [0, length - 1] */ icoord = lp_build_min(int_coord_bld, icoord, length_minus_one); @@ -514,7 +517,8 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, coord = lp_build_mul(coord_bld, coord, length_f); } - icoord = lp_build_ifloor(coord_bld, coord); + /* itrunc == ifloor here */ + icoord = lp_build_itrunc(coord_bld, coord); /* clamp to [0, length - 1] */ icoord = lp_build_min(int_coord_bld, icoord, length_minus_one); @@ -528,7 +532,8 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, coord = lp_build_mul(coord_bld, coord, length_f); } - icoord = lp_build_ifloor(coord_bld, coord); + /* itrunc == ifloor here */ + icoord = lp_build_itrunc(coord_bld, coord); /* clamp to [0, length] */ icoord = lp_build_min(int_coord_bld, icoord, length); -- cgit v1.2.3 From 318bb080b04c961141a962d440d0e1296f8adda6 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Fri, 8 Oct 2010 21:06:04 +0200 Subject: gallivm: more linear tex wrap mode calculation simplification Rearrange order of operations a bit to make some clamps easier. All calculations should be equivalent. Note there seems to be some inconsistency in the clamp to edge case wrt normalized/non-normalized coords, could potentially simplify this too. --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 29adb579288..242e8d3d50d 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -291,6 +291,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_mul(coord_bld, coord, length_f); coord = lp_build_sub(coord_bld, coord, half); } + /* XXX this is odd normalized ranges from -0.5 to length-0.5 after denorm + but non-normalized ranges from to 0.5 to length-0.5 after clamp */ else { LLVMValueRef min, max; /* clamp to [0.5, length - 0.5] */ @@ -309,16 +311,15 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, case PIPE_TEX_WRAP_CLAMP_TO_BORDER: { - LLVMValueRef min, max; + LLVMValueRef min; if (bld->static_state->normalized_coords) { /* scale coord to length */ coord = lp_build_mul(coord_bld, coord, length_f); } - /* clamp to [-0.5, length + 0.5] */ - min = lp_build_const_vec(coord_bld->type, -0.5F); - max = lp_build_sub(coord_bld, length_f, min); - coord = lp_build_clamp(coord_bld, coord, min, max); + /* was: clamp to [-0.5, length + 0.5], then sub 0.5 */ coord = lp_build_sub(coord_bld, coord, half); + min = lp_build_const_vec(coord_bld->type, -1.0F); + coord = lp_build_clamp(coord_bld, coord, min, length_f); /* convert to int, compute lerp weight */ lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); @@ -388,8 +389,6 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER: { - LLVMValueRef min, max; - coord = lp_build_abs(coord_bld, coord); if (bld->static_state->normalized_coords) { @@ -397,12 +396,10 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_mul(coord_bld, coord, length_f); } - /* clamp to [-0.5, length + 0.5] */ - min = lp_build_negate(coord_bld, half); - max = lp_build_sub(coord_bld, length_f, min); - coord = lp_build_clamp(coord_bld, coord, min, max); - + /* was: clamp to [-0.5, length + 0.5] then sub 0.5 */ + /* skip -0.5 clamp (always positive), do sub first */ coord = lp_build_sub(coord_bld, coord, half); + coord = lp_build_min(coord_bld, coord, length_f); /* convert to int, compute lerp weight */ lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); -- cgit v1.2.3 From 2cc6da85d6e60e80d0b5b86fe42f8f82073b5d51 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Fri, 8 Oct 2010 21:08:49 +0200 Subject: gallivm: avoid unnecessary URem in linear wrap repeat case Haven't looked at what code this exactly generates but URem can't be fast. Instead of using two URem only use one and replace the second one with select/add (this is what the corresponding aos code already does). --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 242e8d3d50d..b0207820ba3 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -251,19 +251,23 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, coord = lp_build_sub(coord_bld, coord, half); /* convert to int, compute lerp weight */ lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); - coord1 = lp_build_add(uint_coord_bld, coord0, uint_coord_bld->one); /* repeat wrap */ if (is_pot) { + coord1 = lp_build_add(uint_coord_bld, coord0, uint_coord_bld->one); coord0 = LLVMBuildAnd(bld->builder, coord0, length_minus_one, ""); coord1 = LLVMBuildAnd(bld->builder, coord1, length_minus_one, ""); } else { /* Add a bias to the texcoord to handle negative coords */ LLVMValueRef bias = lp_build_mul_imm(uint_coord_bld, length, 1024); + LLVMValueRef mask; coord0 = LLVMBuildAdd(bld->builder, coord0, bias, ""); - coord1 = LLVMBuildAdd(bld->builder, coord1, bias, ""); coord0 = LLVMBuildURem(bld->builder, coord0, length, ""); - coord1 = LLVMBuildURem(bld->builder, coord1, length, ""); + mask = lp_build_compare(bld->builder, int_coord_bld->type, + PIPE_FUNC_NOTEQUAL, coord0, length_minus_one); + coord1 = LLVMBuildAnd(bld->builder, + lp_build_add(uint_coord_bld, coord0, uint_coord_bld->one), + mask, ""); } break; -- cgit v1.2.3 From 175cdfd49100b9c9d248dda911181afae6f492f4 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Sat, 9 Oct 2010 00:14:11 +0200 Subject: gallivm: optimize soa linear clamp to edge wrap mode a bit Clamp against 0 instead of -0.5, which simplifies things. The former version would have resulted in both int coords being zero (in case of coord being smaller than 0) and some "unused" weight value, whereas now the int coords will be 0 and 1, but weight will be 0, hence the lerp should produce the same value. Still not happy about differences between normalized and non-normalized... --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 53 +++++++++++++---------- 1 file changed, 30 insertions(+), 23 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index b0207820ba3..f3c4b6a7c82 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -288,30 +288,37 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, break; case PIPE_TEX_WRAP_CLAMP_TO_EDGE: - if (bld->static_state->normalized_coords) { - /* clamp to [0,1] */ - coord = lp_build_clamp(coord_bld, coord, coord_bld->zero, coord_bld->one); - /* mul by tex size and subtract 0.5 */ - coord = lp_build_mul(coord_bld, coord, length_f); - coord = lp_build_sub(coord_bld, coord, half); - } - /* XXX this is odd normalized ranges from -0.5 to length-0.5 after denorm - but non-normalized ranges from to 0.5 to length-0.5 after clamp */ - else { - LLVMValueRef min, max; - /* clamp to [0.5, length - 0.5] */ - min = half; - max = lp_build_sub(coord_bld, length_f, min); - coord = lp_build_clamp(coord_bld, coord, min, max); + { + struct lp_build_context abs_coord_bld = bld->coord_bld; + abs_coord_bld.type.sign = FALSE; + + if (bld->static_state->normalized_coords) { + /* mul by tex size */ + coord = lp_build_mul(coord_bld, coord, length_f); + /* clamp to length max */ + coord = lp_build_min(coord_bld, coord, length_f); + /* subtract 0.5 */ + coord = lp_build_sub(coord_bld, coord, half); + /* clamp to [0, length - 0.5] */ + coord = lp_build_max(coord_bld, coord, coord_bld->zero); + } + /* XXX this is odd normalized ranges from 0 to length-0.5 after denorm + but non-normalized ranges from to 0.5 to length-0.5 after clamp. + Is this missing the sub 0.5? */ + else { + LLVMValueRef min, max; + /* clamp to [0.5, length - 0.5] */ + min = half; + max = lp_build_sub(coord_bld, length_f, min); + coord = lp_build_clamp(coord_bld, coord, min, max); + } + /* convert to int, compute lerp weight */ + lp_build_ifloor_fract(&abs_coord_bld, coord, &coord0, &weight); + coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); + /* coord1 = min(coord1, length-1) */ + coord1 = lp_build_min(int_coord_bld, coord1, length_minus_one); + break; } - /* convert to int, compute lerp weight */ - lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); - coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); - /* coord0 = max(coord0, 0) */ - coord0 = lp_build_max(int_coord_bld, coord0, int_coord_bld->zero); - /* coord1 = min(coord1, length-1) */ - coord1 = lp_build_min(int_coord_bld, coord1, length_minus_one); - break; case PIPE_TEX_WRAP_CLAMP_TO_BORDER: { -- cgit v1.2.3 From ff72c799242f2bea19bb0fa8283bf78d76c86d15 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Sat, 9 Oct 2010 00:35:58 +0200 Subject: gallivm: make use of new iround code in lp_bld_conv. Only requires sse2 now. --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 127b13bc286..3abb19272b6 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -297,16 +297,16 @@ lp_build_conv(LLVMBuilderRef builder, d = LLVMBuildFMul(builder, src[3], const_255f, ""); /* lp_build_round generates excessively general code without - * sse4, so do rounding manually. + * sse2, so do rounding manually. */ - if (!util_cpu_caps.has_sse4_1) { + if (!util_cpu_caps.has_sse2) { LLVMValueRef const_half = lp_build_const_vec(src_type, 0.5f); a = LLVMBuildFAdd(builder, a, const_half, ""); b = LLVMBuildFAdd(builder, b, const_half, ""); c = LLVMBuildFAdd(builder, c, const_half, ""); d = LLVMBuildFAdd(builder, d, const_half, ""); - + src_int0 = LLVMBuildFPToSI(builder, a, int32_vec_type, ""); src_int1 = LLVMBuildFPToSI(builder, b, int32_vec_type, ""); src_int2 = LLVMBuildFPToSI(builder, c, int32_vec_type, ""); @@ -323,7 +323,7 @@ lp_build_conv(LLVMBuilderRef builder, bld.undef = lp_build_undef(src_type); bld.zero = lp_build_zero(src_type); bld.one = lp_build_one(src_type); - + src_int0 = lp_build_iround(&bld, a); src_int1 = lp_build_iround(&bld, b); src_int2 = lp_build_iround(&bld, c); -- cgit v1.2.3 From 6316d540564d116460bfd1382e3eee98480e28ff Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Thu, 7 Oct 2010 16:26:17 -0400 Subject: llvmpipe: fix rasterization of vertical lines on pixel boundaries --- src/gallium/drivers/llvmpipe/lp_setup_line.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index 4d7d6235b07..693ac281752 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -475,7 +475,7 @@ try_setup_line( struct lp_setup_context *setup, else { /* do intersection test */ float xintersect = fracf(v2[0][0]) + y2diff * dxdy; - draw_end = (xintersect < 1.0 && xintersect > 0.0); + draw_end = (xintersect < 1.0 && xintersect >= 0.0); } /* Are we already drawing start/end? @@ -513,7 +513,7 @@ try_setup_line( struct lp_setup_context *setup, x_offset_end = y_offset_end * dxdy; } } - + /* x/y positions in fixed point */ x[0] = subpixel_snap(v1[0][0] + x_offset - setup->pixel_offset) - fixed_width/2; x[1] = subpixel_snap(v2[0][0] + x_offset_end - setup->pixel_offset) - fixed_width/2; -- cgit v1.2.3 From 34c11c87e4e3b5639764abee413c45e918749477 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 09:34:31 +0100 Subject: gallivm: Do size computations simultanously for all dimensions (AoS). Operate simultanouesly on vector as much as possible, instead of doing the operations on vectors with broadcasted scalars. Also do the 24.8 fixed point scalar with integer shift of the texture size, for unnormalized coordinates. AoS path only for now -- the same thing can be done for SoA. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 106 +++++++++++++----- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 22 +++- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 125 +++++++++++----------- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 16 ++- 4 files changed, 177 insertions(+), 92 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 7a64392d3c1..5bc3c263a0f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -630,37 +630,21 @@ lp_build_get_level_stride_vec(struct lp_build_sample_context *bld, void lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, LLVMValueRef ilevel, - LLVMValueRef *out_width_vec, - LLVMValueRef *out_height_vec, - LLVMValueRef *out_depth_vec, + LLVMValueRef *out_size, LLVMValueRef *row_stride_vec, LLVMValueRef *img_stride_vec) { const unsigned dims = bld->dims; LLVMValueRef ilevel_vec; - LLVMValueRef size_vec; - LLVMTypeRef i32t = LLVMInt32Type(); ilevel_vec = lp_build_broadcast_scalar(&bld->int_size_bld, ilevel); /* * Compute width, height, depth at mipmap level 'ilevel' */ - size_vec = lp_build_minify(&bld->int_size_bld, bld->int_size, ilevel_vec); + *out_size = lp_build_minify(&bld->int_size_bld, bld->int_size, ilevel_vec); - *out_width_vec = lp_build_extract_broadcast(bld->builder, - bld->int_size_type, - bld->int_coord_type, - size_vec, - LLVMConstInt(i32t, 0, 0)); if (dims >= 2) { - - *out_height_vec = lp_build_extract_broadcast(bld->builder, - bld->int_size_type, - bld->int_coord_type, - size_vec, - LLVMConstInt(i32t, 1, 0)); - *row_stride_vec = lp_build_get_level_stride_vec(bld, bld->row_stride_array, ilevel); @@ -668,18 +652,90 @@ lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, *img_stride_vec = lp_build_get_level_stride_vec(bld, bld->img_stride_array, ilevel); - if (dims == 3) { - *out_depth_vec = lp_build_extract_broadcast(bld->builder, - bld->int_size_type, - bld->int_coord_type, - size_vec, - LLVMConstInt(i32t, 2, 0)); - } } } } +/** + * Extract and broadcast texture size. + * + * @param size_type type of the texture size vector (either + * bld->int_size_type or bld->float_size_type) + * @param coord_type type of the texture size vector (either + * bld->int_coord_type or bld->coord_type) + * @param int_size vector with the integer texture size (width, height, + * depth) + */ +void +lp_build_extract_image_sizes(struct lp_build_sample_context *bld, + struct lp_type size_type, + struct lp_type coord_type, + LLVMValueRef size, + LLVMValueRef *out_width, + LLVMValueRef *out_height, + LLVMValueRef *out_depth) +{ + const unsigned dims = bld->dims; + LLVMTypeRef i32t = LLVMInt32Type(); + + *out_width = lp_build_extract_broadcast(bld->builder, + size_type, + coord_type, + size, + LLVMConstInt(i32t, 0, 0)); + if (dims >= 2) { + *out_height = lp_build_extract_broadcast(bld->builder, + size_type, + coord_type, + size, + LLVMConstInt(i32t, 1, 0)); + if (dims == 3) { + *out_depth = lp_build_extract_broadcast(bld->builder, + size_type, + coord_type, + size, + LLVMConstInt(i32t, 2, 0)); + } + } +} + + +/** + * Unnormalize coords. + * + * @param int_size vector with the integer texture size (width, height, depth) + */ +void +lp_build_unnormalized_coords(struct lp_build_sample_context *bld, + LLVMValueRef flt_size, + LLVMValueRef *s, + LLVMValueRef *t, + LLVMValueRef *r) +{ + const unsigned dims = bld->dims; + LLVMValueRef width; + LLVMValueRef height; + LLVMValueRef depth; + + lp_build_extract_image_sizes(bld, + bld->float_size_type, + bld->coord_type, + flt_size, + &width, + &height, + &depth); + + /* s = s * width, t = t * height */ + *s = lp_build_mul(&bld->coord_bld, *s, width); + if (dims >= 2) { + *t = lp_build_mul(&bld->coord_bld, *t, height); + if (dims >= 3) { + *r = lp_build_mul(&bld->coord_bld, *r, depth); + } + } +} + /** Helper used by lp_build_cube_lookup() */ static LLVMValueRef diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index d1a1aa143d8..ce2285446ac 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -333,13 +333,29 @@ lp_build_get_const_mipmap_level(struct lp_build_sample_context *bld, void lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld, LLVMValueRef ilevel, - LLVMValueRef *out_width_vec, - LLVMValueRef *out_height_vec, - LLVMValueRef *out_depth_vec, + LLVMValueRef *out_size_vec, LLVMValueRef *row_stride_vec, LLVMValueRef *img_stride_vec); +void +lp_build_extract_image_sizes(struct lp_build_sample_context *bld, + struct lp_type size_type, + struct lp_type coord_type, + LLVMValueRef size, + LLVMValueRef *out_width, + LLVMValueRef *out_height, + LLVMValueRef *out_depth); + + +void +lp_build_unnormalized_coords(struct lp_build_sample_context *bld, + LLVMValueRef flt_size, + LLVMValueRef *s, + LLVMValueRef *t, + LLVMValueRef *r); + + void lp_build_cube_lookup(struct lp_build_sample_context *bld, LLVMValueRef s, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index e7410448c04..1e1e3591cac 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -45,6 +45,7 @@ #include "lp_bld_const.h" #include "lp_bld_conv.h" #include "lp_bld_arit.h" +#include "lp_bld_bitarit.h" #include "lp_bld_logic.h" #include "lp_bld_swizzle.h" #include "lp_bld_pack.h" @@ -253,9 +254,7 @@ lp_build_sample_wrap_linear_int(struct lp_build_sample_context *bld, */ static void lp_build_sample_image_nearest(struct lp_build_sample_context *bld, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, + LLVMValueRef int_size, LLVMValueRef row_stride_vec, LLVMValueRef img_stride_vec, LLVMValueRef data_ptr, @@ -270,6 +269,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, struct lp_build_context i32, h16, u8n; LLVMTypeRef i32_vec_type, h16_vec_type, u8n_vec_type; LLVMValueRef i32_c8; + LLVMValueRef width_vec, height_vec, depth_vec; LLVMValueRef s_ipart, t_ipart, r_ipart; LLVMValueRef x_stride; LLVMValueRef x_offset, offset; @@ -283,30 +283,33 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, h16_vec_type = lp_build_vec_type(h16.type); u8n_vec_type = lp_build_vec_type(u8n.type); + lp_build_extract_image_sizes(bld, + bld->int_size_type, + bld->int_coord_type, + int_size, + &width_vec, + &height_vec, + &depth_vec); + if (bld->static_state->normalized_coords) { - /* s = s * width, t = t * height */ - LLVMTypeRef coord_vec_type = lp_build_vec_type(bld->coord_type); - LLVMValueRef fp_width = LLVMBuildSIToFP(bld->builder, width_vec, - coord_vec_type, ""); - s = lp_build_mul(&bld->coord_bld, s, fp_width); - if (dims >= 2) { - LLVMValueRef fp_height = LLVMBuildSIToFP(bld->builder, height_vec, - coord_vec_type, ""); - t = lp_build_mul(&bld->coord_bld, t, fp_height); - if (dims >= 3) { - LLVMValueRef fp_depth = LLVMBuildSIToFP(bld->builder, depth_vec, - coord_vec_type, ""); - r = lp_build_mul(&bld->coord_bld, r, fp_depth); - } - } - } + LLVMValueRef scaled_size; + LLVMValueRef flt_size; - /* scale coords by 256 (8 fractional bits) */ - s = lp_build_mul_imm(&bld->coord_bld, s, 256); - if (dims >= 2) - t = lp_build_mul_imm(&bld->coord_bld, t, 256); - if (dims >= 3) - r = lp_build_mul_imm(&bld->coord_bld, r, 256); + /* scale size by 256 (8 fractional bits) */ + scaled_size = lp_build_shl_imm(&bld->int_size_bld, int_size, 8); + + flt_size = lp_build_int_to_float(&bld->float_size_bld, scaled_size); + + lp_build_unnormalized_coords(bld, flt_size, &s, &t, &r); + } + else { + /* scale coords by 256 (8 fractional bits) */ + s = lp_build_mul_imm(&bld->coord_bld, s, 256); + if (dims >= 2) + t = lp_build_mul_imm(&bld->coord_bld, t, 256); + if (dims >= 3) + r = lp_build_mul_imm(&bld->coord_bld, r, 256); + } /* convert float to int */ s = LLVMBuildFPToSI(builder, s, i32_vec_type, ""); @@ -417,9 +420,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, */ static void lp_build_sample_image_linear(struct lp_build_sample_context *bld, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, + LLVMValueRef int_size, LLVMValueRef row_stride_vec, LLVMValueRef img_stride_vec, LLVMValueRef data_ptr, @@ -434,6 +435,7 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, struct lp_build_context i32, h16, u8n; LLVMTypeRef i32_vec_type, h16_vec_type, u8n_vec_type; LLVMValueRef i32_c8, i32_c128, i32_c255; + LLVMValueRef width_vec, height_vec, depth_vec; LLVMValueRef s_ipart, s_fpart, s_fpart_lo, s_fpart_hi; LLVMValueRef t_ipart, t_fpart, t_fpart_lo, t_fpart_hi; LLVMValueRef r_ipart, r_fpart, r_fpart_lo, r_fpart_hi; @@ -458,30 +460,33 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, h16_vec_type = lp_build_vec_type(h16.type); u8n_vec_type = lp_build_vec_type(u8n.type); + lp_build_extract_image_sizes(bld, + bld->int_size_type, + bld->int_coord_type, + int_size, + &width_vec, + &height_vec, + &depth_vec); + if (bld->static_state->normalized_coords) { - /* s = s * width, t = t * height */ - LLVMTypeRef coord_vec_type = lp_build_vec_type(bld->coord_type); - LLVMValueRef fp_width = LLVMBuildSIToFP(bld->builder, width_vec, - coord_vec_type, ""); - s = lp_build_mul(&bld->coord_bld, s, fp_width); - if (dims >= 2) { - LLVMValueRef fp_height = LLVMBuildSIToFP(bld->builder, height_vec, - coord_vec_type, ""); - t = lp_build_mul(&bld->coord_bld, t, fp_height); - } - if (dims >= 3) { - LLVMValueRef fp_depth = LLVMBuildSIToFP(bld->builder, depth_vec, - coord_vec_type, ""); - r = lp_build_mul(&bld->coord_bld, r, fp_depth); - } - } + LLVMValueRef scaled_size; + LLVMValueRef flt_size; - /* scale coords by 256 (8 fractional bits) */ - s = lp_build_mul_imm(&bld->coord_bld, s, 256); - if (dims >= 2) - t = lp_build_mul_imm(&bld->coord_bld, t, 256); - if (dims >= 3) - r = lp_build_mul_imm(&bld->coord_bld, r, 256); + /* scale size by 256 (8 fractional bits) */ + scaled_size = lp_build_shl_imm(&bld->int_size_bld, int_size, 8); + + flt_size = lp_build_int_to_float(&bld->float_size_bld, scaled_size); + + lp_build_unnormalized_coords(bld, flt_size, &s, &t, &r); + } + else { + /* scale coords by 256 (8 fractional bits) */ + s = lp_build_mul_imm(&bld->coord_bld, s, 256); + if (dims >= 2) + t = lp_build_mul_imm(&bld->coord_bld, t, 256); + if (dims >= 3) + r = lp_build_mul_imm(&bld->coord_bld, r, 256); + } /* convert float to int */ s = LLVMBuildFPToSI(builder, s, i32_vec_type, ""); @@ -788,12 +793,8 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMValueRef colors_hi_var) { LLVMBuilderRef builder = bld->builder; - LLVMValueRef width0_vec; - LLVMValueRef width1_vec; - LLVMValueRef height0_vec; - LLVMValueRef height1_vec; - LLVMValueRef depth0_vec; - LLVMValueRef depth1_vec; + LLVMValueRef size0; + LLVMValueRef size1; LLVMValueRef row_stride0_vec; LLVMValueRef row_stride1_vec; LLVMValueRef img_stride0_vec; @@ -806,12 +807,12 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, /* sample the first mipmap level */ lp_build_mipmap_level_sizes(bld, ilevel0, - &width0_vec, &height0_vec, &depth0_vec, + &size0, &row_stride0_vec, &img_stride0_vec); data_ptr0 = lp_build_get_mipmap_level(bld, ilevel0); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, - width0_vec, height0_vec, depth0_vec, + size0, row_stride0_vec, img_stride0_vec, data_ptr0, s, t, r, &colors0_lo, &colors0_hi); @@ -819,7 +820,7 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, else { assert(img_filter == PIPE_TEX_FILTER_LINEAR); lp_build_sample_image_linear(bld, - width0_vec, height0_vec, depth0_vec, + size0, row_stride0_vec, img_stride0_vec, data_ptr0, s, t, r, &colors0_lo, &colors0_hi); @@ -854,19 +855,19 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, /* sample the second mipmap level */ lp_build_mipmap_level_sizes(bld, ilevel1, - &width1_vec, &height1_vec, &depth1_vec, + &size1, &row_stride1_vec, &img_stride1_vec); data_ptr1 = lp_build_get_mipmap_level(bld, ilevel1); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, - width1_vec, height1_vec, depth1_vec, + size1, row_stride1_vec, img_stride1_vec, data_ptr1, s, t, r, &colors1_lo, &colors1_hi); } else { lp_build_sample_image_linear(bld, - width1_vec, height1_vec, depth1_vec, + size1, row_stride1_vec, img_stride1_vec, data_ptr1, s, t, r, &colors1_lo, &colors1_hi); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index f3c4b6a7c82..1af0318e8e1 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -805,6 +805,8 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMValueRef *colors_out) { LLVMBuilderRef builder = bld->builder; + LLVMValueRef size0; + LLVMValueRef size1; LLVMValueRef width0_vec; LLVMValueRef width1_vec; LLVMValueRef height0_vec; @@ -822,8 +824,13 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, /* sample the first mipmap level */ lp_build_mipmap_level_sizes(bld, ilevel0, - &width0_vec, &height0_vec, &depth0_vec, + &size0, &row_stride0_vec, &img_stride0_vec); + lp_build_extract_image_sizes(bld, + bld->int_size_type, + bld->int_coord_type, + size0, + &width0_vec, &height0_vec, &depth0_vec); data_ptr0 = lp_build_get_mipmap_level(bld, ilevel0); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, unit, @@ -863,8 +870,13 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, { /* sample the second mipmap level */ lp_build_mipmap_level_sizes(bld, ilevel1, - &width1_vec, &height1_vec, &depth1_vec, + &size1, &row_stride1_vec, &img_stride1_vec); + lp_build_extract_image_sizes(bld, + bld->int_size_type, + bld->int_coord_type, + size1, + &width1_vec, &height1_vec, &depth1_vec); data_ptr1 = lp_build_get_mipmap_level(bld, ilevel1); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, unit, -- cgit v1.2.3 From d0bfb3c5144a9434efd4d53ced149d42016b5bdc Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 20:42:30 +0100 Subject: llvmpipe: Prevent z > 1.0 The current interpolation schemes causes precision loss. Changing the operation order helps, but does not completely avoid the problem. The only short term solution is to clamp z to 1.0. This is unfortunate, but probably unavoidable until interpolation is improved. --- src/gallium/drivers/llvmpipe/lp_bld_interp.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_interp.c b/src/gallium/drivers/llvmpipe/lp_bld_interp.c index 2a374f8c390..ee92ce3cdc1 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_interp.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_interp.c @@ -206,7 +206,7 @@ coeffs_init(struct lp_build_interp_soa_context *bld, dadq2 = LLVMBuildFAdd(builder, dadq, dadq, ""); /* - * a = a0 + x * dadx + y * dady + * a = a0 + (x * dadx + y * dady) */ if (attrib == 0 && chan == 0) { @@ -219,11 +219,11 @@ coeffs_init(struct lp_build_interp_soa_context *bld, a = a0; if (interp != LP_INTERP_CONSTANT && interp != LP_INTERP_FACING) { - LLVMValueRef tmp; - tmp = LLVMBuildFMul(builder, bld->x, dadx, ""); - a = LLVMBuildFAdd(builder, a, tmp, ""); - tmp = LLVMBuildFMul(builder, bld->y, dady, ""); - a = LLVMBuildFAdd(builder, a, tmp, ""); + LLVMValueRef ax, ay, axy; + ax = LLVMBuildFMul(builder, bld->x, dadx, ""); + ay = LLVMBuildFMul(builder, bld->y, dady, ""); + axy = LLVMBuildFAdd(builder, ax, ay, ""); + a = LLVMBuildFAdd(builder, a, axy, ""); } } @@ -350,6 +350,14 @@ attribs_update(struct lp_build_interp_soa_context *bld, int quad_index) } #endif + if (attrib == 0 && chan == 2) { + /* FIXME: Depth values can exceed 1.0, due to the fact that + * setup interpolation coefficients refer to (0,0) which causes + * precision loss. So we must clamp to 1.0 here to avoid artifacts + */ + a = lp_build_min(coeff_bld, a, coeff_bld->one); + } + attrib_name(a, attrib, chan, ""); } bld->attribs[attrib][chan] = a; -- cgit v1.2.3 From 8009886b0092df2783472deaac1bcaad4a802c19 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 6 Oct 2010 22:25:48 +0100 Subject: llvmpipe: defer attribute interpolation until after mask and ztest Don't calculate 1/w for quads which aren't visible... --- src/gallium/drivers/llvmpipe/lp_bld_interp.c | 25 ++++++++++++++++++------- src/gallium/drivers/llvmpipe/lp_bld_interp.h | 6 +++++- src/gallium/drivers/llvmpipe/lp_state_fs.c | 17 +++++++++++------ 3 files changed, 34 insertions(+), 14 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_interp.c b/src/gallium/drivers/llvmpipe/lp_bld_interp.c index ee92ce3cdc1..c9da8900d0c 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_interp.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_interp.c @@ -272,7 +272,10 @@ coeffs_init(struct lp_build_interp_soa_context *bld, * This is called when we move from one quad to the next. */ static void -attribs_update(struct lp_build_interp_soa_context *bld, int quad_index) +attribs_update(struct lp_build_interp_soa_context *bld, + int quad_index, + int start, + int end) { struct lp_build_context *coeff_bld = &bld->coeff_bld; LLVMValueRef shuffle = lp_build_const_int_vec(coeff_bld->type, quad_index); @@ -282,7 +285,7 @@ attribs_update(struct lp_build_interp_soa_context *bld, int quad_index) assert(quad_index < 4); - for(attrib = 0; attrib < bld->num_attribs; ++attrib) { + for(attrib = start; attrib < end; ++attrib) { const unsigned mask = bld->mask[attrib]; const unsigned interp = bld->interp[attrib]; for(chan = 0; chan < NUM_CHANNELS; ++chan) { @@ -442,8 +445,6 @@ lp_build_interp_soa_init(struct lp_build_interp_soa_context *bld, pos_init(bld, x0, y0); coeffs_init(bld, a0_ptr, dadx_ptr, dady_ptr); - - attribs_update(bld, 0); } @@ -451,10 +452,20 @@ lp_build_interp_soa_init(struct lp_build_interp_soa_context *bld, * Advance the position and inputs to the given quad within the block. */ void -lp_build_interp_soa_update(struct lp_build_interp_soa_context *bld, - int quad_index) +lp_build_interp_soa_update_inputs(struct lp_build_interp_soa_context *bld, + int quad_index) +{ + assert(quad_index < 4); + + attribs_update(bld, quad_index, 1, bld->num_attribs); +} + +void +lp_build_interp_soa_update_pos(struct lp_build_interp_soa_context *bld, + int quad_index) { assert(quad_index < 4); - attribs_update(bld, quad_index); + attribs_update(bld, quad_index, 0, 1); } + diff --git a/src/gallium/drivers/llvmpipe/lp_bld_interp.h b/src/gallium/drivers/llvmpipe/lp_bld_interp.h index 3054030f739..6588f7f2755 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_interp.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_interp.h @@ -89,7 +89,11 @@ lp_build_interp_soa_init(struct lp_build_interp_soa_context *bld, LLVMValueRef y); void -lp_build_interp_soa_update(struct lp_build_interp_soa_context *bld, +lp_build_interp_soa_update_inputs(struct lp_build_interp_soa_context *bld, + int quad_index); + +void +lp_build_interp_soa_update_pos(struct lp_build_interp_soa_context *bld, int quad_index); diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 3ce8be5a0a9..0530c613230 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -262,7 +262,7 @@ generate_fs(struct llvmpipe_context *lp, struct lp_type type, LLVMValueRef context_ptr, unsigned i, - const struct lp_build_interp_soa_context *interp, + struct lp_build_interp_soa_context *interp, struct lp_build_sampler_soa *sampler, LLVMValueRef *pmask, LLVMValueRef (*color)[4], @@ -276,7 +276,7 @@ generate_fs(struct llvmpipe_context *lp, LLVMTypeRef vec_type; LLVMValueRef consts_ptr; LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS]; - LLVMValueRef z = interp->pos[2]; + LLVMValueRef z; LLVMValueRef stencil_refs[2]; struct lp_build_flow_context *flow; struct lp_build_mask_context mask; @@ -307,7 +307,6 @@ generate_fs(struct llvmpipe_context *lp, lp_build_flow_scope_declare(flow, &color[cbuf][chan]); } } - lp_build_flow_scope_declare(flow, &z); /* do triangle edge testing */ if (partial_mask) { @@ -321,6 +320,13 @@ generate_fs(struct llvmpipe_context *lp, /* 'mask' will control execution based on quad's pixel alive/killed state */ lp_build_mask_begin(&mask, flow, type, *pmask); + lp_build_interp_soa_update_pos(interp, i); + + /* Try to avoid the 1/w for quads where mask is zero. TODO: avoid + * this for depth-fail quads also. + */ + z = interp->pos[2]; + early_depth_stencil_test = (key->depth.enabled || key->stencil[0].enabled) && !key->alpha.enabled && @@ -332,6 +338,8 @@ generate_fs(struct llvmpipe_context *lp, type, &mask, stencil_refs, z, depth_ptr, facing, counter); + lp_build_interp_soa_update_inputs(interp, i); + lp_build_tgsi_soa(builder, tokens, type, &mask, consts_ptr, interp->pos, interp->inputs, outputs, sampler, &shader->info); @@ -621,9 +629,6 @@ generate_fragment(struct llvmpipe_context *lp, LLVMValueRef out_color[PIPE_MAX_COLOR_BUFS][NUM_CHANNELS]; LLVMValueRef depth_ptr_i; - if(i != 0) - lp_build_interp_soa_update(&interp, i); - depth_ptr_i = LLVMBuildGEP(builder, depth_ptr, &index, 1, ""); generate_fs(lp, shader, key, -- cgit v1.2.3 From 40d7be52619fbff2479dcdf56929e3e0c5b12e72 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 7 Oct 2010 18:59:54 +0100 Subject: llvmpipe: use alloca for fs color outputs Don't try to emit our own phi's, let llvm mem2reg do it for us. --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 0530c613230..f75ae284cb3 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -303,8 +303,7 @@ generate_fs(struct llvmpipe_context *lp, /* Declare the color and z variables */ for(cbuf = 0; cbuf < key->nr_cbufs; cbuf++) { for(chan = 0; chan < NUM_CHANNELS; ++chan) { - color[cbuf][chan] = LLVMGetUndef(vec_type); - lp_build_flow_scope_declare(flow, &color[cbuf][chan]); + color[cbuf][chan] = lp_build_alloca(builder, vec_type, "color"); } } @@ -369,7 +368,7 @@ generate_fs(struct llvmpipe_context *lp, &mask, alpha, alpha_ref_value); } - color[cbuf][chan] = out; + LLVMBuildStore(builder, out, color[cbuf][chan]); break; } @@ -665,9 +664,18 @@ generate_fragment(struct llvmpipe_context *lp, * Convert the fs's output color and mask to fit to the blending type. */ for(chan = 0; chan < NUM_CHANNELS; ++chan) { + LLVMValueRef fs_color_vals[LP_MAX_VECTOR_LENGTH]; + + for (i = 0; i < num_fs; i++) { + fs_color_vals[i] = + LLVMBuildLoad(builder, fs_out_color[cbuf][chan][i], "fs_color_vals"); + } + lp_build_conv(builder, fs_type, blend_type, - fs_out_color[cbuf][chan], num_fs, + fs_color_vals, + num_fs, &blend_in_color[chan], 1); + lp_build_name(blend_in_color[chan], "color%d.%c", cbuf, "rgba"[chan]); } -- cgit v1.2.3 From 6da29f36111edc821a4aa10128e9681fc75a43d7 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 7 Oct 2010 19:49:20 +0100 Subject: llvmpipe: store zero into all alloca'd values Fixes slowdown in isosurf with earlier versions of llvm. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index 5bc9c741a88..cd5fbc24638 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -830,6 +830,7 @@ lp_build_alloca(LLVMBuilderRef builder, } res = LLVMBuildAlloca(first_builder, type, name); + LLVMBuildStore(builder, LLVMConstNull(type), res); LLVMDisposeBuilder(first_builder); -- cgit v1.2.3 From 954965366fee3fa2eec8a11b6663d4cf218e1d5d Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 7 Oct 2010 19:01:12 +0100 Subject: llvmpipe: dump fragment shader ir and asm when LP_DEBUG=fs Better than GALLIVM_DEBUG if you're only interested in fragment shaders. --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index f75ae284cb3..07b4f74dbc9 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -730,7 +730,7 @@ generate_fragment(struct llvmpipe_context *lp, /* Apply optimizations to LLVM IR */ LLVMRunFunctionPassManager(screen->pass, function); - if (gallivm_debug & GALLIVM_DEBUG_IR) { + if ((gallivm_debug & GALLIVM_DEBUG_IR) || (LP_DEBUG & DEBUG_FS)) { /* Print the LLVM IR to stderr */ lp_debug_dump_value(function); debug_printf("\n"); @@ -744,7 +744,7 @@ generate_fragment(struct llvmpipe_context *lp, variant->jit_function[partial_mask] = (lp_jit_frag_func)pointer_to_func(f); - if (gallivm_debug & GALLIVM_DEBUG_ASM) { + if ((gallivm_debug & GALLIVM_DEBUG_ASM) || (LP_DEBUG & DEBUG_FS)) { lp_disassemble(f); } lp_func_delete_body(function); -- cgit v1.2.3 From d2cf757f44f4ee5554243f3279483a25886d9927 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 6 Oct 2010 18:21:56 +0100 Subject: gallivm: specialized x8z24 depthtest path Avoid unnecessary masking of non-existant stencil component. --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 95 ++++++++++++++++++++++++++++- src/gallium/drivers/llvmpipe/lp_state_fs.c | 30 +-------- 2 files changed, 94 insertions(+), 31 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 7eabe0508de..09b82fbe9ba 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -71,6 +71,7 @@ #include "gallivm/lp_bld_arit.h" #include "gallivm/lp_bld_bitarit.h" #include "gallivm/lp_bld_const.h" +#include "gallivm/lp_bld_conv.h" #include "gallivm/lp_bld_logic.h" #include "gallivm/lp_bld_flow.h" #include "gallivm/lp_bld_intr.h" @@ -446,7 +447,7 @@ lp_build_occlusion_count(LLVMBuilderRef builder, * \param format_desc description of the depth/stencil surface * \param mask the alive/dead pixel mask for the quad (vector) * \param stencil_refs the front/back stencil ref values (scalar) - * \param z_src the incoming depth/stencil values (a 2x2 quad) + * \param z_src the incoming depth/stencil values (a 2x2 quad, float32) * \param zs_dst_ptr pointer to depth/stencil values in framebuffer * \param facing contains float value indicating front/back facing polygon */ @@ -454,7 +455,7 @@ void lp_build_depth_stencil_test(LLVMBuilderRef builder, const struct pipe_depth_state *depth, const struct pipe_stencil_state stencil[2], - struct lp_type type, + struct lp_type z_src_type, const struct util_format_description *format_desc, struct lp_build_mask_context *mask, LLVMValueRef stencil_refs[2], @@ -463,6 +464,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef face, LLVMValueRef counter) { + struct lp_type type; struct lp_build_context bld; struct lp_build_context sbld; struct lp_type s_type; @@ -473,6 +475,95 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef orig_mask = mask->value; LLVMValueRef front_facing = NULL; + /* Prototype a simpler path: + */ + if (z_src_type.floating && + format_desc->format == PIPE_FORMAT_X8Z24_UNORM && + depth->enabled) + { + LLVMValueRef zscaled; + LLVMValueRef const_ffffff_float; + LLVMValueRef const_8_int; + LLVMTypeRef int32_vec_type; + + /* We know the values in z_dst are all >= 0, so allow + * lp_build_compare to use signed compare intrinsics: + */ + type.floating = 0; + type.fixed = 0; + type.sign = 1; + type.norm = 1; + type.width = 32; + type.length = z_src_type.length; + + int32_vec_type = LLVMVectorType(LLVMInt32Type(), z_src_type.length); + + const_8_int = lp_build_const_int_vec(type, 8); + const_ffffff_float = lp_build_const_vec(z_src_type, (float)0xffffff); + + zscaled = LLVMBuildFMul(builder, z_src, const_ffffff_float, "zscaled"); + z_src = LLVMBuildFPToSI(builder, zscaled, int32_vec_type, "z_src"); + + /* Load current z/stencil value from z/stencil buffer */ + z_dst = LLVMBuildLoad(builder, zs_dst_ptr, "zsbufval"); + z_dst = LLVMBuildLShr(builder, z_dst, const_8_int, "z_dst"); + + /* compare src Z to dst Z, returning 'pass' mask */ + z_pass = lp_build_compare(builder, + type, + depth->func, z_src, z_dst); + + lp_build_mask_update(mask, z_pass); + + /* No need to worry about old stencil contents, just blend the + * old and new values and shift into the correct position for + * storage. + */ + if (depth->writemask) { + type.sign = 0; + lp_build_context_init(&bld, builder, type); + + z_dst = lp_build_select(&bld, mask->value, z_src, z_dst); + z_dst = LLVMBuildShl(builder, z_dst, const_8_int, "z_dst"); + LLVMBuildStore(builder, z_dst, zs_dst_ptr); + } + + if (counter) + lp_build_occlusion_count(builder, type, mask->value, counter); + + return; + } + + /* + * Depths are expected to be between 0 and 1, even if they are stored in + * floats. Setting these bits here will ensure that the lp_build_conv() call + * below won't try to unnecessarily clamp the incoming values. + */ + if(z_src_type.floating) { + z_src_type.sign = FALSE; + z_src_type.norm = TRUE; + } + else { + assert(!z_src_type.sign); + assert(z_src_type.norm); + } + + /* Pick the depth type. */ + type = lp_depth_type(format_desc, z_src_type.width*z_src_type.length); + + /* FIXME: Cope with a depth test type with a different bit width. */ + assert(type.width == z_src_type.width); + assert(type.length == z_src_type.length); + + /* Convert fragment Z from float to integer */ + lp_build_conv(builder, z_src_type, type, &z_src, 1, &z_src, 1); + + zs_dst_ptr = LLVMBuildBitCast(builder, + zs_dst_ptr, + LLVMPointerType(lp_build_vec_type(type), 0), ""); + + + /* Sanity checking */ { const unsigned z_swizzle = format_desc->swizzle[0]; diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 07b4f74dbc9..b7a51cd6679 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -119,7 +119,6 @@ generate_depth_stencil(LLVMBuilderRef builder, LLVMValueRef counter) { const struct util_format_description *format_desc; - struct lp_type dst_type; if (!key->depth.enabled && !key->stencil[0].enabled && !key->stencil[1].enabled) return; @@ -127,37 +126,10 @@ generate_depth_stencil(LLVMBuilderRef builder, format_desc = util_format_description(key->zsbuf_format); assert(format_desc); - /* - * Depths are expected to be between 0 and 1, even if they are stored in - * floats. Setting these bits here will ensure that the lp_build_conv() call - * below won't try to unnecessarily clamp the incoming values. - */ - if(src_type.floating) { - src_type.sign = FALSE; - src_type.norm = TRUE; - } - else { - assert(!src_type.sign); - assert(src_type.norm); - } - - /* Pick the depth type. */ - dst_type = lp_depth_type(format_desc, src_type.width*src_type.length); - - /* FIXME: Cope with a depth test type with a different bit width. */ - assert(dst_type.width == src_type.width); - assert(dst_type.length == src_type.length); - - /* Convert fragment Z from float to integer */ - lp_build_conv(builder, src_type, dst_type, &src, 1, &src, 1); - - dst_ptr = LLVMBuildBitCast(builder, - dst_ptr, - LLVMPointerType(lp_build_vec_type(dst_type), 0), ""); lp_build_depth_stencil_test(builder, &key->depth, key->stencil, - dst_type, + src_type, format_desc, mask, stencil_refs, -- cgit v1.2.3 From c79f162367b99d9438bd1589ecfdeba69baa9d3d Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 6 Oct 2010 19:10:30 +0100 Subject: gallivm: prefer blendvb for integer arguments --- src/gallium/auxiliary/gallivm/lp_bld_logic.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_logic.c b/src/gallium/auxiliary/gallivm/lp_bld_logic.c index ce5d0214b43..026b60ac36e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_logic.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_logic.c @@ -462,10 +462,12 @@ lp_build_select(struct lp_build_context *bld, LLVMTypeRef arg_type; LLVMValueRef args[3]; - if (type.width == 64) { + if (type.floating && + type.width == 64) { intrinsic = "llvm.x86.sse41.blendvpd"; arg_type = LLVMVectorType(LLVMDoubleType(), 2); - } else if (type.width == 32) { + } else if (type.floating && + type.width == 32) { intrinsic = "llvm.x86.sse41.blendvps"; arg_type = LLVMVectorType(LLVMFloatType(), 4); } else { -- cgit v1.2.3 From 2ef6f75ab410bb188e028024e18891d7877febad Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 6 Oct 2010 19:09:03 +0100 Subject: gallivm: simpler uint8->float conversions LLVM seems to finds it easier to reason about these than our mantissa-manipulation code. --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 3abb19272b6..20aa2577830 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -178,6 +178,16 @@ lp_build_unsigned_norm_to_float(LLVMBuilderRef builder, assert(dst_type.floating); + /* Special-case int8->float, though most cases could be handled + * this way: + */ + if (src_width == 8) { + scale = 1.0/255.0; + res = LLVMBuildSIToFP(builder, src, vec_type, ""); + res = LLVMBuildFMul(builder, res, lp_build_const_vec(dst_type, scale), ""); + return res; + } + mantissa = lp_mantissa(dst_type); n = MIN2(mantissa, src_width); -- cgit v1.2.3 From aa4cb5e2d8d48c7dcc9653c61a9e25494e3e7b2a Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 7 Oct 2010 15:01:07 +0100 Subject: llvmpipe: try to be sensible about whether to branch after mask updates Don't branch more than once in quick succession. Don't branch at the end of the shader. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 6 +-- src/gallium/auxiliary/gallivm/lp_bld_flow.h | 3 ++ src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 11 +++- src/gallium/drivers/llvmpipe/lp_bld_alpha.c | 6 ++- src/gallium/drivers/llvmpipe/lp_bld_alpha.h | 3 +- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 14 ++++- src/gallium/drivers/llvmpipe/lp_bld_depth.h | 3 +- src/gallium/drivers/llvmpipe/lp_state_fs.c | 69 ++++++++++++++++--------- 8 files changed, 80 insertions(+), 35 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index cd5fbc24638..1ec33c742e2 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -450,7 +450,7 @@ lp_build_flow_skip_end(struct lp_build_flow_context *flow) /** * Check if the mask predicate is zero. If so, jump to the end of the block. */ -static void +void lp_build_mask_check(struct lp_build_mask_context *mask) { LLVMBuilderRef builder = mask->flow->builder; @@ -490,8 +490,6 @@ lp_build_mask_begin(struct lp_build_mask_context *mask, lp_build_flow_scope_begin(flow); lp_build_flow_scope_declare(flow, &mask->value); lp_build_flow_skip_begin(flow); - - lp_build_mask_check(mask); } @@ -505,8 +503,6 @@ lp_build_mask_update(struct lp_build_mask_context *mask, LLVMValueRef value) { mask->value = LLVMBuildAnd( mask->flow->builder, mask->value, value, ""); - - lp_build_mask_check(mask); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h b/src/gallium/auxiliary/gallivm/lp_bld_flow.h index fffb493a93b..095c781ec54 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h @@ -94,6 +94,9 @@ void lp_build_mask_update(struct lp_build_mask_context *mask, LLVMValueRef value); +void +lp_build_mask_check(struct lp_build_mask_context *mask); + LLVMValueRef lp_build_mask_end(struct lp_build_mask_context *mask); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 441aebae298..03020a62f85 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -959,8 +959,13 @@ emit_kil( } } - if(mask) + if(mask) { lp_build_mask_update(bld->mask, mask); + + /* XXX: figure out if we are at the end of the shader and skip this: + */ + lp_build_mask_check(bld->mask); + } } @@ -987,6 +992,10 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld, } lp_build_mask_update(bld->mask, mask); + + /* XXX: figure out if we are at the end of the shader and skip this: + */ + lp_build_mask_check(bld->mask); } static void diff --git a/src/gallium/drivers/llvmpipe/lp_bld_alpha.c b/src/gallium/drivers/llvmpipe/lp_bld_alpha.c index e28efe778f9..e50643790c8 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_alpha.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_alpha.c @@ -48,7 +48,8 @@ lp_build_alpha_test(LLVMBuilderRef builder, struct lp_type type, struct lp_build_mask_context *mask, LLVMValueRef alpha, - LLVMValueRef ref) + LLVMValueRef ref, + boolean do_branch) { struct lp_build_context bld; LLVMValueRef test; @@ -60,4 +61,7 @@ lp_build_alpha_test(LLVMBuilderRef builder, lp_build_name(test, "alpha_mask"); lp_build_mask_update(mask, test); + + if (do_branch) + lp_build_mask_check(mask); } diff --git a/src/gallium/drivers/llvmpipe/lp_bld_alpha.h b/src/gallium/drivers/llvmpipe/lp_bld_alpha.h index 44603b418c0..27ca8aad4d4 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_alpha.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_alpha.h @@ -48,7 +48,8 @@ lp_build_alpha_test(LLVMBuilderRef builder, struct lp_type type, struct lp_build_mask_context *mask, LLVMValueRef alpha, - LLVMValueRef ref); + LLVMValueRef ref, + boolean do_branch); #endif /* !LP_BLD_ALPHA_H */ diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 09b82fbe9ba..6b8ffb6ca26 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -462,7 +462,8 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef z_src, LLVMValueRef zs_dst_ptr, LLVMValueRef face, - LLVMValueRef counter) + LLVMValueRef counter, + boolean do_branch) { struct lp_type type; struct lp_build_context bld; @@ -515,6 +516,9 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, lp_build_mask_update(mask, z_pass); + if (do_branch) + lp_build_mask_check(mask); + /* No need to worry about old stencil contents, just blend the * old and new values and shift into the correct position for * storage. @@ -701,6 +705,11 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, * buffer values. Don't need to update Z buffer values. */ lp_build_mask_update(mask, z_pass); + + if (do_branch) { + lp_build_mask_check(mask); + do_branch = FALSE; + } } if (depth->writemask) { @@ -779,6 +788,9 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, if (depth->enabled && stencil[0].enabled) lp_build_mask_update(mask, z_pass); + if (do_branch) + lp_build_mask_check(mask); + if (counter) lp_build_occlusion_count(builder, type, mask->value, counter); } diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.h b/src/gallium/drivers/llvmpipe/lp_bld_depth.h index e257a5bd7d0..2a63bb9378b 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.h @@ -61,7 +61,8 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef zs_src, LLVMValueRef zs_dst_ptr, LLVMValueRef facing, - LLVMValueRef counter); + LLVMValueRef counter, + boolean do_branch); #endif /* !LP_BLD_DEPTH_H */ diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index b7a51cd6679..df5dd83c875 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -116,7 +116,8 @@ generate_depth_stencil(LLVMBuilderRef builder, LLVMValueRef src, LLVMValueRef dst_ptr, LLVMValueRef facing, - LLVMValueRef counter) + LLVMValueRef counter, + boolean do_branch) { const struct util_format_description *format_desc; @@ -136,7 +137,8 @@ generate_depth_stencil(LLVMBuilderRef builder, src, dst_ptr, facing, - counter); + counter, + do_branch); } @@ -253,6 +255,9 @@ generate_fs(struct llvmpipe_context *lp, struct lp_build_flow_context *flow; struct lp_build_mask_context mask; boolean early_depth_stencil_test; + boolean simple_shader = (shader->info.file_count[TGSI_FILE_SAMPLER] == 0 && + shader->info.num_inputs < 3 && + shader->info.num_instructions < 8); unsigned attrib; unsigned chan; unsigned cbuf; @@ -288,15 +293,6 @@ generate_fs(struct llvmpipe_context *lp, *pmask = lp_build_const_int_vec(type, ~0); } - /* 'mask' will control execution based on quad's pixel alive/killed state */ - lp_build_mask_begin(&mask, flow, type, *pmask); - - lp_build_interp_soa_update_pos(interp, i); - - /* Try to avoid the 1/w for quads where mask is zero. TODO: avoid - * this for depth-fail quads also. - */ - z = interp->pos[2]; early_depth_stencil_test = (key->depth.enabled || key->stencil[0].enabled) && @@ -304,10 +300,22 @@ generate_fs(struct llvmpipe_context *lp, !shader->info.uses_kill && !shader->info.writes_z; + /* 'mask' will control execution based on quad's pixel alive/killed state */ + lp_build_mask_begin(&mask, flow, type, *pmask); + + if (!early_depth_stencil_test && !simple_shader) + lp_build_mask_check(&mask); + + lp_build_interp_soa_update_pos(interp, i); + z = interp->pos[2]; + if (early_depth_stencil_test) generate_depth_stencil(builder, key, type, &mask, - stencil_refs, z, depth_ptr, facing, counter); + stencil_refs, + z, depth_ptr, + facing, counter, + !simple_shader); lp_build_interp_soa_update_inputs(interp, i); @@ -337,7 +345,7 @@ generate_fs(struct llvmpipe_context *lp, alpha_ref_value = lp_jit_context_alpha_ref_value(builder, context_ptr); alpha_ref_value = lp_build_broadcast(builder, vec_type, alpha_ref_value); lp_build_alpha_test(builder, key->alpha.func, type, - &mask, alpha, alpha_ref_value); + &mask, alpha, alpha_ref_value, FALSE); } LLVMBuildStore(builder, out, color[cbuf][chan]); @@ -356,7 +364,8 @@ generate_fs(struct llvmpipe_context *lp, if (!early_depth_stencil_test) generate_depth_stencil(builder, key, type, &mask, - stencil_refs, z, depth_ptr, facing, counter); + stencil_refs, z, depth_ptr, + facing, counter, FALSE); lp_build_mask_end(&mask); @@ -386,7 +395,8 @@ generate_blend(const struct pipe_blend_state *blend, LLVMValueRef context_ptr, LLVMValueRef mask, LLVMValueRef *src, - LLVMValueRef dst_ptr) + LLVMValueRef dst_ptr, + boolean do_branch) { struct lp_build_context bld; struct lp_build_flow_context *flow; @@ -401,9 +411,9 @@ generate_blend(const struct pipe_blend_state *blend, lp_build_context_init(&bld, builder, type); flow = lp_build_flow_create(builder); - - /* we'll use this mask context to skip blending if all pixels are dead */ lp_build_mask_begin(&mask_ctx, flow, type, mask); + if (do_branch) + lp_build_mask_check(&mask_ctx); vec_type = lp_build_vec_type(type); @@ -670,14 +680,23 @@ generate_fragment(struct llvmpipe_context *lp, /* * Blending. */ - generate_blend(&key->blend, - rt, - builder, - blend_type, - context_ptr, - blend_mask, - blend_in_color, - color_ptr); + { + /* Could the 4x4 have been killed? + */ + boolean do_branch = ((key->depth.enabled || key->stencil[0].enabled) && + !key->alpha.enabled && + !shader->info.uses_kill); + + generate_blend(&key->blend, + rt, + builder, + blend_type, + context_ptr, + blend_mask, + blend_in_color, + color_ptr, + do_branch); + } } #ifdef PIPE_ARCH_X86 -- cgit v1.2.3 From 5b7eb868fde98388d80601d8dea39e679828f42f Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sat, 9 Oct 2010 11:28:00 +0100 Subject: llvmpipe: clean up shader pre/postamble, try to catch more early-z Specifically, can do early-depth-test even when alpahtest or kill-pixel are active, providing we defer the actual z write until the final mask is avaialable. Improves demos/fire.c especially in the case where you get close to the trees. --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 40 +++-- src/gallium/drivers/llvmpipe/lp_bld_depth.h | 15 +- src/gallium/drivers/llvmpipe/lp_state_fs.c | 241 +++++++++++++++++----------- 3 files changed, 193 insertions(+), 103 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 6b8ffb6ca26..8d9be2ebbbf 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -410,7 +410,7 @@ get_s_shift_and_mask(const struct util_format_description *format_desc, * \param maskvalue is the depth test mask. * \param counter is a pointer of the uint32 counter. */ -static void +void lp_build_occlusion_count(LLVMBuilderRef builder, struct lp_type type, LLVMValueRef maskvalue, @@ -462,7 +462,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef z_src, LLVMValueRef zs_dst_ptr, LLVMValueRef face, - LLVMValueRef counter, + LLVMValueRef *zs_value, boolean do_branch) { struct lp_type type; @@ -524,17 +524,14 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, * storage. */ if (depth->writemask) { - type.sign = 0; + type.sign = 1; lp_build_context_init(&bld, builder, type); z_dst = lp_build_select(&bld, mask->value, z_src, z_dst); z_dst = LLVMBuildShl(builder, z_dst, const_8_int, "z_dst"); - LLVMBuildStore(builder, z_dst, zs_dst_ptr); + *zs_value = z_dst; } - if (counter) - lp_build_occlusion_count(builder, type, mask->value, counter); - return; } @@ -779,7 +776,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, else zs_dst = stencil_vals; - LLVMBuildStore(builder, zs_dst, zs_dst_ptr); + *zs_value = zs_dst; } if (s_pass_mask) @@ -791,6 +788,29 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, if (do_branch) lp_build_mask_check(mask); - if (counter) - lp_build_occlusion_count(builder, type, mask->value, counter); +} + + + +void +lp_build_deferred_depth_write(LLVMBuilderRef builder, + struct lp_type z_src_type, + const struct util_format_description *format_desc, + struct lp_build_mask_context *mask, + LLVMValueRef zs_dst_ptr, + LLVMValueRef zs_value) +{ + struct lp_type type; + struct lp_build_context bld; + LLVMValueRef z_dst; + + /* XXX: pointlessly redo type logic: + */ + type = lp_depth_type(format_desc, z_src_type.width*z_src_type.length); + lp_build_context_init(&bld, builder, type); + + z_dst = LLVMBuildLoad(builder, zs_dst_ptr, "zsbufval"); + z_dst = lp_build_select(&bld, mask->value, zs_value, z_dst); + + LLVMBuildStore(builder, z_dst, zs_dst_ptr); } diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.h b/src/gallium/drivers/llvmpipe/lp_bld_depth.h index 2a63bb9378b..0f89668123a 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.h @@ -61,8 +61,21 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef zs_src, LLVMValueRef zs_dst_ptr, LLVMValueRef facing, - LLVMValueRef counter, + LLVMValueRef *zs_value, boolean do_branch); +void +lp_build_deferred_depth_write(LLVMBuilderRef builder, + struct lp_type z_src_type, + const struct util_format_description *format_desc, + struct lp_build_mask_context *mask, + LLVMValueRef zs_dst_ptr, + LLVMValueRef zs_value); + +void +lp_build_occlusion_count(LLVMBuilderRef builder, + struct lp_type type, + LLVMValueRef maskvalue, + LLVMValueRef counter); #endif /* !LP_BLD_DEPTH_H */ diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index df5dd83c875..f45f36f6332 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -104,43 +104,6 @@ static unsigned fs_no = 0; -/** - * Generate the depth /stencil test code. - */ -static void -generate_depth_stencil(LLVMBuilderRef builder, - const struct lp_fragment_shader_variant_key *key, - struct lp_type src_type, - struct lp_build_mask_context *mask, - LLVMValueRef stencil_refs[2], - LLVMValueRef src, - LLVMValueRef dst_ptr, - LLVMValueRef facing, - LLVMValueRef counter, - boolean do_branch) -{ - const struct util_format_description *format_desc; - - if (!key->depth.enabled && !key->stencil[0].enabled && !key->stencil[1].enabled) - return; - - format_desc = util_format_description(key->zsbuf_format); - assert(format_desc); - - lp_build_depth_stencil_test(builder, - &key->depth, - key->stencil, - src_type, - format_desc, - mask, - stencil_refs, - src, - dst_ptr, - facing, - counter, - do_branch); -} - /** * Expand the relevent bits of mask_input to a 4-dword mask for the @@ -222,6 +185,26 @@ generate_quad_mask(LLVMBuilderRef builder, } +#define EARLY_DEPTH_TEST 0x1 +#define LATE_DEPTH_TEST 0x2 +#define EARLY_DEPTH_WRITE 0x4 +#define LATE_DEPTH_WRITE 0x8 + +static int +find_output_by_semantic( const struct tgsi_shader_info *info, + unsigned semantic, + unsigned index ) +{ + int i; + + for (i = 0; i < info->num_outputs; i++) + if (info->output_semantic_name[i] == semantic && + info->output_semantic_index[i] == index) + return i; + + return -1; +} + /** * Generate the fragment shader, depth/stencil test, and alpha tests. @@ -246,21 +229,53 @@ generate_fs(struct llvmpipe_context *lp, LLVMValueRef mask_input, LLVMValueRef counter) { + const struct util_format_description *zs_format_desc = NULL; const struct tgsi_token *tokens = shader->base.tokens; LLVMTypeRef vec_type; LLVMValueRef consts_ptr; LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS]; LLVMValueRef z; + LLVMValueRef zs_value = NULL; LLVMValueRef stencil_refs[2]; struct lp_build_flow_context *flow; struct lp_build_mask_context mask; - boolean early_depth_stencil_test; boolean simple_shader = (shader->info.file_count[TGSI_FILE_SAMPLER] == 0 && shader->info.num_inputs < 3 && shader->info.num_instructions < 8); unsigned attrib; unsigned chan; unsigned cbuf; + unsigned depth_mode; + + if (key->depth.enabled || + key->stencil[0].enabled || + key->stencil[1].enabled) { + + zs_format_desc = util_format_description(key->zsbuf_format); + assert(zs_format_desc); + + if (!shader->info.writes_z) { + if (key->alpha.enabled || shader->info.uses_kill) + /* With alpha test and kill, can do the depth test early + * and hopefully eliminate some quads. But need to do a + * special deferred depth write once the final mask value + * is known. + */ + depth_mode = EARLY_DEPTH_TEST | LATE_DEPTH_WRITE; + else + depth_mode = EARLY_DEPTH_TEST | EARLY_DEPTH_WRITE; + } + else { + depth_mode = LATE_DEPTH_TEST | LATE_DEPTH_WRITE; + } + + if (!(key->depth.enabled && key->depth.writemask) && + !(key->stencil[0].enabled && key->stencil[0].writemask)) + depth_mode &= ~(LATE_DEPTH_WRITE | EARLY_DEPTH_WRITE); + } + else { + depth_mode = 0; + } assert(i < 4); @@ -293,79 +308,121 @@ generate_fs(struct llvmpipe_context *lp, *pmask = lp_build_const_int_vec(type, ~0); } - - early_depth_stencil_test = - (key->depth.enabled || key->stencil[0].enabled) && - !key->alpha.enabled && - !shader->info.uses_kill && - !shader->info.writes_z; - /* 'mask' will control execution based on quad's pixel alive/killed state */ lp_build_mask_begin(&mask, flow, type, *pmask); - if (!early_depth_stencil_test && !simple_shader) + if (!(depth_mode & EARLY_DEPTH_TEST) && !simple_shader) lp_build_mask_check(&mask); lp_build_interp_soa_update_pos(interp, i); z = interp->pos[2]; - if (early_depth_stencil_test) - generate_depth_stencil(builder, key, - type, &mask, - stencil_refs, - z, depth_ptr, - facing, counter, - !simple_shader); + if (depth_mode & EARLY_DEPTH_TEST) { + lp_build_depth_stencil_test(builder, + &key->depth, + key->stencil, + type, + zs_format_desc, + &mask, + stencil_refs, + z, + depth_ptr, facing, + &zs_value, + !simple_shader); + + if (depth_mode & EARLY_DEPTH_WRITE) + LLVMBuildStore(builder, zs_value, depth_ptr); + } lp_build_interp_soa_update_inputs(interp, i); - + + /* Build the actual shader */ lp_build_tgsi_soa(builder, tokens, type, &mask, consts_ptr, interp->pos, interp->inputs, outputs, sampler, &shader->info); - /* loop over fragment shader outputs/results */ - for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) { - for(chan = 0; chan < NUM_CHANNELS; ++chan) { - if(outputs[attrib][chan]) { + + /* Alpha test */ + if (key->alpha.enabled) { + int color0 = find_output_by_semantic(&shader->info, + TGSI_SEMANTIC_COLOR, + 0); + + if (color0 != -1) { + LLVMValueRef alpha = LLVMBuildLoad(builder, outputs[color0][3], "alpha"); + LLVMValueRef alpha_ref_value; + + alpha_ref_value = lp_jit_context_alpha_ref_value(builder, context_ptr); + alpha_ref_value = lp_build_broadcast(builder, vec_type, alpha_ref_value); + + lp_build_alpha_test(builder, key->alpha.func, type, + &mask, alpha, alpha_ref_value, + (depth_mode & LATE_DEPTH_TEST) != 0); + } + } + + /* Late Z test */ + if (depth_mode & LATE_DEPTH_TEST) { + int pos0 = find_output_by_semantic(&shader->info, + TGSI_SEMANTIC_POSITION, + 0); + + if (pos0 != -1) { + z = LLVMBuildLoad(builder, outputs[pos0][2], "z"); + lp_build_name(z, "output%u.%u.%c", i, pos0, "xyzw"[chan]); + } + + lp_build_depth_stencil_test(builder, + &key->depth, + key->stencil, + type, + zs_format_desc, + &mask, + stencil_refs, + z, + depth_ptr, facing, + &zs_value, + !simple_shader); + /* Late Z write */ + if (depth_mode & LATE_DEPTH_WRITE) + LLVMBuildStore(builder, zs_value, depth_ptr); + } + else if ((depth_mode & EARLY_DEPTH_TEST) && + (depth_mode & LATE_DEPTH_WRITE)) + { + /* Need to apply a reduced mask to the depth write. Reload the + * depth value, update from zs_value with the new mask value and + * write that out. + */ + lp_build_deferred_depth_write(builder, + type, + zs_format_desc, + &mask, + depth_ptr, + zs_value); + } + + + /* Color write */ + for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) + { + if (shader->info.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR) + { + unsigned cbuf = shader->info.output_semantic_index[attrib]; + for(chan = 0; chan < NUM_CHANNELS; ++chan) + { + /* XXX: just initialize outputs to point at colors[] and + * skip this. + */ LLVMValueRef out = LLVMBuildLoad(builder, outputs[attrib][chan], ""); - lp_build_name(out, "output%u.%u.%c", i, attrib, "xyzw"[chan]); - - switch (shader->info.output_semantic_name[attrib]) { - case TGSI_SEMANTIC_COLOR: - { - unsigned cbuf = shader->info.output_semantic_index[attrib]; - - lp_build_name(out, "color%u.%u.%c", i, attrib, "rgba"[chan]); - - /* Alpha test */ - /* XXX: should only test the final assignment to alpha */ - if (cbuf == 0 && chan == 3 && key->alpha.enabled) { - LLVMValueRef alpha = out; - LLVMValueRef alpha_ref_value; - alpha_ref_value = lp_jit_context_alpha_ref_value(builder, context_ptr); - alpha_ref_value = lp_build_broadcast(builder, vec_type, alpha_ref_value); - lp_build_alpha_test(builder, key->alpha.func, type, - &mask, alpha, alpha_ref_value, FALSE); - } - - LLVMBuildStore(builder, out, color[cbuf][chan]); - break; - } - - case TGSI_SEMANTIC_POSITION: - if(chan == 2) - z = out; - break; - } + lp_build_name(out, "color%u.%u.%c", i, attrib, "rgba"[chan]); + LLVMBuildStore(builder, out, color[cbuf][chan]); } } } - if (!early_depth_stencil_test) - generate_depth_stencil(builder, key, - type, &mask, - stencil_refs, z, depth_ptr, - facing, counter, FALSE); + if (counter) + lp_build_occlusion_count(builder, type, mask.value, counter); lp_build_mask_end(&mask); -- cgit v1.2.3 From 2de720dc8ff89676aa7bb5eb74aeb6d44e028fa2 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 1 Oct 2010 15:13:51 +0100 Subject: llvmpipe: simplified SSE2 swz/unswz routines We've been using these in the linear path for a while now. Based on Chris's SSSE3 code, but using only sse2 opcodes. Speed seems to be identical, but code is simpler & removes dependency on SSE3. Should be easier to extend to other rgba8 formats. --- src/gallium/drivers/llvmpipe/SConscript | 8 +- src/gallium/drivers/llvmpipe/lp_tile_soa.py | 245 ++++++++++++---------------- 2 files changed, 107 insertions(+), 146 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript index 650435f0f19..774ad91a074 100644 --- a/src/gallium/drivers/llvmpipe/SConscript +++ b/src/gallium/drivers/llvmpipe/SConscript @@ -27,13 +27,7 @@ env.Depends('lp_tile_soa.c', [ ]) -# Only enable SSSE3 for lp_tile_soa_sse3.c -ssse3_env = env.Clone() -if env['gcc'] \ - and distutils.version.LooseVersion(env['CCVERSION']) >= distutils.version.LooseVersion('4.3') \ - and env['machine'] in ('x86', 'x86_64') : - ssse3_env.Append(CCFLAGS = ['-mssse3']) -lp_tile_soa_os = ssse3_env.SharedObject('lp_tile_soa.c') +lp_tile_soa_os = env.SharedObject('lp_tile_soa.c') llvmpipe = env.ConvenienceLibrary( diff --git a/src/gallium/drivers/llvmpipe/lp_tile_soa.py b/src/gallium/drivers/llvmpipe/lp_tile_soa.py index 2ba39052aba..c76549cdadf 100644 --- a/src/gallium/drivers/llvmpipe/lp_tile_soa.py +++ b/src/gallium/drivers/llvmpipe/lp_tile_soa.py @@ -295,87 +295,98 @@ def generate_ssse3(): #include "util/u_sse.h" +static INLINE void swz4( __m128i x, + __m128i y, + __m128i z, + __m128i w, + __m128i *a, + __m128i *b, + __m128i *c, + __m128i *d) +{ + __m128i i, j, k, l; + __m128i m, n, o, p; + __m128i e, f, g, h; + + m = _mm_unpacklo_epi8(x,y); + n = _mm_unpackhi_epi8(x,y); + o = _mm_unpacklo_epi8(z,w); + p = _mm_unpackhi_epi8(z,w); + + i = _mm_unpacklo_epi16(m,n); + j = _mm_unpackhi_epi16(m,n); + k = _mm_unpacklo_epi16(o,p); + l = _mm_unpackhi_epi16(o,p); + + e = _mm_unpacklo_epi8(i,j); + f = _mm_unpackhi_epi8(i,j); + g = _mm_unpacklo_epi8(k,l); + h = _mm_unpackhi_epi8(k,l); + + *a = _mm_unpacklo_epi64(e,g); + *b = _mm_unpackhi_epi64(e,g); + *c = _mm_unpacklo_epi64(f,h); + *d = _mm_unpackhi_epi64(f,h); +} + +static INLINE void unswz4( __m128i a, + __m128i b, + __m128i c, + __m128i d, + __m128i *x, + __m128i *y, + __m128i *z, + __m128i *w) +{ + __m128i i, j, k, l; + __m128i m, n, o, p; + + i = _mm_unpacklo_epi8(a,b); + j = _mm_unpackhi_epi8(a,b); + k = _mm_unpacklo_epi8(c,d); + l = _mm_unpackhi_epi8(c,d); + + m = _mm_unpacklo_epi16(i,k); + n = _mm_unpackhi_epi16(i,k); + o = _mm_unpacklo_epi16(j,l); + p = _mm_unpackhi_epi16(j,l); + + *x = _mm_unpacklo_epi64(m,n); + *y = _mm_unpackhi_epi64(m,n); + *z = _mm_unpacklo_epi64(o,p); + *w = _mm_unpackhi_epi64(o,p); +} + static void lp_tile_b8g8r8a8_unorm_swizzle_4ub_ssse3(uint8_t *dst, const uint8_t *src, unsigned src_stride, unsigned x0, unsigned y0) { - + __m128i *dst128 = (__m128i *) dst; unsigned x, y; - __m128i *pdst = (__m128i*) dst; - const uint8_t *ysrc0 = src + y0*src_stride + x0*sizeof(uint32_t); - unsigned int tile_stridex = src_stride*(TILE_VECTOR_HEIGHT - 1) - sizeof(uint32_t)*TILE_VECTOR_WIDTH; - unsigned int tile_stridey = src_stride*TILE_VECTOR_HEIGHT; - - const __m128i shuffle00 = _mm_setr_epi8(0x02,0x06,0xff,0xff,0x0a,0x0e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - const __m128i shuffle01 = _mm_setr_epi8(0x01,0x05,0xff,0xff,0x09,0x0d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - const __m128i shuffle02 = _mm_setr_epi8(0x00,0x04,0xff,0xff,0x08,0x0c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - const __m128i shuffle03 = _mm_setr_epi8(0x03,0x07,0xff,0xff,0x0b,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - - const __m128i shuffle10 = _mm_setr_epi8(0xff,0xff,0x02,0x06,0xff,0xff,0x0a,0x0e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - const __m128i shuffle11 = _mm_setr_epi8(0xff,0xff,0x01,0x05,0xff,0xff,0x09,0x0d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - const __m128i shuffle12 = _mm_setr_epi8(0xff,0xff,0x00,0x04,0xff,0xff,0x08,0x0c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - const __m128i shuffle13 = _mm_setr_epi8(0xff,0xff,0x03,0x07,0xff,0xff,0x0b,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff); - - const __m128i shuffle20 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x02,0x06,0xff,0xff,0x0a,0x0e,0xff,0xff); - const __m128i shuffle21 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x05,0xff,0xff,0x09,0x0d,0xff,0xff); - const __m128i shuffle22 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x04,0xff,0xff,0x08,0x0c,0xff,0xff); - const __m128i shuffle23 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x07,0xff,0xff,0x0b,0x0f,0xff,0xff); - - const __m128i shuffle30 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x02,0x06,0xff,0xff,0x0a,0x0e); - const __m128i shuffle31 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x05,0xff,0xff,0x09,0x0d); - const __m128i shuffle32 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x04,0xff,0xff,0x08,0x0c); - const __m128i shuffle33 = _mm_setr_epi8(0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x07,0xff,0xff,0x0b,0x0f); - - for (y = 0; y < TILE_SIZE; y += TILE_VECTOR_HEIGHT) { - __m128i line0 = *(__m128i*)ysrc0; - const uint8_t *ysrc = ysrc0 + src_stride; - ysrc0 += tile_stridey; - - for (x = 0; x < TILE_SIZE; x += TILE_VECTOR_WIDTH) { - __m128i r, g, b, a, line1; - line1 = *(__m128i*)ysrc; - PIPE_READ_WRITE_BARRIER(); - ysrc += src_stride; - r = _mm_shuffle_epi8(line0, shuffle00); - g = _mm_shuffle_epi8(line0, shuffle01); - b = _mm_shuffle_epi8(line0, shuffle02); - a = _mm_shuffle_epi8(line0, shuffle03); - - line0 = *(__m128i*)ysrc; - PIPE_READ_WRITE_BARRIER(); - ysrc += src_stride; - r = _mm_or_si128(r, _mm_shuffle_epi8(line1, shuffle10)); - g = _mm_or_si128(g, _mm_shuffle_epi8(line1, shuffle11)); - b = _mm_or_si128(b, _mm_shuffle_epi8(line1, shuffle12)); - a = _mm_or_si128(a, _mm_shuffle_epi8(line1, shuffle13)); - - line1 = *(__m128i*)ysrc; - PIPE_READ_WRITE_BARRIER(); - ysrc -= tile_stridex; - r = _mm_or_si128(r, _mm_shuffle_epi8(line0, shuffle20)); - g = _mm_or_si128(g, _mm_shuffle_epi8(line0, shuffle21)); - b = _mm_or_si128(b, _mm_shuffle_epi8(line0, shuffle22)); - a = _mm_or_si128(a, _mm_shuffle_epi8(line0, shuffle23)); - - if (x + 1 < TILE_SIZE) { - line0 = *(__m128i*)ysrc; - ysrc += src_stride; - } - - PIPE_READ_WRITE_BARRIER(); - r = _mm_or_si128(r, _mm_shuffle_epi8(line1, shuffle30)); - g = _mm_or_si128(g, _mm_shuffle_epi8(line1, shuffle31)); - b = _mm_or_si128(b, _mm_shuffle_epi8(line1, shuffle32)); - a = _mm_or_si128(a, _mm_shuffle_epi8(line1, shuffle33)); - - *pdst++ = r; - *pdst++ = g; - *pdst++ = b; - *pdst++ = a; + + src += y0 * src_stride; + src += x0 * sizeof(uint32_t); + + for (y = 0; y < TILE_SIZE; y += 4) { + const uint8_t *src_row = src; + + for (x = 0; x < TILE_SIZE; x += 4) { + swz4(*(__m128i *) (src_row + 0 * src_stride), + *(__m128i *) (src_row + 1 * src_stride), + *(__m128i *) (src_row + 2 * src_stride), + *(__m128i *) (src_row + 3 * src_stride), + dst128 + 2, /* b */ + dst128 + 1, /* g */ + dst128 + 0, /* r */ + dst128 + 3); /* a */ + + dst128 += 4; + src_row += sizeof(__m128i); } - } + src += 4 * src_stride; + } } static void @@ -384,73 +395,29 @@ lp_tile_b8g8r8a8_unorm_unswizzle_4ub_ssse3(const uint8_t *src, unsigned x0, unsigned y0) { unsigned int x, y; - const __m128i *psrc = (__m128i*) src; - const __m128i *end = (__m128i*) (src + (y0 + TILE_SIZE - 1)*dst_stride + (x0 + TILE_SIZE - 1)*sizeof(uint32_t)); - uint8_t *pdst = dst + y0 * dst_stride + x0 * sizeof(uint32_t); - __m128i c0 = *psrc++; - __m128i c1; - - const __m128i shuffle00 = _mm_setr_epi8(0xff,0xff,0x00,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0x04,0xff,0xff,0xff,0x05,0xff); - const __m128i shuffle01 = _mm_setr_epi8(0xff,0xff,0x02,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0x06,0xff,0xff,0xff,0x07,0xff); - const __m128i shuffle02 = _mm_setr_epi8(0xff,0xff,0x08,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0x0c,0xff,0xff,0xff,0x0d,0xff); - const __m128i shuffle03 = _mm_setr_epi8(0xff,0xff,0x0a,0xff,0xff,0xff,0x0b,0xff,0xff,0xff,0x0e,0xff,0xff,0xff,0x0f,0xff); - - const __m128i shuffle10 = _mm_setr_epi8(0xff,0x00,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0x04,0xff,0xff,0xff,0x05,0xff,0xff); - const __m128i shuffle11 = _mm_setr_epi8(0xff,0x02,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0x06,0xff,0xff,0xff,0x07,0xff,0xff); - const __m128i shuffle12 = _mm_setr_epi8(0xff,0x08,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0x0c,0xff,0xff,0xff,0x0d,0xff,0xff); - const __m128i shuffle13 = _mm_setr_epi8(0xff,0x0a,0xff,0xff,0xff,0x0b,0xff,0xff,0xff,0x0e,0xff,0xff,0xff,0x0f,0xff,0xff); - - const __m128i shuffle20 = _mm_setr_epi8(0x00,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0x04,0xff,0xff,0xff,0x05,0xff,0xff,0xff); - const __m128i shuffle21 = _mm_setr_epi8(0x02,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0x06,0xff,0xff,0xff,0x07,0xff,0xff,0xff); - const __m128i shuffle22 = _mm_setr_epi8(0x08,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0x0c,0xff,0xff,0xff,0x0d,0xff,0xff,0xff); - const __m128i shuffle23 = _mm_setr_epi8(0x0a,0xff,0xff,0xff,0x0b,0xff,0xff,0xff,0x0e,0xff,0xff,0xff,0x0f,0xff,0xff,0xff); - - const __m128i shuffle30 = _mm_setr_epi8(0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0x04,0xff,0xff,0xff,0x05); - const __m128i shuffle31 = _mm_setr_epi8(0xff,0xff,0xff,0x02,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0x06,0xff,0xff,0xff,0x07); - const __m128i shuffle32 = _mm_setr_epi8(0xff,0xff,0xff,0x08,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0x0c,0xff,0xff,0xff,0x0d); - const __m128i shuffle33 = _mm_setr_epi8(0xff,0xff,0xff,0x0a,0xff,0xff,0xff,0x0b,0xff,0xff,0xff,0x0e,0xff,0xff,0xff,0x0f); - - for (y = 0; y < TILE_SIZE; y += TILE_VECTOR_HEIGHT) { - __m128i *tile = (__m128i*) pdst; - pdst += dst_stride * TILE_VECTOR_HEIGHT; - for (x = 0; x < TILE_SIZE; x += TILE_VECTOR_WIDTH) { - uint8_t *linep = (uint8_t*) (tile++); - __m128i line0, line1, line2, line3; - - c1 = *psrc++; /* r */ - PIPE_READ_WRITE_BARRIER(); - line0 = _mm_shuffle_epi8(c0, shuffle00); - line1 = _mm_shuffle_epi8(c0, shuffle01); - line2 = _mm_shuffle_epi8(c0, shuffle02); - line3 = _mm_shuffle_epi8(c0, shuffle03); - - c0 = *psrc++; /* g */ - PIPE_READ_WRITE_BARRIER(); - line0 = _mm_or_si128(line0, _mm_shuffle_epi8(c1, shuffle10)); - line1 = _mm_or_si128(line1, _mm_shuffle_epi8(c1, shuffle11)); - line2 = _mm_or_si128(line2, _mm_shuffle_epi8(c1, shuffle12)); - line3 = _mm_or_si128(line3, _mm_shuffle_epi8(c1, shuffle13)); - - c1 = *psrc++; /* b */ - PIPE_READ_WRITE_BARRIER(); - line0 = _mm_or_si128(line0, _mm_shuffle_epi8(c0, shuffle20)); - line1 = _mm_or_si128(line1, _mm_shuffle_epi8(c0, shuffle21)); - line2 = _mm_or_si128(line2, _mm_shuffle_epi8(c0, shuffle22)); - line3 = _mm_or_si128(line3, _mm_shuffle_epi8(c0, shuffle23)); - - if (psrc != end) - c0 = *psrc++; /* a */ - PIPE_READ_WRITE_BARRIER(); - line0 = _mm_or_si128(line0, _mm_shuffle_epi8(c1, shuffle30)); - line1 = _mm_or_si128(line1, _mm_shuffle_epi8(c1, shuffle31)); - line2 = _mm_or_si128(line2, _mm_shuffle_epi8(c1, shuffle32)); - line3 = _mm_or_si128(line3, _mm_shuffle_epi8(c1, shuffle33)); - - *(__m128i*) (linep) = line0; - *(__m128i*) (((char*)linep) + dst_stride) = line1; - *(__m128i*) (((char*)linep) + 2 * dst_stride) = line2; - *(__m128i*) (((char*)linep) + 3 * dst_stride) = line3; + const __m128i *src128 = (const __m128i *) src; + + dst += y0 * dst_stride; + dst += x0 * sizeof(uint32_t); + + for (y = 0; y < TILE_SIZE; y += 4) { + const uint8_t *dst_row = dst; + + for (x = 0; x < TILE_SIZE; x += 4) { + unswz4( src128[2], /* b */ + src128[1], /* g */ + src128[0], /* r */ + src128[3], /* a */ + (__m128i *) (dst_row + 0 * dst_stride), + (__m128i *) (dst_row + 1 * dst_stride), + (__m128i *) (dst_row + 2 * dst_stride), + (__m128i *) (dst_row + 3 * dst_stride)); + + src128 += 4; + dst_row += sizeof(__m128i);; } + + dst += 4 * dst_stride; } } -- cgit v1.2.3 From edba53024f85a27fcbca7cbe139ceda172406653 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 6 Oct 2010 21:01:38 +0100 Subject: llvmpipe: Fix MSVC build. Enable the new SSE2 code on non SSE3 systems. --- src/gallium/drivers/llvmpipe/lp_tile_soa.py | 86 +++++++++++++++-------------- 1 file changed, 44 insertions(+), 42 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_tile_soa.py b/src/gallium/drivers/llvmpipe/lp_tile_soa.py index c76549cdadf..e49f9c62fe7 100644 --- a/src/gallium/drivers/llvmpipe/lp_tile_soa.py +++ b/src/gallium/drivers/llvmpipe/lp_tile_soa.py @@ -289,29 +289,30 @@ def generate_format_write(format, src_channel, src_native_type, src_suffix): print -def generate_ssse3(): +def generate_sse2(): print ''' #if defined(PIPE_ARCH_SSE) #include "util/u_sse.h" -static INLINE void swz4( __m128i x, - __m128i y, - __m128i z, - __m128i w, - __m128i *a, - __m128i *b, - __m128i *c, - __m128i *d) +static ALWAYS_INLINE void +swz4( const __m128i * restrict x, + const __m128i * restrict y, + const __m128i * restrict z, + const __m128i * restrict w, + __m128i * restrict a, + __m128i * restrict b, + __m128i * restrict c, + __m128i * restrict d) { __m128i i, j, k, l; __m128i m, n, o, p; __m128i e, f, g, h; - m = _mm_unpacklo_epi8(x,y); - n = _mm_unpackhi_epi8(x,y); - o = _mm_unpacklo_epi8(z,w); - p = _mm_unpackhi_epi8(z,w); + m = _mm_unpacklo_epi8(*x,*y); + n = _mm_unpackhi_epi8(*x,*y); + o = _mm_unpacklo_epi8(*z,*w); + p = _mm_unpackhi_epi8(*z,*w); i = _mm_unpacklo_epi16(m,n); j = _mm_unpackhi_epi16(m,n); @@ -329,22 +330,23 @@ static INLINE void swz4( __m128i x, *d = _mm_unpackhi_epi64(f,h); } -static INLINE void unswz4( __m128i a, - __m128i b, - __m128i c, - __m128i d, - __m128i *x, - __m128i *y, - __m128i *z, - __m128i *w) +static ALWAYS_INLINE void +unswz4( const __m128i * restrict a, + const __m128i * restrict b, + const __m128i * restrict c, + const __m128i * restrict d, + __m128i * restrict x, + __m128i * restrict y, + __m128i * restrict z, + __m128i * restrict w) { __m128i i, j, k, l; __m128i m, n, o, p; - i = _mm_unpacklo_epi8(a,b); - j = _mm_unpackhi_epi8(a,b); - k = _mm_unpacklo_epi8(c,d); - l = _mm_unpackhi_epi8(c,d); + i = _mm_unpacklo_epi8(*a,*b); + j = _mm_unpackhi_epi8(*a,*b); + k = _mm_unpacklo_epi8(*c,*d); + l = _mm_unpackhi_epi8(*c,*d); m = _mm_unpacklo_epi16(i,k); n = _mm_unpackhi_epi16(i,k); @@ -358,9 +360,9 @@ static INLINE void unswz4( __m128i a, } static void -lp_tile_b8g8r8a8_unorm_swizzle_4ub_ssse3(uint8_t *dst, - const uint8_t *src, unsigned src_stride, - unsigned x0, unsigned y0) +lp_tile_b8g8r8a8_unorm_swizzle_4ub_sse2(uint8_t * restrict dst, + const uint8_t * restrict src, unsigned src_stride, + unsigned x0, unsigned y0) { __m128i *dst128 = (__m128i *) dst; unsigned x, y; @@ -372,10 +374,10 @@ lp_tile_b8g8r8a8_unorm_swizzle_4ub_ssse3(uint8_t *dst, const uint8_t *src_row = src; for (x = 0; x < TILE_SIZE; x += 4) { - swz4(*(__m128i *) (src_row + 0 * src_stride), - *(__m128i *) (src_row + 1 * src_stride), - *(__m128i *) (src_row + 2 * src_stride), - *(__m128i *) (src_row + 3 * src_stride), + swz4((const __m128i *) (src_row + 0 * src_stride), + (const __m128i *) (src_row + 1 * src_stride), + (const __m128i *) (src_row + 2 * src_stride), + (const __m128i *) (src_row + 3 * src_stride), dst128 + 2, /* b */ dst128 + 1, /* g */ dst128 + 0, /* r */ @@ -390,8 +392,8 @@ lp_tile_b8g8r8a8_unorm_swizzle_4ub_ssse3(uint8_t *dst, } static void -lp_tile_b8g8r8a8_unorm_unswizzle_4ub_ssse3(const uint8_t *src, - uint8_t *dst, unsigned dst_stride, +lp_tile_b8g8r8a8_unorm_unswizzle_4ub_sse2(const uint8_t * restrict src, + uint8_t * restrict dst, unsigned dst_stride, unsigned x0, unsigned y0) { unsigned int x, y; @@ -404,10 +406,10 @@ lp_tile_b8g8r8a8_unorm_unswizzle_4ub_ssse3(const uint8_t *src, const uint8_t *dst_row = dst; for (x = 0; x < TILE_SIZE; x += 4) { - unswz4( src128[2], /* b */ - src128[1], /* g */ - src128[0], /* r */ - src128[3], /* a */ + unswz4( &src128[2], /* b */ + &src128[1], /* g */ + &src128[0], /* r */ + &src128[3], /* a */ (__m128i *) (dst_row + 0 * dst_stride), (__m128i *) (dst_row + 1 * dst_stride), (__m128i *) (dst_row + 2 * dst_stride), @@ -421,7 +423,7 @@ lp_tile_b8g8r8a8_unorm_unswizzle_4ub_ssse3(const uint8_t *src, } } -#endif /* PIPE_ARCH_SSSE3 */ +#endif /* PIPE_ARCH_SSE */ ''' @@ -446,7 +448,7 @@ def generate_swizzle(formats, dst_channel, dst_native_type, dst_suffix): func_name = 'lp_tile_%s_swizzle_%s' % (format.short_name(), dst_suffix) if format.name == 'PIPE_FORMAT_B8G8R8A8_UNORM': print '#ifdef PIPE_ARCH_SSE' - print ' func = util_cpu_caps.has_ssse3 ? %s_ssse3 : %s;' % (func_name, func_name) + print ' func = util_cpu_caps.has_sse2 ? %s_sse2 : %s;' % (func_name, func_name) print '#else' print ' func = %s;' % (func_name,) print '#endif' @@ -484,7 +486,7 @@ def generate_unswizzle(formats, src_channel, src_native_type, src_suffix): func_name = 'lp_tile_%s_unswizzle_%s' % (format.short_name(), src_suffix) if format.name == 'PIPE_FORMAT_B8G8R8A8_UNORM': print '#ifdef PIPE_ARCH_SSE' - print ' func = util_cpu_caps.has_ssse3 ? %s_ssse3 : %s;' % (func_name, func_name) + print ' func = util_cpu_caps.has_sse2 ? %s_sse2 : %s;' % (func_name, func_name) print '#else' print ' func = %s;' % (func_name,) print '#endif' @@ -544,7 +546,7 @@ def main(): print '};' print - generate_ssse3() + generate_sse2() channel = Channel(UNSIGNED, True, 8) native_type = 'uint8_t' -- cgit v1.2.3 From 53d7f5e107b82550024a57232f3333d2f76e39de Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 12:08:25 +0100 Subject: gallivm: Handle code have ret correctly. Stop disassembling on unconditional backwards jumps. --- src/gallium/auxiliary/gallivm/lp_bld_debug.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.c b/src/gallium/auxiliary/gallivm/lp_bld_debug.c index d3a5afff8c2..8c1df0d8e30 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.c @@ -115,8 +115,10 @@ lp_disassemble(const void* func) } } - if ((ud_insn_off(&ud_obj) >= max_jmp_pc && ud_obj.mnemonic == UD_Iret) || - ud_obj.mnemonic == UD_Iinvalid) + if (ud_obj.mnemonic == UD_Iinvalid || + (ud_insn_off(&ud_obj) >= max_jmp_pc && + (ud_obj.mnemonic == UD_Iret || + ud_obj.mnemonic == UD_Ijmp))) break; } -- cgit v1.2.3 From 52427f0ba703f933b70d669ae565c7aeb733236d Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 12:10:07 +0100 Subject: util: Defined M_SQRT2 when not available. --- src/gallium/auxiliary/util/u_math.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h index 69a76814945..37294b7203f 100644 --- a/src/gallium/auxiliary/util/u_math.h +++ b/src/gallium/auxiliary/util/u_math.h @@ -118,6 +118,11 @@ __inline double __cdecl atan2(double val) #endif +#ifndef M_SQRT2 +#define M_SQRT2 1.41421356237309504880 +#endif + + #if defined(_MSC_VER) #if _MSC_VER < 1400 && !defined(__cplusplus) || defined(PIPE_SUBSYSTEM_WINDOWS_CE) -- cgit v1.2.3 From 81a09c8a975ec1e727a7863823e39549c5096746 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 12:11:20 +0100 Subject: gallivm: Less code duplication in log computation. --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 113 +++++++++++++++++++--------- src/gallium/auxiliary/gallivm/lp_bld_arit.h | 10 ++- 2 files changed, 88 insertions(+), 35 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 6ab13506e15..2c049d02934 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -2261,6 +2261,71 @@ lp_build_exp2(struct lp_build_context *bld, } +/** + * Extract the exponent of a IEEE-754 floating point value. + * + * Optionally apply an integer bias. + * + * Result is an integer value with + * + * ifloor(log2(x)) + bias + */ +LLVMValueRef +lp_build_extract_exponent(struct lp_build_context *bld, + LLVMValueRef x, + int bias) +{ + const struct lp_type type = bld->type; + unsigned mantissa = lp_mantissa(type); + LLVMValueRef res; + + assert(type.floating); + + assert(lp_check_value(bld->type, x)); + + x = LLVMBuildBitCast(bld->builder, x, bld->int_vec_type, ""); + + res = LLVMBuildLShr(bld->builder, x, lp_build_const_int_vec(type, mantissa), ""); + res = LLVMBuildAnd(bld->builder, res, lp_build_const_int_vec(type, 255), ""); + res = LLVMBuildSub(bld->builder, res, lp_build_const_int_vec(type, 127 - bias), ""); + + return res; +} + + +/** + * Extract the mantissa of the a floating. + * + * Result is a floating point value with + * + * x / floor(log2(x)) + */ +LLVMValueRef +lp_build_extract_mantissa(struct lp_build_context *bld, + LLVMValueRef x) +{ + const struct lp_type type = bld->type; + unsigned mantissa = lp_mantissa(type); + LLVMValueRef mantmask = lp_build_const_int_vec(type, (1ULL << mantissa) - 1); + LLVMValueRef one = LLVMConstBitCast(bld->one, bld->int_vec_type); + LLVMValueRef res; + + assert(lp_check_value(bld->type, x)); + + assert(type.floating); + + x = LLVMBuildBitCast(bld->builder, x, bld->int_vec_type, ""); + + /* res = x / 2**ipart */ + res = LLVMBuildAnd(bld->builder, x, mantmask, ""); + res = LLVMBuildOr(bld->builder, res, one, ""); + res = LLVMBuildBitCast(bld->builder, res, bld->vec_type, ""); + + return res; +} + + + /** * Minimax polynomial fit of log2(x)/(x - 1), for x in range [1, 2[ * These coefficients can be generate with @@ -2385,7 +2450,10 @@ lp_build_log2(struct lp_build_context *bld, /** * Faster (and less accurate) log2. * - * log2(x) = floor(log2(x)) + frac(x) + * log2(x) = floor(log2(x)) - 1 + x / 2**floor(log2(x)) + * + * Piece-wise linear approximation, with exact results when x is a + * power of two. * * See http://www.flipcode.com/archives/Fast_log_Function.shtml */ @@ -2393,35 +2461,21 @@ LLVMValueRef lp_build_fast_log2(struct lp_build_context *bld, LLVMValueRef x) { - const struct lp_type type = bld->type; - LLVMTypeRef vec_type = bld->vec_type; - LLVMTypeRef int_vec_type = bld->int_vec_type; - - unsigned mantissa = lp_mantissa(type); - LLVMValueRef mantmask = lp_build_const_int_vec(type, (1ULL << mantissa) - 1); - LLVMValueRef one = LLVMConstBitCast(bld->one, int_vec_type); - LLVMValueRef ipart; LLVMValueRef fpart; assert(lp_check_value(bld->type, x)); - assert(type.floating); - - x = LLVMBuildBitCast(bld->builder, x, int_vec_type, ""); + assert(bld->type.floating); /* ipart = floor(log2(x)) - 1 */ - ipart = LLVMBuildLShr(bld->builder, x, lp_build_const_int_vec(type, mantissa), ""); - ipart = LLVMBuildAnd(bld->builder, ipart, lp_build_const_int_vec(type, 255), ""); - ipart = LLVMBuildSub(bld->builder, ipart, lp_build_const_int_vec(type, 128), ""); - ipart = LLVMBuildSIToFP(bld->builder, ipart, vec_type, ""); + ipart = lp_build_extract_exponent(bld, x, -1); + ipart = LLVMBuildSIToFP(bld->builder, ipart, bld->vec_type, ""); - /* fpart = 1.0 + frac(x) */ - fpart = LLVMBuildAnd(bld->builder, x, mantmask, ""); - fpart = LLVMBuildOr(bld->builder, fpart, one, ""); - fpart = LLVMBuildBitCast(bld->builder, fpart, vec_type, ""); + /* fpart = x / 2**ipart */ + fpart = lp_build_extract_mantissa(bld, x); - /* floor(log2(x)) + frac(x) */ + /* ipart + fpart */ return LLVMBuildFAdd(bld->builder, ipart, fpart, ""); } @@ -2435,27 +2489,18 @@ LLVMValueRef lp_build_ilog2(struct lp_build_context *bld, LLVMValueRef x) { - const struct lp_type type = bld->type; - LLVMTypeRef int_vec_type = bld->int_vec_type; - - unsigned mantissa = lp_mantissa(type); - LLVMValueRef sqrt2 = lp_build_const_vec(type, 1.4142135623730951); - + LLVMValueRef sqrt2 = lp_build_const_vec(bld->type, M_SQRT2); LLVMValueRef ipart; - assert(lp_check_value(bld->type, x)); + assert(bld->type.floating); - assert(type.floating); + assert(lp_check_value(bld->type, x)); /* x * 2^(0.5) i.e., add 0.5 to the log2(x) */ x = LLVMBuildFMul(bld->builder, x, sqrt2, ""); - x = LLVMBuildBitCast(bld->builder, x, int_vec_type, ""); - /* ipart = floor(log2(x) + 0.5) */ - ipart = LLVMBuildLShr(bld->builder, x, lp_build_const_int_vec(type, mantissa), ""); - ipart = LLVMBuildAnd(bld->builder, ipart, lp_build_const_int_vec(type, 255), ""); - ipart = LLVMBuildSub(bld->builder, ipart, lp_build_const_int_vec(type, 127), ""); + ipart = lp_build_extract_exponent(bld, x, 0); return ipart; } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.h b/src/gallium/auxiliary/gallivm/lp_bld_arit.h index 8424384f8f7..c78b61decf0 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.h @@ -214,6 +214,15 @@ LLVMValueRef lp_build_exp2(struct lp_build_context *bld, LLVMValueRef a); +LLVMValueRef +lp_build_extract_exponent(struct lp_build_context *bld, + LLVMValueRef x, + int bias); + +LLVMValueRef +lp_build_extract_mantissa(struct lp_build_context *bld, + LLVMValueRef x); + LLVMValueRef lp_build_log2(struct lp_build_context *bld, LLVMValueRef a); @@ -226,7 +235,6 @@ LLVMValueRef lp_build_ilog2(struct lp_build_context *bld, LLVMValueRef x); - void lp_build_exp2_approx(struct lp_build_context *bld, LLVMValueRef x, -- cgit v1.2.3 From 679dd26623a53b5a052845bf4c6aef224cfdd5a2 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 12:12:03 +0100 Subject: gallivm: Special bri-linear computation path for unmodified rho. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 111 +++++++++++++++++++++----- 1 file changed, 91 insertions(+), 20 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 5bc3c263a0f..43ea8b1a140 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -294,31 +294,30 @@ lp_build_rho(struct lp_build_sample_context *bld, * TODO: This could be done in fixed point, where applicable. */ static void -lp_build_brilinear_lod(struct lp_build_sample_context *bld, +lp_build_brilinear_lod(struct lp_build_context *bld, LLVMValueRef lod, double factor, LLVMValueRef *out_lod_ipart, LLVMValueRef *out_lod_fpart) { - struct lp_build_context *float_bld = &bld->float_bld; LLVMValueRef lod_fpart; - float pre_offset = (factor - 0.5)/factor - 0.5; - float post_offset = 1 - factor; + double pre_offset = (factor - 0.5)/factor - 0.5; + double post_offset = 1 - factor; if (0) { lp_build_printf(bld->builder, "lod = %f\n", lod); } - lod = lp_build_add(float_bld, lod, - lp_build_const_vec(float_bld->type, pre_offset)); + lod = lp_build_add(bld, lod, + lp_build_const_vec(bld->type, pre_offset)); - lp_build_ifloor_fract(float_bld, lod, out_lod_ipart, &lod_fpart); + lp_build_ifloor_fract(bld, lod, out_lod_ipart, &lod_fpart); - lod_fpart = lp_build_mul(float_bld, lod_fpart, - lp_build_const_vec(float_bld->type, factor)); + lod_fpart = lp_build_mul(bld, lod_fpart, + lp_build_const_vec(bld->type, factor)); - lod_fpart = lp_build_add(float_bld, lod_fpart, - lp_build_const_vec(float_bld->type, post_offset)); + lod_fpart = lp_build_add(bld, lod_fpart, + lp_build_const_vec(bld->type, post_offset)); /* * It's not necessary to clamp lod_fpart since: @@ -335,6 +334,61 @@ lp_build_brilinear_lod(struct lp_build_sample_context *bld, } +/* + * Combined log2 and brilinear lod computation. + * + * It's in all identical to calling lp_build_fast_log2() and + * lp_build_brilinear_lod() above, but by combining we can compute the interger + * and fractional part independently. + */ +static void +lp_build_brilinear_rho(struct lp_build_context *bld, + LLVMValueRef rho, + double factor, + LLVMValueRef *out_lod_ipart, + LLVMValueRef *out_lod_fpart) +{ + LLVMValueRef lod_ipart; + LLVMValueRef lod_fpart; + + const double pre_factor = (2*factor - 0.5)/(M_SQRT2*factor); + const double post_offset = 1 - 2*factor; + + assert(bld->type.floating); + + assert(lp_check_value(bld->type, rho)); + + /* + * The pre factor will make the intersections with the exact powers of two + * happen precisely where we want then to be, which means that the integer + * part will not need any post adjustments. + */ + rho = lp_build_mul(bld, rho, + lp_build_const_vec(bld->type, pre_factor)); + + /* ipart = ifloor(log2(rho)) */ + lod_ipart = lp_build_extract_exponent(bld, rho, 0); + + /* fpart = rho / 2**ipart */ + lod_fpart = lp_build_extract_mantissa(bld, rho); + + lod_fpart = lp_build_mul(bld, lod_fpart, + lp_build_const_vec(bld->type, factor)); + + lod_fpart = lp_build_add(bld, lod_fpart, + lp_build_const_vec(bld->type, post_offset)); + + /* + * Like lp_build_brilinear_lod, it's not necessary to clamp lod_fpart since: + * - the above expression will never produce numbers greater than one. + * - the mip filtering branch is only taken if lod_fpart is positive + */ + + *out_lod_ipart = lod_ipart; + *out_lod_fpart = lod_fpart; +} + + /** * Generate code to compute texture level of detail (lambda). * \param ddx partial derivatives of (s, t, r, q) with respect to X @@ -389,16 +443,32 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, rho = lp_build_rho(bld, ddx, ddy); - /* compute lod = log2(rho) */ - if ((mip_filter == PIPE_TEX_MIPFILTER_NONE || - mip_filter == PIPE_TEX_MIPFILTER_NEAREST) && - !lod_bias && + /* + * Compute lod = log2(rho) + */ + + if (!lod_bias && !bld->static_state->lod_bias_non_zero && !bld->static_state->apply_max_lod && !bld->static_state->apply_min_lod) { - *out_lod_ipart = lp_build_ilog2(float_bld, rho); - *out_lod_fpart = bld->float_bld.zero; - return; + /* + * Special case when there are no post-log2 adjustments, which + * saves instructions but keeping the integer and fractional lod + * computations separate from the start. + */ + + if (mip_filter == PIPE_TEX_MIPFILTER_NONE || + mip_filter == PIPE_TEX_MIPFILTER_NEAREST) { + *out_lod_ipart = lp_build_ilog2(float_bld, rho); + *out_lod_fpart = bld->float_bld.zero; + return; + } + if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR && + BRILINEAR_FACTOR > 1.0) { + lp_build_brilinear_rho(float_bld, rho, BRILINEAR_FACTOR, + out_lod_ipart, out_lod_fpart); + return; + } } if (0) { @@ -438,20 +508,21 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { if (BRILINEAR_FACTOR > 1.0) { - lp_build_brilinear_lod(bld, lod, BRILINEAR_FACTOR, + lp_build_brilinear_lod(float_bld, lod, BRILINEAR_FACTOR, out_lod_ipart, out_lod_fpart); } else { lp_build_ifloor_fract(float_bld, lod, out_lod_ipart, out_lod_fpart); } - lp_build_name(*out_lod_ipart, "lod_ipart"); lp_build_name(*out_lod_fpart, "lod_fpart"); } else { *out_lod_ipart = lp_build_iround(float_bld, lod); } + lp_build_name(*out_lod_ipart, "lod_ipart"); + return; } -- cgit v1.2.3 From cc40abad519cc0f765c6d8f6fad4154bed8dd9c2 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 12:55:31 +0100 Subject: gallivm: Don't generate Phis for execution mask. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 28 +++++++++++++++++++++------- src/gallium/auxiliary/gallivm/lp_bld_flow.h | 5 ++++- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 8 ++++---- src/gallium/drivers/llvmpipe/lp_state_fs.c | 8 +++----- 4 files changed, 32 insertions(+), 17 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index 1ec33c742e2..a5d65e9b396 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -454,12 +454,15 @@ void lp_build_mask_check(struct lp_build_mask_context *mask) { LLVMBuilderRef builder = mask->flow->builder; + LLVMValueRef value; LLVMValueRef cond; + value = lp_build_mask_value(mask); + /* cond = (mask == 0) */ cond = LLVMBuildICmp(builder, LLVMIntEQ, - LLVMBuildBitCast(builder, mask->value, mask->reg_type, ""), + LLVMBuildBitCast(builder, value, mask->reg_type, ""), LLVMConstNull(mask->reg_type), ""); @@ -485,14 +488,23 @@ lp_build_mask_begin(struct lp_build_mask_context *mask, mask->flow = flow; mask->reg_type = LLVMIntType(type.width * type.length); - mask->value = value; + mask->var = lp_build_alloca(flow->builder, + lp_build_int_vec_type(type), + "execution_mask"); + + LLVMBuildStore(flow->builder, value, mask->var); - lp_build_flow_scope_begin(flow); - lp_build_flow_scope_declare(flow, &mask->value); lp_build_flow_skip_begin(flow); } +LLVMValueRef +lp_build_mask_value(struct lp_build_mask_context *mask) +{ + return LLVMBuildLoad(mask->flow->builder, mask->var, ""); +} + + /** * Update boolean mask with given value (bitwise AND). * Typically used to update the quad's pixel alive/killed mask @@ -502,7 +514,10 @@ void lp_build_mask_update(struct lp_build_mask_context *mask, LLVMValueRef value) { - mask->value = LLVMBuildAnd( mask->flow->builder, mask->value, value, ""); + value = LLVMBuildAnd(mask->flow->builder, + lp_build_mask_value(mask), + value, ""); + LLVMBuildStore(mask->flow->builder, value, mask->var); } @@ -513,8 +528,7 @@ LLVMValueRef lp_build_mask_end(struct lp_build_mask_context *mask) { lp_build_flow_skip_end(mask->flow); - lp_build_flow_scope_end(mask->flow); - return mask->value; + return lp_build_mask_value(mask); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h b/src/gallium/auxiliary/gallivm/lp_bld_flow.h index 095c781ec54..0fc6317b339 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h @@ -77,7 +77,7 @@ struct lp_build_mask_context LLVMTypeRef reg_type; - LLVMValueRef value; + LLVMValueRef var; }; @@ -87,6 +87,9 @@ lp_build_mask_begin(struct lp_build_mask_context *mask, struct lp_type type, LLVMValueRef value); +LLVMValueRef +lp_build_mask_value(struct lp_build_mask_context *mask); + /** * Bitwise AND the mask with the given value, if a previous mask was set. */ diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 8d9be2ebbbf..e768493103e 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -473,7 +473,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef stencil_vals = NULL; LLVMValueRef z_bitmask = NULL, stencil_shift = NULL; LLVMValueRef z_pass = NULL, s_pass_mask = NULL; - LLVMValueRef orig_mask = mask->value; + LLVMValueRef orig_mask = lp_build_mask_value(mask); LLVMValueRef front_facing = NULL; /* Prototype a simpler path: @@ -527,7 +527,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, type.sign = 1; lp_build_context_init(&bld, builder, type); - z_dst = lp_build_select(&bld, mask->value, z_src, z_dst); + z_dst = lp_build_select(&bld, lp_build_mask_value(mask), z_src, z_dst); z_dst = LLVMBuildShl(builder, z_dst, const_8_int, "z_dst"); *zs_value = z_dst; } @@ -710,7 +710,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } if (depth->writemask) { - LLVMValueRef zselectmask = mask->value; + LLVMValueRef zselectmask = lp_build_mask_value(mask); /* mask off bits that failed Z test */ zselectmask = LLVMBuildAnd(builder, zselectmask, z_pass, ""); @@ -810,7 +810,7 @@ lp_build_deferred_depth_write(LLVMBuilderRef builder, lp_build_context_init(&bld, builder, type); z_dst = LLVMBuildLoad(builder, zs_dst_ptr, "zsbufval"); - z_dst = lp_build_select(&bld, mask->value, zs_value, z_dst); + z_dst = lp_build_select(&bld, lp_build_mask_value(mask), zs_value, z_dst); LLVMBuildStore(builder, z_dst, zs_dst_ptr); } diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index f45f36f6332..cf07cb49764 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -422,16 +422,14 @@ generate_fs(struct llvmpipe_context *lp, } if (counter) - lp_build_occlusion_count(builder, type, mask.value, counter); + lp_build_occlusion_count(builder, type, + lp_build_mask_value(&mask), counter); - lp_build_mask_end(&mask); + *pmask = lp_build_mask_end(&mask); lp_build_flow_scope_end(flow); lp_build_flow_destroy(flow); - - *pmask = mask.value; - } -- cgit v1.2.3 From ea7b49028b15364a32988ec77ec88f2a6a591437 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 19:53:21 +0100 Subject: gallivm: Use varilables instead of Phis for cubemap selection. --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 62 +++++++++++---------------- 1 file changed, 26 insertions(+), 36 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 43ea8b1a140..acceae2badd 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -927,21 +927,15 @@ lp_build_cube_lookup(struct lp_build_sample_context *bld, { struct lp_build_flow_context *flow_ctx; struct lp_build_if_state if_ctx; + LLVMValueRef face_s_var; + LLVMValueRef face_t_var; + LLVMValueRef face_var; flow_ctx = lp_build_flow_create(bld->builder); - lp_build_flow_scope_begin(flow_ctx); - *face_s = bld->coord_bld.undef; - *face_t = bld->coord_bld.undef; - *face = bld->int_bld.undef; - - lp_build_name(*face_s, "face_s"); - lp_build_name(*face_t, "face_t"); - lp_build_name(*face, "face"); - - lp_build_flow_scope_declare(flow_ctx, face_s); - lp_build_flow_scope_declare(flow_ctx, face_t); - lp_build_flow_scope_declare(flow_ctx, face); + face_s_var = lp_build_alloca(bld->builder, bld->coord_bld.vec_type, "face_s_var"); + face_t_var = lp_build_alloca(bld->builder, bld->coord_bld.vec_type, "face_t_var"); + face_var = lp_build_alloca(bld->builder, bld->int_bld.vec_type, "face_var"); lp_build_if(&if_ctx, flow_ctx, bld->builder, arx_ge_ary_arz); { @@ -953,57 +947,53 @@ lp_build_cube_lookup(struct lp_build_sample_context *bld, *face = lp_build_cube_face(bld, rx, PIPE_TEX_FACE_POS_X, PIPE_TEX_FACE_NEG_X); + LLVMBuildStore(bld->builder, *face_s, face_s_var); + LLVMBuildStore(bld->builder, *face_t, face_t_var); + LLVMBuildStore(bld->builder, *face, face_var); } lp_build_else(&if_ctx); { - struct lp_build_flow_context *flow_ctx2; struct lp_build_if_state if_ctx2; - LLVMValueRef face_s2 = bld->coord_bld.undef; - LLVMValueRef face_t2 = bld->coord_bld.undef; - LLVMValueRef face2 = bld->int_bld.undef; - - flow_ctx2 = lp_build_flow_create(bld->builder); - lp_build_flow_scope_begin(flow_ctx2); - lp_build_flow_scope_declare(flow_ctx2, &face_s2); - lp_build_flow_scope_declare(flow_ctx2, &face_t2); - lp_build_flow_scope_declare(flow_ctx2, &face2); - ary_ge_arx_arz = LLVMBuildAnd(bld->builder, ary_ge_arx, ary_ge_arz, ""); - lp_build_if(&if_ctx2, flow_ctx2, bld->builder, ary_ge_arx_arz); + lp_build_if(&if_ctx2, flow_ctx, bld->builder, ary_ge_arx_arz); { /* +/- Y face */ LLVMValueRef sign = lp_build_sgn(float_bld, ry); LLVMValueRef ima = lp_build_cube_ima(coord_bld, t); - face_s2 = lp_build_cube_coord(coord_bld, NULL, -1, s, ima); - face_t2 = lp_build_cube_coord(coord_bld, sign, -1, r, ima); - face2 = lp_build_cube_face(bld, ry, + *face_s = lp_build_cube_coord(coord_bld, NULL, -1, s, ima); + *face_t = lp_build_cube_coord(coord_bld, sign, -1, r, ima); + *face = lp_build_cube_face(bld, ry, PIPE_TEX_FACE_POS_Y, PIPE_TEX_FACE_NEG_Y); + LLVMBuildStore(bld->builder, *face_s, face_s_var); + LLVMBuildStore(bld->builder, *face_t, face_t_var); + LLVMBuildStore(bld->builder, *face, face_var); } lp_build_else(&if_ctx2); { /* +/- Z face */ LLVMValueRef sign = lp_build_sgn(float_bld, rz); LLVMValueRef ima = lp_build_cube_ima(coord_bld, r); - face_s2 = lp_build_cube_coord(coord_bld, sign, -1, s, ima); - face_t2 = lp_build_cube_coord(coord_bld, NULL, +1, t, ima); - face2 = lp_build_cube_face(bld, rz, + *face_s = lp_build_cube_coord(coord_bld, sign, -1, s, ima); + *face_t = lp_build_cube_coord(coord_bld, NULL, +1, t, ima); + *face = lp_build_cube_face(bld, rz, PIPE_TEX_FACE_POS_Z, PIPE_TEX_FACE_NEG_Z); + LLVMBuildStore(bld->builder, *face_s, face_s_var); + LLVMBuildStore(bld->builder, *face_t, face_t_var); + LLVMBuildStore(bld->builder, *face, face_var); } lp_build_endif(&if_ctx2); - lp_build_flow_scope_end(flow_ctx2); - lp_build_flow_destroy(flow_ctx2); - *face_s = face_s2; - *face_t = face_t2; - *face = face2; } lp_build_endif(&if_ctx); - lp_build_flow_scope_end(flow_ctx); lp_build_flow_destroy(flow_ctx); + + *face_s = LLVMBuildLoad(bld->builder, face_s_var, "face_s"); + *face_t = LLVMBuildLoad(bld->builder, face_t_var, "face_t"); + *face = LLVMBuildLoad(bld->builder, face_var, "face"); } } -- cgit v1.2.3 From d45c379027054e563c4f4379fb69fc9f68612f75 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 20:14:03 +0100 Subject: gallivm: Remove support for Phi generation. Simply rely on mem2reg pass. It's easier and more reliable. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 211 ---------------------------- src/gallium/auxiliary/gallivm/lp_bld_flow.h | 10 -- src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 - 3 files changed, 225 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index a5d65e9b396..22c2db8c449 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -45,22 +45,11 @@ * Enumeration of all possible flow constructs. */ enum lp_build_flow_construct_kind { - LP_BUILD_FLOW_SCOPE, LP_BUILD_FLOW_SKIP, LP_BUILD_FLOW_IF }; -/** - * Variable declaration scope. - */ -struct lp_build_flow_scope -{ - /** Number of variables declared in this scope */ - unsigned num_variables; -}; - - /** * Early exit. Useful to skip to the end of a function or block when * the execution mask becomes zero or when there is an error condition. @@ -69,11 +58,6 @@ struct lp_build_flow_skip { /** Block to skip to */ LLVMBasicBlockRef block; - - /** Number of variables declared at the beginning */ - unsigned num_variables; - - LLVMValueRef *phi; /**< array [num_variables] */ }; @@ -82,10 +66,6 @@ struct lp_build_flow_skip */ struct lp_build_flow_if { - unsigned num_variables; - - LLVMValueRef *phi; /**< array [num_variables] */ - LLVMValueRef condition; LLVMBasicBlockRef entry_block, true_block, false_block, merge_block; }; @@ -96,7 +76,6 @@ struct lp_build_flow_if */ union lp_build_flow_construct_data { - struct lp_build_flow_scope scope; struct lp_build_flow_skip skip; struct lp_build_flow_if ifthen; }; @@ -127,12 +106,6 @@ struct lp_build_flow_context */ struct lp_build_flow_construct constructs[LP_BUILD_FLOW_MAX_DEPTH]; unsigned num_constructs; - - /** - * Variable stack - */ - LLVMValueRef *variables[LP_BUILD_FLOW_MAX_VARIABLES]; - unsigned num_variables; }; @@ -155,7 +128,6 @@ void lp_build_flow_destroy(struct lp_build_flow_context *flow) { assert(flow->num_constructs == 0); - assert(flow->num_variables == 0); FREE(flow); } @@ -217,93 +189,6 @@ lp_build_flow_pop(struct lp_build_flow_context *flow, } -/** - * Begin a variable scope. - * - * - */ -void -lp_build_flow_scope_begin(struct lp_build_flow_context *flow) -{ - struct lp_build_flow_scope *scope; - - scope = &lp_build_flow_push(flow, LP_BUILD_FLOW_SCOPE)->scope; - if(!scope) - return; - - scope->num_variables = 0; -} - - -/** - * Declare a variable. - * - * A variable is a named entity which can have different LLVMValueRef's at - * different points of the program. This is relevant for control flow because - * when there are multiple branches to a same location we need to replace - * the variable's value with a Phi function as explained in - * http://en.wikipedia.org/wiki/Static_single_assignment_form . - * - * We keep track of variables by keeping around a pointer to where they're - * current. - * - * There are a few cautions to observe: - * - * - Variable's value must not be NULL. If there is no initial value then - * LLVMGetUndef() should be used. - * - * - Variable's value must be kept up-to-date. If the variable is going to be - * modified by a function then a pointer should be passed so that its value - * is accurate. Failure to do this will cause some of the variables' - * transient values to be lost, leading to wrong results. - * - * - A program should be written from top to bottom, by always appending - * instructions to the bottom with a single LLVMBuilderRef. Inserting and/or - * modifying existing statements will most likely lead to wrong results. - * - */ -void -lp_build_flow_scope_declare(struct lp_build_flow_context *flow, - LLVMValueRef *variable) -{ - struct lp_build_flow_scope *scope; - - scope = &lp_build_flow_peek(flow, LP_BUILD_FLOW_SCOPE)->scope; - if(!scope) - return; - - assert(*variable); - if(!*variable) - return; - - assert(flow->num_variables < LP_BUILD_FLOW_MAX_VARIABLES); - if(flow->num_variables >= LP_BUILD_FLOW_MAX_VARIABLES) - return; - - flow->variables[flow->num_variables++] = variable; - ++scope->num_variables; -} - - -void -lp_build_flow_scope_end(struct lp_build_flow_context *flow) -{ - struct lp_build_flow_scope *scope; - - scope = &lp_build_flow_pop(flow, LP_BUILD_FLOW_SCOPE)->scope; - if(!scope) - return; - - assert(flow->num_variables >= scope->num_variables); - if(flow->num_variables < scope->num_variables) { - flow->num_variables = 0; - return; - } - - flow->num_variables -= scope->num_variables; -} - - /** * Note: this function has no dependencies on the flow code and could * be used elsewhere. @@ -350,7 +235,6 @@ lp_build_flow_skip_begin(struct lp_build_flow_context *flow) { struct lp_build_flow_skip *skip; LLVMBuilderRef builder; - unsigned i; skip = &lp_build_flow_push(flow, LP_BUILD_FLOW_SKIP)->skip; if(!skip) @@ -359,26 +243,9 @@ lp_build_flow_skip_begin(struct lp_build_flow_context *flow) /* create new basic block */ skip->block = lp_build_flow_insert_block(flow); - skip->num_variables = flow->num_variables; - if(!skip->num_variables) { - skip->phi = NULL; - return; - } - - /* Allocate a Phi node for each variable in this skip scope */ - skip->phi = MALLOC(skip->num_variables * sizeof *skip->phi); - if(!skip->phi) { - skip->num_variables = 0; - return; - } - builder = LLVMCreateBuilder(); LLVMPositionBuilderAtEnd(builder, skip->block); - /* create a Phi node for each variable */ - for(i = 0; i < skip->num_variables; ++i) - skip->phi[i] = LLVMBuildPhi(builder, LLVMTypeOf(*flow->variables[i]), ""); - LLVMDisposeBuilder(builder); } @@ -392,25 +259,14 @@ lp_build_flow_skip_cond_break(struct lp_build_flow_context *flow, LLVMValueRef cond) { struct lp_build_flow_skip *skip; - LLVMBasicBlockRef current_block; LLVMBasicBlockRef new_block; - unsigned i; skip = &lp_build_flow_peek(flow, LP_BUILD_FLOW_SKIP)->skip; if(!skip) return; - current_block = LLVMGetInsertBlock(flow->builder); - new_block = lp_build_flow_insert_block(flow); - /* for each variable, update the Phi node with a (variable, block) pair */ - for(i = 0; i < skip->num_variables; ++i) { - assert(*flow->variables[i]); - assert(LLVMTypeOf(skip->phi[i]) == LLVMTypeOf(*flow->variables[i])); - LLVMAddIncoming(skip->phi[i], flow->variables[i], ¤t_block, 1); - } - /* if cond is true, goto skip->block, else goto new_block */ LLVMBuildCondBr(flow->builder, cond, skip->block, new_block); @@ -422,28 +278,14 @@ void lp_build_flow_skip_end(struct lp_build_flow_context *flow) { struct lp_build_flow_skip *skip; - LLVMBasicBlockRef current_block; - unsigned i; skip = &lp_build_flow_pop(flow, LP_BUILD_FLOW_SKIP)->skip; if(!skip) return; - current_block = LLVMGetInsertBlock(flow->builder); - - /* add (variable, block) tuples to the phi nodes */ - for(i = 0; i < skip->num_variables; ++i) { - assert(*flow->variables[i]); - assert(LLVMTypeOf(skip->phi[i]) == LLVMTypeOf(*flow->variables[i])); - LLVMAddIncoming(skip->phi[i], flow->variables[i], ¤t_block, 1); - *flow->variables[i] = skip->phi[i]; - } - /* goto block */ LLVMBuildBr(flow->builder, skip->block); LLVMPositionBuilderAtEnd(flow->builder, skip->block); - - FREE(skip->phi); } @@ -659,7 +501,6 @@ lp_build_if(struct lp_build_if_state *ctx, { LLVMBasicBlockRef block = LLVMGetInsertBlock(builder); struct lp_build_flow_if *ifthen; - unsigned i; memset(ctx, 0, sizeof(*ctx)); ctx->builder = builder; @@ -669,31 +510,13 @@ lp_build_if(struct lp_build_if_state *ctx, ifthen = &lp_build_flow_push(flow, LP_BUILD_FLOW_IF)->ifthen; assert(ifthen); - ifthen->num_variables = flow->num_variables; ifthen->condition = condition; ifthen->entry_block = block; - /* create a Phi node for each variable in this flow scope */ - ifthen->phi = MALLOC(ifthen->num_variables * sizeof(*ifthen->phi)); - if (!ifthen->phi) { - ifthen->num_variables = 0; - return; - } - /* create endif/merge basic block for the phi functions */ ifthen->merge_block = lp_build_insert_new_block(builder, "endif-block"); LLVMPositionBuilderAtEnd(builder, ifthen->merge_block); - /* create a phi node for each variable */ - for (i = 0; i < flow->num_variables; i++) { - ifthen->phi[i] = LLVMBuildPhi(builder, LLVMTypeOf(*flow->variables[i]), ""); - - /* add add the initial value of the var from the entry block */ - if (!LLVMIsUndef(*flow->variables[i])) - LLVMAddIncoming(ifthen->phi[i], flow->variables[i], - &ifthen->entry_block, 1); - } - /* create/insert true_block before merge_block */ ifthen->true_block = LLVMInsertBasicBlock(ifthen->merge_block, "if-true-block"); @@ -710,18 +533,10 @@ lp_build_else(struct lp_build_if_state *ctx) { struct lp_build_flow_context *flow = ctx->flow; struct lp_build_flow_if *ifthen; - unsigned i; ifthen = &lp_build_flow_peek(flow, LP_BUILD_FLOW_IF)->ifthen; assert(ifthen); - /* for each variable, update the Phi node with a (variable, block) pair */ - LLVMPositionBuilderAtEnd(ctx->builder, ifthen->merge_block); - for (i = 0; i < flow->num_variables; i++) { - assert(*flow->variables[i]); - LLVMAddIncoming(ifthen->phi[i], flow->variables[i], &ifthen->true_block, 1); - } - /* create/insert false_block before the merge block */ ifthen->false_block = LLVMInsertBasicBlock(ifthen->merge_block, "if-false-block"); @@ -738,8 +553,6 @@ lp_build_endif(struct lp_build_if_state *ctx) { struct lp_build_flow_context *flow = ctx->flow; struct lp_build_flow_if *ifthen; - LLVMBasicBlockRef curBlock = LLVMGetInsertBlock(ctx->builder); - unsigned i; ifthen = &lp_build_flow_pop(flow, LP_BUILD_FLOW_IF)->ifthen; assert(ifthen); @@ -747,30 +560,6 @@ lp_build_endif(struct lp_build_if_state *ctx) /* Insert branch to the merge block from current block */ LLVMBuildBr(ctx->builder, ifthen->merge_block); - if (ifthen->false_block) { - LLVMPositionBuilderAtEnd(ctx->builder, ifthen->merge_block); - /* for each variable, update the Phi node with a (variable, block) pair */ - for (i = 0; i < flow->num_variables; i++) { - assert(*flow->variables[i]); - LLVMAddIncoming(ifthen->phi[i], flow->variables[i], &curBlock, 1); - /* replace the variable ref with the phi function */ - *flow->variables[i] = ifthen->phi[i]; - } - } - else { - /* no else clause */ - LLVMPositionBuilderAtEnd(ctx->builder, ifthen->merge_block); - for (i = 0; i < flow->num_variables; i++) { - assert(*flow->variables[i]); - LLVMAddIncoming(ifthen->phi[i], flow->variables[i], &ifthen->true_block, 1); - - /* replace the variable ref with the phi function */ - *flow->variables[i] = ifthen->phi[i]; - } - } - - FREE(ifthen->phi); - /*** *** Now patch in the various branch instructions. ***/ diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h b/src/gallium/auxiliary/gallivm/lp_bld_flow.h index 0fc6317b339..403e46e52e8 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h @@ -50,16 +50,6 @@ lp_build_flow_create(LLVMBuilderRef builder); void lp_build_flow_destroy(struct lp_build_flow_context *flow); -void -lp_build_flow_scope_begin(struct lp_build_flow_context *flow); - -void -lp_build_flow_scope_declare(struct lp_build_flow_context *flow, - LLVMValueRef *variable); - -void -lp_build_flow_scope_end(struct lp_build_flow_context *flow); - void lp_build_flow_skip_begin(struct lp_build_flow_context *flow); diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index cf07cb49764..3b0706e3ec1 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -290,8 +290,6 @@ generate_fs(struct llvmpipe_context *lp, memset(outputs, 0, sizeof outputs); - lp_build_flow_scope_begin(flow); - /* Declare the color and z variables */ for(cbuf = 0; cbuf < key->nr_cbufs; cbuf++) { for(chan = 0; chan < NUM_CHANNELS; ++chan) { @@ -427,8 +425,6 @@ generate_fs(struct llvmpipe_context *lp, *pmask = lp_build_mask_end(&mask); - lp_build_flow_scope_end(flow); - lp_build_flow_destroy(flow); } -- cgit v1.2.3 From 1949f8c31507ed4a8774c380e6b604c328f4ec98 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 20:26:11 +0100 Subject: gallivm: Factor out the SI->FP texture size conversion for SoA path too --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 90 ++++++++++++++--------- 1 file changed, 56 insertions(+), 34 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 1af0318e8e1..3b63ac6f62b 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -230,6 +230,7 @@ static void lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, LLVMValueRef coord, LLVMValueRef length, + LLVMValueRef length_f, boolean is_pot, unsigned wrap_mode, LLVMValueRef *x0_out, @@ -240,7 +241,6 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, struct lp_build_context *int_coord_bld = &bld->int_coord_bld; struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld; LLVMValueRef half = lp_build_const_vec(coord_bld->type, 0.5); - LLVMValueRef length_f = lp_build_int_to_float(coord_bld, length); LLVMValueRef length_minus_one = lp_build_sub(uint_coord_bld, length, uint_coord_bld->one); LLVMValueRef coord0, coord1, weight; @@ -442,13 +442,13 @@ static LLVMValueRef lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, LLVMValueRef coord, LLVMValueRef length, + LLVMValueRef length_f, boolean is_pot, unsigned wrap_mode) { struct lp_build_context *coord_bld = &bld->coord_bld; struct lp_build_context *int_coord_bld = &bld->int_coord_bld; struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld; - LLVMValueRef length_f = lp_build_int_to_float(coord_bld, length); LLVMValueRef length_minus_one = lp_build_sub(uint_coord_bld, length, uint_coord_bld->one); LLVMValueRef icoord; @@ -563,9 +563,7 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, static void lp_build_sample_image_nearest(struct lp_build_sample_context *bld, unsigned unit, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, + LLVMValueRef size, LLVMValueRef row_stride_vec, LLVMValueRef img_stride_vec, LLVMValueRef data_ptr, @@ -575,24 +573,45 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, LLVMValueRef colors_out[4]) { const unsigned dims = bld->dims; + LLVMValueRef width_vec; + LLVMValueRef height_vec; + LLVMValueRef depth_vec; + LLVMValueRef flt_size; + LLVMValueRef flt_width_vec; + LLVMValueRef flt_height_vec; + LLVMValueRef flt_depth_vec; LLVMValueRef x, y, z; + lp_build_extract_image_sizes(bld, + bld->int_size_type, + bld->int_coord_type, + size, + &width_vec, &height_vec, &depth_vec); + + flt_size = lp_build_int_to_float(&bld->float_size_bld, size); + + lp_build_extract_image_sizes(bld, + bld->float_size_type, + bld->coord_type, + flt_size, + &flt_width_vec, &flt_height_vec, &flt_depth_vec); + /* * Compute integer texcoords. */ - x = lp_build_sample_wrap_nearest(bld, s, width_vec, + x = lp_build_sample_wrap_nearest(bld, s, width_vec, flt_width_vec, bld->static_state->pot_width, bld->static_state->wrap_s); lp_build_name(x, "tex.x.wrapped"); if (dims >= 2) { - y = lp_build_sample_wrap_nearest(bld, t, height_vec, + y = lp_build_sample_wrap_nearest(bld, t, height_vec, flt_height_vec, bld->static_state->pot_height, bld->static_state->wrap_t); lp_build_name(y, "tex.y.wrapped"); if (dims == 3) { - z = lp_build_sample_wrap_nearest(bld, r, depth_vec, + z = lp_build_sample_wrap_nearest(bld, r, depth_vec, flt_depth_vec, bld->static_state->pot_depth, bld->static_state->wrap_r); lp_build_name(z, "tex.z.wrapped"); @@ -626,9 +645,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, static void lp_build_sample_image_linear(struct lp_build_sample_context *bld, unsigned unit, - LLVMValueRef width_vec, - LLVMValueRef height_vec, - LLVMValueRef depth_vec, + LLVMValueRef size, LLVMValueRef row_stride_vec, LLVMValueRef img_stride_vec, LLVMValueRef data_ptr, @@ -638,15 +655,36 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, LLVMValueRef colors_out[4]) { const unsigned dims = bld->dims; + LLVMValueRef width_vec; + LLVMValueRef height_vec; + LLVMValueRef depth_vec; + LLVMValueRef flt_size; + LLVMValueRef flt_width_vec; + LLVMValueRef flt_height_vec; + LLVMValueRef flt_depth_vec; LLVMValueRef x0, y0, z0, x1, y1, z1; LLVMValueRef s_fpart, t_fpart, r_fpart; LLVMValueRef neighbors[2][2][4]; int chan; + lp_build_extract_image_sizes(bld, + bld->int_size_type, + bld->int_coord_type, + size, + &width_vec, &height_vec, &depth_vec); + + flt_size = lp_build_int_to_float(&bld->float_size_bld, size); + + lp_build_extract_image_sizes(bld, + bld->float_size_type, + bld->coord_type, + flt_size, + &flt_width_vec, &flt_height_vec, &flt_depth_vec); + /* * Compute integer texcoords. */ - lp_build_sample_wrap_linear(bld, s, width_vec, + lp_build_sample_wrap_linear(bld, s, width_vec, flt_width_vec, bld->static_state->pot_width, bld->static_state->wrap_s, &x0, &x1, &s_fpart); @@ -654,7 +692,7 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, lp_build_name(x1, "tex.x1.wrapped"); if (dims >= 2) { - lp_build_sample_wrap_linear(bld, t, height_vec, + lp_build_sample_wrap_linear(bld, t, height_vec, flt_height_vec, bld->static_state->pot_height, bld->static_state->wrap_t, &y0, &y1, &t_fpart); @@ -662,7 +700,7 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, lp_build_name(y1, "tex.y1.wrapped"); if (dims == 3) { - lp_build_sample_wrap_linear(bld, r, depth_vec, + lp_build_sample_wrap_linear(bld, r, depth_vec, flt_depth_vec, bld->static_state->pot_depth, bld->static_state->wrap_r, &z0, &z1, &r_fpart); @@ -807,12 +845,6 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMBuilderRef builder = bld->builder; LLVMValueRef size0; LLVMValueRef size1; - LLVMValueRef width0_vec; - LLVMValueRef width1_vec; - LLVMValueRef height0_vec; - LLVMValueRef height1_vec; - LLVMValueRef depth0_vec; - LLVMValueRef depth1_vec; LLVMValueRef row_stride0_vec; LLVMValueRef row_stride1_vec; LLVMValueRef img_stride0_vec; @@ -826,15 +858,10 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, lp_build_mipmap_level_sizes(bld, ilevel0, &size0, &row_stride0_vec, &img_stride0_vec); - lp_build_extract_image_sizes(bld, - bld->int_size_type, - bld->int_coord_type, - size0, - &width0_vec, &height0_vec, &depth0_vec); data_ptr0 = lp_build_get_mipmap_level(bld, ilevel0); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, unit, - width0_vec, height0_vec, depth0_vec, + size0, row_stride0_vec, img_stride0_vec, data_ptr0, s, t, r, colors0); @@ -842,7 +869,7 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, else { assert(img_filter == PIPE_TEX_FILTER_LINEAR); lp_build_sample_image_linear(bld, unit, - width0_vec, height0_vec, depth0_vec, + size0, row_stride0_vec, img_stride0_vec, data_ptr0, s, t, r, colors0); @@ -872,22 +899,17 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, lp_build_mipmap_level_sizes(bld, ilevel1, &size1, &row_stride1_vec, &img_stride1_vec); - lp_build_extract_image_sizes(bld, - bld->int_size_type, - bld->int_coord_type, - size1, - &width1_vec, &height1_vec, &depth1_vec); data_ptr1 = lp_build_get_mipmap_level(bld, ilevel1); if (img_filter == PIPE_TEX_FILTER_NEAREST) { lp_build_sample_image_nearest(bld, unit, - width1_vec, height1_vec, depth1_vec, + size1, row_stride1_vec, img_stride1_vec, data_ptr1, s, t, r, colors1); } else { lp_build_sample_image_linear(bld, unit, - width1_vec, height1_vec, depth1_vec, + size1, row_stride1_vec, img_stride1_vec, data_ptr1, s, t, r, colors1); -- cgit v1.2.3 From d0ea4641597d23df2198fd76ed7430c06cef8c5d Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 21:14:05 +0100 Subject: gallivm: Simplify if/then/else implementation. No need for for a flow stack anymore. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 79 ++++++----------------- src/gallium/auxiliary/gallivm/lp_bld_flow.h | 10 ++- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 8 +-- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 14 +--- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 14 +--- 5 files changed, 34 insertions(+), 91 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index 22c2db8c449..ac63bd544f6 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -61,23 +61,12 @@ struct lp_build_flow_skip }; -/** - * if/else/endif. - */ -struct lp_build_flow_if -{ - LLVMValueRef condition; - LLVMBasicBlockRef entry_block, true_block, false_block, merge_block; -}; - - /** * Union of all possible flow constructs' data */ union lp_build_flow_construct_data { struct lp_build_flow_skip skip; - struct lp_build_flow_if ifthen; }; @@ -468,24 +457,16 @@ lp_build_loop_end_cond(LLVMBuilderRef builder, Is built with: - LLVMValueRef x = LLVMGetUndef(); // or something else - - flow = lp_build_flow_create(builder); - - lp_build_flow_scope_begin(flow); + // x needs an alloca variable + x = lp_build_alloca(builder, type, "x"); - // x needs a phi node - lp_build_flow_scope_declare(flow, &x); - lp_build_if(ctx, flow, builder, cond); - x = LLVMAdd(1, 2); - lp_build_else(ctx); - x = LLVMAdd(2, 3); - lp_build_endif(ctx); + lp_build_if(ctx, builder, cond); + LLVMBuildStore(LLVMBuildAdd(1, 2), x); + lp_build_else(ctx); + LLVMBuildStore(LLVMBuildAdd(2, 3). x); + lp_build_endif(ctx); - lp_build_flow_scope_end(flow); - - lp_build_flow_destroy(flow); */ @@ -494,22 +475,14 @@ lp_build_loop_end_cond(LLVMBuilderRef builder, * Begin an if/else/endif construct. */ void -lp_build_if(struct lp_build_if_state *ctx, - struct lp_build_flow_context *flow, +lp_build_if(struct lp_build_if_state *ifthen, LLVMBuilderRef builder, LLVMValueRef condition) { LLVMBasicBlockRef block = LLVMGetInsertBlock(builder); - struct lp_build_flow_if *ifthen; - - memset(ctx, 0, sizeof(*ctx)); - ctx->builder = builder; - ctx->flow = flow; - - /* push/create new scope */ - ifthen = &lp_build_flow_push(flow, LP_BUILD_FLOW_IF)->ifthen; - assert(ifthen); + memset(ifthen, 0, sizeof *ifthen); + ifthen->builder = builder; ifthen->condition = condition; ifthen->entry_block = block; @@ -529,19 +502,13 @@ lp_build_if(struct lp_build_if_state *ctx, * Begin else-part of a conditional */ void -lp_build_else(struct lp_build_if_state *ctx) +lp_build_else(struct lp_build_if_state *ifthen) { - struct lp_build_flow_context *flow = ctx->flow; - struct lp_build_flow_if *ifthen; - - ifthen = &lp_build_flow_peek(flow, LP_BUILD_FLOW_IF)->ifthen; - assert(ifthen); - /* create/insert false_block before the merge block */ ifthen->false_block = LLVMInsertBasicBlock(ifthen->merge_block, "if-false-block"); /* successive code goes into the else block */ - LLVMPositionBuilderAtEnd(ctx->builder, ifthen->false_block); + LLVMPositionBuilderAtEnd(ifthen->builder, ifthen->false_block); } @@ -549,39 +516,33 @@ lp_build_else(struct lp_build_if_state *ctx) * End a conditional. */ void -lp_build_endif(struct lp_build_if_state *ctx) +lp_build_endif(struct lp_build_if_state *ifthen) { - struct lp_build_flow_context *flow = ctx->flow; - struct lp_build_flow_if *ifthen; - - ifthen = &lp_build_flow_pop(flow, LP_BUILD_FLOW_IF)->ifthen; - assert(ifthen); - /* Insert branch to the merge block from current block */ - LLVMBuildBr(ctx->builder, ifthen->merge_block); + LLVMBuildBr(ifthen->builder, ifthen->merge_block); /*** *** Now patch in the various branch instructions. ***/ /* Insert the conditional branch instruction at the end of entry_block */ - LLVMPositionBuilderAtEnd(ctx->builder, ifthen->entry_block); + LLVMPositionBuilderAtEnd(ifthen->builder, ifthen->entry_block); if (ifthen->false_block) { /* we have an else clause */ - LLVMBuildCondBr(ctx->builder, ifthen->condition, + LLVMBuildCondBr(ifthen->builder, ifthen->condition, ifthen->true_block, ifthen->false_block); } else { /* no else clause */ - LLVMBuildCondBr(ctx->builder, ifthen->condition, + LLVMBuildCondBr(ifthen->builder, ifthen->condition, ifthen->true_block, ifthen->merge_block); } /* Insert branch from end of true_block to merge_block */ if (ifthen->false_block) { /* Append an unconditional Br(anch) instruction on the true_block */ - LLVMPositionBuilderAtEnd(ctx->builder, ifthen->true_block); - LLVMBuildBr(ctx->builder, ifthen->merge_block); + LLVMPositionBuilderAtEnd(ifthen->builder, ifthen->true_block); + LLVMBuildBr(ifthen->builder, ifthen->merge_block); } else { /* No else clause. @@ -591,7 +552,7 @@ lp_build_endif(struct lp_build_if_state *ctx) } /* Resume building code at end of the ifthen->merge_block */ - LLVMPositionBuilderAtEnd(ctx->builder, ifthen->merge_block); + LLVMPositionBuilderAtEnd(ifthen->builder, ifthen->merge_block); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h b/src/gallium/auxiliary/gallivm/lp_bld_flow.h index 403e46e52e8..a4fc8d19556 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h @@ -130,16 +130,22 @@ lp_build_loop_end_cond(LLVMBuilderRef builder, +/** + * if/else/endif. + */ struct lp_build_if_state { LLVMBuilderRef builder; - struct lp_build_flow_context *flow; + LLVMValueRef condition; + LLVMBasicBlockRef entry_block; + LLVMBasicBlockRef true_block; + LLVMBasicBlockRef false_block; + LLVMBasicBlockRef merge_block; }; void lp_build_if(struct lp_build_if_state *ctx, - struct lp_build_flow_context *flow, LLVMBuilderRef builder, LLVMValueRef condition); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index acceae2badd..1a27a241183 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -925,19 +925,16 @@ lp_build_cube_lookup(struct lp_build_sample_context *bld, rz_pos = LLVMBuildFCmp(bld->builder, LLVMRealUGE, rz, float_bld->zero, ""); { - struct lp_build_flow_context *flow_ctx; struct lp_build_if_state if_ctx; LLVMValueRef face_s_var; LLVMValueRef face_t_var; LLVMValueRef face_var; - flow_ctx = lp_build_flow_create(bld->builder); - face_s_var = lp_build_alloca(bld->builder, bld->coord_bld.vec_type, "face_s_var"); face_t_var = lp_build_alloca(bld->builder, bld->coord_bld.vec_type, "face_t_var"); face_var = lp_build_alloca(bld->builder, bld->int_bld.vec_type, "face_var"); - lp_build_if(&if_ctx, flow_ctx, bld->builder, arx_ge_ary_arz); + lp_build_if(&if_ctx, bld->builder, arx_ge_ary_arz); { /* +/- X face */ LLVMValueRef sign = lp_build_sgn(float_bld, rx); @@ -957,7 +954,7 @@ lp_build_cube_lookup(struct lp_build_sample_context *bld, ary_ge_arx_arz = LLVMBuildAnd(bld->builder, ary_ge_arx, ary_ge_arz, ""); - lp_build_if(&if_ctx2, flow_ctx, bld->builder, ary_ge_arx_arz); + lp_build_if(&if_ctx2, bld->builder, ary_ge_arx_arz); { /* +/- Y face */ LLVMValueRef sign = lp_build_sgn(float_bld, ry); @@ -989,7 +986,6 @@ lp_build_cube_lookup(struct lp_build_sample_context *bld, } lp_build_endif(&if_ctx); - lp_build_flow_destroy(flow_ctx); *face_s = LLVMBuildLoad(bld->builder, face_s_var, "face_s"); *face_t = LLVMBuildLoad(bld->builder, face_t_var, "face_t"); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 1e1e3591cac..69d81ad9711 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -833,12 +833,9 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { LLVMValueRef h16_scale = LLVMConstReal(LLVMFloatType(), 256.0); LLVMTypeRef i32_type = LLVMIntType(32); - struct lp_build_flow_context *flow_ctx; struct lp_build_if_state if_ctx; LLVMValueRef need_lerp; - flow_ctx = lp_build_flow_create(builder); - lod_fpart = LLVMBuildFMul(builder, lod_fpart, h16_scale, ""); lod_fpart = LLVMBuildFPToSI(builder, lod_fpart, i32_type, "lod_fpart.fixed16"); @@ -847,7 +844,7 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, lod_fpart, LLVMConstNull(i32_type), "need_lerp"); - lp_build_if(&if_ctx, flow_ctx, builder, need_lerp); + lp_build_if(&if_ctx, builder, need_lerp); { struct lp_build_context h16_bld; @@ -887,8 +884,6 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, LLVMBuildStore(builder, colors0_hi, colors_hi_var); } lp_build_endif(&if_ctx); - - lp_build_flow_destroy(flow_ctx); } } @@ -1028,17 +1023,14 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, /* Emit conditional to choose min image filter or mag image filter * depending on the lod being > 0 or <= 0, respectively. */ - struct lp_build_flow_context *flow_ctx; struct lp_build_if_state if_ctx; LLVMValueRef minify; - flow_ctx = lp_build_flow_create(builder); - /* minify = lod >= 0.0 */ minify = LLVMBuildICmp(builder, LLVMIntSGE, lod_ipart, int_bld->zero, ""); - lp_build_if(&if_ctx, flow_ctx, builder, minify); + lp_build_if(&if_ctx, builder, minify); { /* Use the minification filter */ lp_build_sample_mipmap(bld, @@ -1057,8 +1049,6 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, packed_lo, packed_hi); } lp_build_endif(&if_ctx); - - lp_build_flow_destroy(flow_ctx); } /* diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 3b63ac6f62b..75130e1c54f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -881,19 +881,16 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, } if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - struct lp_build_flow_context *flow_ctx; struct lp_build_if_state if_ctx; LLVMValueRef need_lerp; - flow_ctx = lp_build_flow_create(builder); - /* need_lerp = lod_fpart > 0 */ need_lerp = LLVMBuildFCmp(builder, LLVMRealUGT, lod_fpart, bld->float_bld.zero, "need_lerp"); - lp_build_if(&if_ctx, flow_ctx, builder, need_lerp); + lp_build_if(&if_ctx, builder, need_lerp); { /* sample the second mipmap level */ lp_build_mipmap_level_sizes(bld, ilevel1, @@ -926,8 +923,6 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, } } lp_build_endif(&if_ctx); - - lp_build_flow_destroy(flow_ctx); } } @@ -1063,17 +1058,14 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* Emit conditional to choose min image filter or mag image filter * depending on the lod being > 0 or <= 0, respectively. */ - struct lp_build_flow_context *flow_ctx; struct lp_build_if_state if_ctx; LLVMValueRef minify; - flow_ctx = lp_build_flow_create(builder); - /* minify = lod >= 0.0 */ minify = LLVMBuildICmp(builder, LLVMIntSGE, lod_ipart, int_bld->zero, ""); - lp_build_if(&if_ctx, flow_ctx, builder, minify); + lp_build_if(&if_ctx, builder, minify); { /* Use the minification filter */ lp_build_sample_mipmap(bld, unit, @@ -1092,8 +1084,6 @@ lp_build_sample_general(struct lp_build_sample_context *bld, texels); } lp_build_endif(&if_ctx); - - lp_build_flow_destroy(flow_ctx); } for (chan = 0; chan < 4; ++chan) { -- cgit v1.2.3 From 307df6a858dcab1bc10f3f52d9968acb3ea6d74f Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sat, 9 Oct 2010 21:39:14 +0100 Subject: gallivm: Cleanup the rest of the flow module. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 210 +++------------------------- src/gallium/auxiliary/gallivm/lp_bld_flow.h | 28 ++-- src/gallium/drivers/llvmpipe/lp_state_fs.c | 12 +- 3 files changed, 39 insertions(+), 211 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index ac63bd544f6..99a49df317c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -38,146 +38,6 @@ #include "lp_bld_flow.h" -#define LP_BUILD_FLOW_MAX_VARIABLES 64 -#define LP_BUILD_FLOW_MAX_DEPTH 32 - -/** - * Enumeration of all possible flow constructs. - */ -enum lp_build_flow_construct_kind { - LP_BUILD_FLOW_SKIP, - LP_BUILD_FLOW_IF -}; - - -/** - * Early exit. Useful to skip to the end of a function or block when - * the execution mask becomes zero or when there is an error condition. - */ -struct lp_build_flow_skip -{ - /** Block to skip to */ - LLVMBasicBlockRef block; -}; - - -/** - * Union of all possible flow constructs' data - */ -union lp_build_flow_construct_data -{ - struct lp_build_flow_skip skip; -}; - - -/** - * Element of the flow construct stack. - */ -struct lp_build_flow_construct -{ - enum lp_build_flow_construct_kind kind; - union lp_build_flow_construct_data data; -}; - - -/** - * All necessary data to generate LLVM control flow constructs. - * - * Besides keeping track of the control flow construct themselves we also - * need to keep track of variables in order to generate SSA Phi values. - */ -struct lp_build_flow_context -{ - LLVMBuilderRef builder; - - /** - * Control flow stack. - */ - struct lp_build_flow_construct constructs[LP_BUILD_FLOW_MAX_DEPTH]; - unsigned num_constructs; -}; - - -struct lp_build_flow_context * -lp_build_flow_create(LLVMBuilderRef builder) -{ - struct lp_build_flow_context *flow; - - flow = CALLOC_STRUCT(lp_build_flow_context); - if(!flow) - return NULL; - - flow->builder = builder; - - return flow; -} - - -void -lp_build_flow_destroy(struct lp_build_flow_context *flow) -{ - assert(flow->num_constructs == 0); - FREE(flow); -} - - -/** - * Begin/push a new flow control construct, such as a loop, skip block - * or variable scope. - */ -static union lp_build_flow_construct_data * -lp_build_flow_push(struct lp_build_flow_context *flow, - enum lp_build_flow_construct_kind kind) -{ - assert(flow->num_constructs < LP_BUILD_FLOW_MAX_DEPTH); - if(flow->num_constructs >= LP_BUILD_FLOW_MAX_DEPTH) - return NULL; - - flow->constructs[flow->num_constructs].kind = kind; - return &flow->constructs[flow->num_constructs++].data; -} - - -/** - * Return the current/top flow control construct on the stack. - * \param kind the expected type of the top-most construct - */ -static union lp_build_flow_construct_data * -lp_build_flow_peek(struct lp_build_flow_context *flow, - enum lp_build_flow_construct_kind kind) -{ - assert(flow->num_constructs); - if(!flow->num_constructs) - return NULL; - - assert(flow->constructs[flow->num_constructs - 1].kind == kind); - if(flow->constructs[flow->num_constructs - 1].kind != kind) - return NULL; - - return &flow->constructs[flow->num_constructs - 1].data; -} - - -/** - * End/pop the current/top flow control construct on the stack. - * \param kind the expected type of the top-most construct - */ -static union lp_build_flow_construct_data * -lp_build_flow_pop(struct lp_build_flow_context *flow, - enum lp_build_flow_construct_kind kind) -{ - assert(flow->num_constructs); - if(!flow->num_constructs) - return NULL; - - assert(flow->constructs[flow->num_constructs - 1].kind == kind); - if(flow->constructs[flow->num_constructs - 1].kind != kind) - return NULL; - - return &flow->constructs[--flow->num_constructs].data; -} - - /** * Note: this function has no dependencies on the flow code and could * be used elsewhere. @@ -208,34 +68,18 @@ lp_build_insert_new_block(LLVMBuilderRef builder, const char *name) } -static LLVMBasicBlockRef -lp_build_flow_insert_block(struct lp_build_flow_context *flow) -{ - return lp_build_insert_new_block(flow->builder, ""); -} - - /** * Begin a "skip" block. Inside this block we can test a condition and * skip to the end of the block if the condition is false. */ void -lp_build_flow_skip_begin(struct lp_build_flow_context *flow) +lp_build_flow_skip_begin(struct lp_build_skip_context *skip, + LLVMBuilderRef builder) { - struct lp_build_flow_skip *skip; - LLVMBuilderRef builder; - - skip = &lp_build_flow_push(flow, LP_BUILD_FLOW_SKIP)->skip; - if(!skip) - return; + skip->builder = builder; /* create new basic block */ - skip->block = lp_build_flow_insert_block(flow); - - builder = LLVMCreateBuilder(); - LLVMPositionBuilderAtEnd(builder, skip->block); - - LLVMDisposeBuilder(builder); + skip->block = lp_build_insert_new_block(skip->builder, "skip"); } @@ -244,37 +88,26 @@ lp_build_flow_skip_begin(struct lp_build_flow_context *flow) * skip block if the condition is true. */ void -lp_build_flow_skip_cond_break(struct lp_build_flow_context *flow, +lp_build_flow_skip_cond_break(struct lp_build_skip_context *skip, LLVMValueRef cond) { - struct lp_build_flow_skip *skip; LLVMBasicBlockRef new_block; - skip = &lp_build_flow_peek(flow, LP_BUILD_FLOW_SKIP)->skip; - if(!skip) - return; - - new_block = lp_build_flow_insert_block(flow); + new_block = lp_build_insert_new_block(skip->builder, ""); /* if cond is true, goto skip->block, else goto new_block */ - LLVMBuildCondBr(flow->builder, cond, skip->block, new_block); + LLVMBuildCondBr(skip->builder, cond, skip->block, new_block); - LLVMPositionBuilderAtEnd(flow->builder, new_block); + LLVMPositionBuilderAtEnd(skip->builder, new_block); } void -lp_build_flow_skip_end(struct lp_build_flow_context *flow) +lp_build_flow_skip_end(struct lp_build_skip_context *skip) { - struct lp_build_flow_skip *skip; - - skip = &lp_build_flow_pop(flow, LP_BUILD_FLOW_SKIP)->skip; - if(!skip) - return; - /* goto block */ - LLVMBuildBr(flow->builder, skip->block); - LLVMPositionBuilderAtEnd(flow->builder, skip->block); + LLVMBuildBr(skip->builder, skip->block); + LLVMPositionBuilderAtEnd(skip->builder, skip->block); } @@ -284,7 +117,7 @@ lp_build_flow_skip_end(struct lp_build_flow_context *flow) void lp_build_mask_check(struct lp_build_mask_context *mask) { - LLVMBuilderRef builder = mask->flow->builder; + LLVMBuilderRef builder = mask->skip.builder; LLVMValueRef value; LLVMValueRef cond; @@ -298,7 +131,7 @@ lp_build_mask_check(struct lp_build_mask_context *mask) ""); /* if cond, goto end of block */ - lp_build_flow_skip_cond_break(mask->flow, cond); + lp_build_flow_skip_cond_break(&mask->skip, cond); } @@ -311,28 +144,27 @@ lp_build_mask_check(struct lp_build_mask_context *mask) */ void lp_build_mask_begin(struct lp_build_mask_context *mask, - struct lp_build_flow_context *flow, + LLVMBuilderRef builder, struct lp_type type, LLVMValueRef value) { memset(mask, 0, sizeof *mask); - mask->flow = flow; mask->reg_type = LLVMIntType(type.width * type.length); - mask->var = lp_build_alloca(flow->builder, + mask->var = lp_build_alloca(builder, lp_build_int_vec_type(type), "execution_mask"); - LLVMBuildStore(flow->builder, value, mask->var); + LLVMBuildStore(builder, value, mask->var); - lp_build_flow_skip_begin(flow); + lp_build_flow_skip_begin(&mask->skip, builder); } LLVMValueRef lp_build_mask_value(struct lp_build_mask_context *mask) { - return LLVMBuildLoad(mask->flow->builder, mask->var, ""); + return LLVMBuildLoad(mask->skip.builder, mask->var, ""); } @@ -345,10 +177,10 @@ void lp_build_mask_update(struct lp_build_mask_context *mask, LLVMValueRef value) { - value = LLVMBuildAnd(mask->flow->builder, + value = LLVMBuildAnd(mask->skip.builder, lp_build_mask_value(mask), value, ""); - LLVMBuildStore(mask->flow->builder, value, mask->var); + LLVMBuildStore(mask->skip.builder, value, mask->var); } @@ -358,7 +190,7 @@ lp_build_mask_update(struct lp_build_mask_context *mask, LLVMValueRef lp_build_mask_end(struct lp_build_mask_context *mask) { - lp_build_flow_skip_end(mask->flow); + lp_build_flow_skip_end(&mask->skip); return lp_build_mask_value(mask); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h b/src/gallium/auxiliary/gallivm/lp_bld_flow.h index a4fc8d19556..e21d9de280f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h @@ -41,29 +41,33 @@ struct lp_type; -struct lp_build_flow_context; - - -struct lp_build_flow_context * -lp_build_flow_create(LLVMBuilderRef builder); +/** + * Early exit. Useful to skip to the end of a function or block when + * the execution mask becomes zero or when there is an error condition. + */ +struct lp_build_skip_context +{ + LLVMBuilderRef builder; -void -lp_build_flow_destroy(struct lp_build_flow_context *flow); + /** Block to skip to */ + LLVMBasicBlockRef block; +}; void -lp_build_flow_skip_begin(struct lp_build_flow_context *flow); +lp_build_flow_skip_begin(struct lp_build_skip_context *ctx, + LLVMBuilderRef builder); void -lp_build_flow_skip_cond_break(struct lp_build_flow_context *flow, +lp_build_flow_skip_cond_break(struct lp_build_skip_context *ctx, LLVMValueRef cond); void -lp_build_flow_skip_end(struct lp_build_flow_context *flow); +lp_build_flow_skip_end(struct lp_build_skip_context *ctx); struct lp_build_mask_context { - struct lp_build_flow_context *flow; + struct lp_build_skip_context skip; LLVMTypeRef reg_type; @@ -73,7 +77,7 @@ struct lp_build_mask_context void lp_build_mask_begin(struct lp_build_mask_context *mask, - struct lp_build_flow_context *flow, + LLVMBuilderRef builder, struct lp_type type, LLVMValueRef value); diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 3b0706e3ec1..6bfd02061d5 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -237,7 +237,6 @@ generate_fs(struct llvmpipe_context *lp, LLVMValueRef z; LLVMValueRef zs_value = NULL; LLVMValueRef stencil_refs[2]; - struct lp_build_flow_context *flow; struct lp_build_mask_context mask; boolean simple_shader = (shader->info.file_count[TGSI_FILE_SAMPLER] == 0 && shader->info.num_inputs < 3 && @@ -286,8 +285,6 @@ generate_fs(struct llvmpipe_context *lp, consts_ptr = lp_jit_context_constants(builder, context_ptr); - flow = lp_build_flow_create(builder); - memset(outputs, 0, sizeof outputs); /* Declare the color and z variables */ @@ -307,7 +304,7 @@ generate_fs(struct llvmpipe_context *lp, } /* 'mask' will control execution based on quad's pixel alive/killed state */ - lp_build_mask_begin(&mask, flow, type, *pmask); + lp_build_mask_begin(&mask, builder, type, *pmask); if (!(depth_mode & EARLY_DEPTH_TEST) && !simple_shader) lp_build_mask_check(&mask); @@ -424,8 +421,6 @@ generate_fs(struct llvmpipe_context *lp, lp_build_mask_value(&mask), counter); *pmask = lp_build_mask_end(&mask); - - lp_build_flow_destroy(flow); } @@ -450,7 +445,6 @@ generate_blend(const struct pipe_blend_state *blend, boolean do_branch) { struct lp_build_context bld; - struct lp_build_flow_context *flow; struct lp_build_mask_context mask_ctx; LLVMTypeRef vec_type; LLVMValueRef const_ptr; @@ -461,8 +455,7 @@ generate_blend(const struct pipe_blend_state *blend, lp_build_context_init(&bld, builder, type); - flow = lp_build_flow_create(builder); - lp_build_mask_begin(&mask_ctx, flow, type, mask); + lp_build_mask_begin(&mask_ctx, builder, type, mask); if (do_branch) lp_build_mask_check(&mask_ctx); @@ -497,7 +490,6 @@ generate_blend(const struct pipe_blend_state *blend, } lp_build_mask_end(&mask_ctx); - lp_build_flow_destroy(flow); } -- cgit v1.2.3 From 08f890d4c3b8376d1840f90474f7c56329432d95 Mon Sep 17 00:00:00 2001 From: delphi Date: Sun, 10 Oct 2010 00:31:16 +0100 Subject: draw: some changes to allow for runtime changes to userclip planes --- src/gallium/auxiliary/draw/draw_context.c | 1 + src/gallium/auxiliary/draw/draw_llvm.c | 70 +++++++++++++++++----- src/gallium/auxiliary/draw/draw_llvm.h | 10 ++-- src/gallium/auxiliary/draw/draw_private.h | 3 + .../draw/draw_pt_fetch_shade_pipeline_llvm.c | 3 + 5 files changed, 67 insertions(+), 20 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index b07de76a498..c52234d8e31 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -335,6 +335,7 @@ draw_set_mapped_constant_buffer(struct draw_context *draw, case PIPE_SHADER_VERTEX: draw->pt.user.vs_constants[slot] = buffer; draw->pt.user.vs_constants_size[slot] = size; + draw->pt.user.planes = (float (*) [12][4]) &(draw->plane[0]); draw_vs_set_constants(draw, slot, buffer, size); break; case PIPE_SHADER_GEOMETRY: diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 9c17e7763ae..5f11b82bb99 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -130,12 +130,13 @@ init_globals(struct draw_llvm *llvm) /* struct draw_jit_context */ { - LLVMTypeRef elem_types[3]; + LLVMTypeRef elem_types[4]; LLVMTypeRef context_type; elem_types[0] = LLVMPointerType(LLVMFloatType(), 0); /* vs_constants */ - elem_types[1] = LLVMPointerType(LLVMFloatType(), 0); /* vs_constants */ - elem_types[2] = LLVMArrayType(texture_type, + elem_types[1] = LLVMPointerType(LLVMFloatType(), 0); /* gs_constants */ + elem_types[2] = LLVMPointerType(LLVMArrayType(LLVMArrayType(LLVMFloatType(), 4), 12), 0); /* planes */ + elem_types[3] = LLVMArrayType(texture_type, PIPE_MAX_VERTEX_SAMPLERS); /* textures */ context_type = LLVMStructType(elem_types, Elements(elem_types), 0); @@ -144,6 +145,8 @@ init_globals(struct draw_llvm *llvm) llvm->target, context_type, 0); LP_CHECK_MEMBER_OFFSET(struct draw_jit_context, gs_constants, llvm->target, context_type, 1); + LP_CHECK_MEMBER_OFFSET(struct draw_jit_context, planes, + llvm->target, context_type, 2); LP_CHECK_MEMBER_OFFSET(struct draw_jit_context, textures, llvm->target, context_type, DRAW_JIT_CTX_TEXTURES); @@ -817,6 +820,23 @@ generate_viewport(struct draw_llvm *llvm, } +/* Equivalent of _mm_set1_ps(a) + */ +static LLVMValueRef vec4f_from_scalar(LLVMBuilderRef bld, + LLVMValueRef a, + const char *name) +{ + LLVMValueRef res = LLVMGetUndef(LLVMVectorType(LLVMFloatType(), 4)); + int i; + + for(i = 0; i < 4; ++i) { + LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0); + res = LLVMBuildInsertElement(bld, res, a, index, i == 3 ? name : ""); + } + + return res; +} + /* * Returns clipmask as 4xi32 bitmask for the 4 vertices */ @@ -827,17 +847,16 @@ generate_clipmask(LLVMBuilderRef builder, boolean clip_z, boolean clip_user, boolean enable_d3dclipping, - struct draw_llvm *llvm) + unsigned nr, + LLVMValueRef context_ptr) { LLVMValueRef mask; /* stores the <4xi32> clipmasks */ LLVMValueRef test, temp; LLVMValueRef zero, shift; LLVMValueRef pos_x, pos_y, pos_z, pos_w; - LLVMValueRef planes, sum; + LLVMValueRef plane1, planes, plane_ptr, sum; - unsigned nr; unsigned i; - float (*plane)[4]; struct lp_type f32_type = lp_type_float_vec(32); @@ -903,22 +922,38 @@ generate_clipmask(LLVMBuilderRef builder, } if (clip_user){ + LLVMValueRef planes_ptr = draw_jit_context_planes(builder, context_ptr); + LLVMValueRef indices[3]; + /* userclip planes */ - nr = llvm->draw->nr_planes; - plane = llvm->draw->plane; for (i = 6; i < nr; i++) { - planes = lp_build_const_vec(f32_type, plane[i][0]); + indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0); + indices[1] = LLVMConstInt(LLVMInt32Type(), i, 0); + + indices[2] = LLVMConstInt(LLVMInt32Type(), 0, 0); + plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); + plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_x"); + planes = vec4f_from_scalar(builder, plane1, "plane4_x"); sum = LLVMBuildMul(builder, planes, pos_x, ""); - planes = lp_build_const_vec(f32_type, plane[i][1]); + indices[2] = LLVMConstInt(LLVMInt32Type(), 1, 0); + plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); + plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_y"); + planes = vec4f_from_scalar(builder, plane1, "plane4_y"); test = LLVMBuildMul(builder, planes, pos_y, ""); sum = LLVMBuildFAdd(builder, sum, test, ""); - - planes = lp_build_const_vec(f32_type, plane[i][2]); + + indices[2] = LLVMConstInt(LLVMInt32Type(), 2, 0); + plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); + plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_z"); + planes = vec4f_from_scalar(builder, plane1, "plane4_z"); test = LLVMBuildMul(builder, planes, pos_z, ""); sum = LLVMBuildFAdd(builder, sum, test, ""); - planes = lp_build_const_vec(f32_type, plane[i][3]); + indices[2] = LLVMConstInt(LLVMInt32Type(), 3, 0); + plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); + plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_w"); + planes = vec4f_from_scalar(builder, plane1, "plane4_w"); test = LLVMBuildMul(builder, planes, pos_w, ""); sum = LLVMBuildFAdd(builder, sum, test, ""); @@ -1098,7 +1133,8 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) variant->key.clip_z, variant->key.clip_user, variant->key.enable_d3dclipping, - llvm); + variant->key.nr_planes, + context_ptr); /* return clipping boolean value for function */ clipmask_bool(builder, clipmask, ret_ptr); } @@ -1308,7 +1344,8 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian variant->key.clip_z, variant->key.clip_user, variant->key.enable_d3dclipping, - llvm); + variant->key.nr_planes, + context_ptr); /* return clipping boolean value for function */ clipmask_bool(builder, clipmask, ret_ptr); } @@ -1392,6 +1429,7 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store) key->bypass_viewport = llvm->draw->identity_viewport; key->enable_d3dclipping = (boolean)!llvm->draw->rasterizer->gl_rasterization_rules; key->need_edgeflags = (llvm->draw->vs.edgeflag_output ? TRUE : FALSE); + key->nr_planes = llvm->draw->nr_planes; /* All variants of this shader will have the same value for * nr_samplers. Not yet trying to compact away holes in the diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index 4a4d93f33a8..fc7885499ef 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -97,7 +97,7 @@ struct draw_jit_context { const float *vs_constants; const float *gs_constants; - + float (*planes) [12][4]; struct draw_jit_texture textures[PIPE_MAX_VERTEX_SAMPLERS]; }; @@ -109,13 +109,14 @@ struct draw_jit_context #define draw_jit_context_gs_constants(_builder, _ptr) \ lp_build_struct_get(_builder, _ptr, 1, "gs_constants") -#define DRAW_JIT_CTX_TEXTURES 2 +#define draw_jit_context_planes(_builder, _ptr) \ + lp_build_struct_get(_builder, _ptr, 2, "planes") + +#define DRAW_JIT_CTX_TEXTURES 3 #define draw_jit_context_textures(_builder, _ptr) \ lp_build_struct_get_ptr(_builder, _ptr, DRAW_JIT_CTX_TEXTURES, "textures") - - #define draw_jit_header_id(_builder, _ptr) \ lp_build_struct_get_ptr(_builder, _ptr, 0, "id") @@ -167,6 +168,7 @@ struct draw_llvm_variant_key unsigned bypass_viewport:1; unsigned enable_d3dclipping:1; unsigned need_edgeflags:1; + unsigned nr_planes; /* Variable number of vertex elements: */ diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h index d417f825a0f..54163d7f9eb 100644 --- a/src/gallium/auxiliary/draw/draw_private.h +++ b/src/gallium/auxiliary/draw/draw_private.h @@ -169,6 +169,9 @@ struct draw_context unsigned vs_constants_size[PIPE_MAX_CONSTANT_BUFFERS]; const void *gs_constants[PIPE_MAX_CONSTANT_BUFFERS]; unsigned gs_constants_size[PIPE_MAX_CONSTANT_BUFFERS]; + + /* pointer to planes */ + float (*planes)[12][4]; } user; boolean test_fse; /* enable FSE even though its not correct (eg for softpipe) */ diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c index dc138b980da..e5b2532b50a 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c @@ -175,6 +175,9 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle, draw->pt.user.vs_constants[0]; fpme->llvm->jit_context.gs_constants = draw->pt.user.gs_constants[0]; + fpme->llvm->jit_context.planes = + (float (*) [12][4]) draw->pt.user.planes[0]; + } -- cgit v1.2.3 From 124adf253c5cd4940088ca2f10bc12da30375683 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 10 Oct 2010 18:45:14 +0100 Subject: gallivm: Fix a long standing bug with nested if-then-else emission. We can't patch true-block at end-if time, as there is no guarantee that the block at the beginning of the true stanza is the same at the end of the true stanza -- other control flow elements may have been emitted half way the true stanza. Although this bug surfaced recently with the commit to skip mip filtering when lod is an integer the bug was always there, although probably it was avoided until now: e.g., cubemap selection nests if-then-else on the else stanza, which does not suffer from the same problem. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index 99a49df317c..9d1a74f5d16 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -320,7 +320,6 @@ lp_build_if(struct lp_build_if_state *ifthen, /* create endif/merge basic block for the phi functions */ ifthen->merge_block = lp_build_insert_new_block(builder, "endif-block"); - LLVMPositionBuilderAtEnd(builder, ifthen->merge_block); /* create/insert true_block before merge_block */ ifthen->true_block = LLVMInsertBasicBlock(ifthen->merge_block, "if-true-block"); @@ -336,6 +335,9 @@ lp_build_if(struct lp_build_if_state *ifthen, void lp_build_else(struct lp_build_if_state *ifthen) { + /* Append an unconditional Br(anch) instruction on the true_block */ + LLVMBuildBr(ifthen->builder, ifthen->merge_block); + /* create/insert false_block before the merge block */ ifthen->false_block = LLVMInsertBasicBlock(ifthen->merge_block, "if-false-block"); @@ -353,9 +355,9 @@ lp_build_endif(struct lp_build_if_state *ifthen) /* Insert branch to the merge block from current block */ LLVMBuildBr(ifthen->builder, ifthen->merge_block); - /*** - *** Now patch in the various branch instructions. - ***/ + /* + * Now patch in the various branch instructions. + */ /* Insert the conditional branch instruction at the end of entry_block */ LLVMPositionBuilderAtEnd(ifthen->builder, ifthen->entry_block); @@ -370,19 +372,6 @@ lp_build_endif(struct lp_build_if_state *ifthen) ifthen->true_block, ifthen->merge_block); } - /* Insert branch from end of true_block to merge_block */ - if (ifthen->false_block) { - /* Append an unconditional Br(anch) instruction on the true_block */ - LLVMPositionBuilderAtEnd(ifthen->builder, ifthen->true_block); - LLVMBuildBr(ifthen->builder, ifthen->merge_block); - } - else { - /* No else clause. - * Note that we've already inserted the branch at the end of - * true_block. See the very first LLVMBuildBr() call in this function. - */ - } - /* Resume building code at end of the ifthen->merge_block */ LLVMPositionBuilderAtEnd(ifthen->builder, ifthen->merge_block); } -- cgit v1.2.3 From 48003f3567d2732cfab08186934c4261c0447c9c Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 10 Oct 2010 18:47:24 +0100 Subject: gallivm: Allow to disable bri-linear filtering with GALLIVM_DEBUG=no_brilinear runtime option --- src/gallium/auxiliary/gallivm/lp_bld_debug.h | 11 ++++++----- src/gallium/auxiliary/gallivm/lp_bld_init.c | 1 + src/gallium/auxiliary/gallivm/lp_bld_sample.c | 7 +++---- 3 files changed, 10 insertions(+), 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.h b/src/gallium/auxiliary/gallivm/lp_bld_debug.h index 369c1bbf09a..eb11dcd4ef4 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.h @@ -36,11 +36,12 @@ #include "util/u_string.h" -#define GALLIVM_DEBUG_TGSI 0x1 -#define GALLIVM_DEBUG_IR 0x2 -#define GALLIVM_DEBUG_ASM 0x4 -#define GALLIVM_DEBUG_NO_OPT 0x8 -#define GALLIVM_DEBUG_PERF 0x10 +#define GALLIVM_DEBUG_TGSI (1 << 0) +#define GALLIVM_DEBUG_IR (1 << 1) +#define GALLIVM_DEBUG_ASM (1 << 2) +#define GALLIVM_DEBUG_NO_OPT (1 << 3) +#define GALLIVM_DEBUG_PERF (1 << 4) +#define GALLIVM_DEBUG_NO_BRILINEAR (1 << 5) #ifdef DEBUG diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index 761f33b578d..5598ca5c489 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -44,6 +44,7 @@ static const struct debug_named_value lp_bld_debug_flags[] = { { "asm", GALLIVM_DEBUG_ASM, NULL }, { "nopt", GALLIVM_DEBUG_NO_OPT, NULL }, { "perf", GALLIVM_DEBUG_PERF, NULL }, + { "no_brilinear", GALLIVM_DEBUG_NO_BRILINEAR, NULL }, DEBUG_NAMED_VALUE_END }; diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 1a27a241183..9d15a6f4dad 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -47,8 +47,7 @@ /* - * Bri-linear factor. Use zero or any other number less than one to force - * tri-linear filtering. + * Bri-linear factor. Should be greater than one. */ #define BRILINEAR_FACTOR 2 @@ -464,7 +463,7 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, return; } if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR && - BRILINEAR_FACTOR > 1.0) { + !(gallivm_debug & GALLIVM_DEBUG_NO_BRILINEAR)) { lp_build_brilinear_rho(float_bld, rho, BRILINEAR_FACTOR, out_lod_ipart, out_lod_fpart); return; @@ -507,7 +506,7 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, } if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { - if (BRILINEAR_FACTOR > 1.0) { + if (!(gallivm_debug & GALLIVM_DEBUG_NO_BRILINEAR)) { lp_build_brilinear_lod(float_bld, lod, BRILINEAR_FACTOR, out_lod_ipart, out_lod_fpart); } -- cgit v1.2.3 From 693667bf88abcb60332a6f94c8f06a9fe7d62613 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 10 Oct 2010 19:05:05 +0100 Subject: gallivm: Use variables instead of Phis in loops. With this commit all explicit Phi emission is now gone. --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 62 ++++++++++------------------- src/gallium/auxiliary/gallivm/lp_bld_flow.h | 3 +- 2 files changed, 23 insertions(+), 42 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index 9d1a74f5d16..f9d061fcb44 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -201,59 +201,27 @@ lp_build_loop_begin(LLVMBuilderRef builder, LLVMValueRef start, struct lp_build_loop_state *state) { - LLVMBasicBlockRef block = LLVMGetInsertBlock(builder); - LLVMValueRef function = LLVMGetBasicBlockParent(block); + state->block = lp_build_insert_new_block(builder, "loop_begin"); + + state->counter_var = lp_build_alloca(builder, LLVMTypeOf(start), "loop_counter"); - state->block = LLVMAppendBasicBlock(function, "loop"); + LLVMBuildStore(builder, start, state->counter_var); LLVMBuildBr(builder, state->block); LLVMPositionBuilderAtEnd(builder, state->block); - state->counter = LLVMBuildPhi(builder, LLVMTypeOf(start), ""); - - LLVMAddIncoming(state->counter, &start, &block, 1); - + state->counter = LLVMBuildLoad(builder, state->counter_var, ""); } -void -lp_build_loop_end(LLVMBuilderRef builder, - LLVMValueRef end, - LLVMValueRef step, - struct lp_build_loop_state *state) -{ - LLVMBasicBlockRef block = LLVMGetInsertBlock(builder); - LLVMValueRef function = LLVMGetBasicBlockParent(block); - LLVMValueRef next; - LLVMValueRef cond; - LLVMBasicBlockRef after_block; - - if (!step) - step = LLVMConstInt(LLVMTypeOf(end), 1, 0); - - next = LLVMBuildAdd(builder, state->counter, step, ""); - - cond = LLVMBuildICmp(builder, LLVMIntNE, next, end, ""); - - after_block = LLVMAppendBasicBlock(function, ""); - - LLVMBuildCondBr(builder, cond, after_block, state->block); - - LLVMAddIncoming(state->counter, &next, &block, 1); - - LLVMPositionBuilderAtEnd(builder, after_block); -} - void lp_build_loop_end_cond(LLVMBuilderRef builder, LLVMValueRef end, LLVMValueRef step, - int llvm_cond, + LLVMIntPredicate llvm_cond, struct lp_build_loop_state *state) { - LLVMBasicBlockRef block = LLVMGetInsertBlock(builder); - LLVMValueRef function = LLVMGetBasicBlockParent(block); LLVMValueRef next; LLVMValueRef cond; LLVMBasicBlockRef after_block; @@ -263,15 +231,27 @@ lp_build_loop_end_cond(LLVMBuilderRef builder, next = LLVMBuildAdd(builder, state->counter, step, ""); + LLVMBuildStore(builder, next, state->counter_var); + cond = LLVMBuildICmp(builder, llvm_cond, next, end, ""); - after_block = LLVMAppendBasicBlock(function, ""); + after_block = lp_build_insert_new_block(builder, "loop_end"); LLVMBuildCondBr(builder, cond, after_block, state->block); - LLVMAddIncoming(state->counter, &next, &block, 1); - LLVMPositionBuilderAtEnd(builder, after_block); + + state->counter = LLVMBuildLoad(builder, state->counter_var, ""); +} + + +void +lp_build_loop_end(LLVMBuilderRef builder, + LLVMValueRef end, + LLVMValueRef step, + struct lp_build_loop_state *state) +{ + lp_build_loop_end_cond(builder, end, step, LLVMIntNE, state); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h b/src/gallium/auxiliary/gallivm/lp_bld_flow.h index e21d9de280f..e729ee6eaac 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h @@ -108,6 +108,7 @@ lp_build_mask_end(struct lp_build_mask_context *mask); struct lp_build_loop_state { LLVMBasicBlockRef block; + LLVMValueRef counter_var; LLVMValueRef counter; }; @@ -128,7 +129,7 @@ void lp_build_loop_end_cond(LLVMBuilderRef builder, LLVMValueRef end, LLVMValueRef step, - int cond, /* LLVM condition */ + LLVMIntPredicate cond, struct lp_build_loop_state *state); -- cgit v1.2.3 From 17dbd41cf23e7e7de2f27e5e9252d7f792d932f3 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 10 Oct 2010 19:51:35 +0100 Subject: gallivm: Pass texture coords derivates as scalars. We end up treating them as scalars in the end, and it saves some instructions. --- src/gallium/auxiliary/gallivm/lp_bld_quad.c | 28 +++++++++++++++-------- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 12 +++++----- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 8 +++---- src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 16 ++++++++----- 4 files changed, 38 insertions(+), 26 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_quad.c b/src/gallium/auxiliary/gallivm/lp_bld_quad.c index 7b1088939b9..c18c8b47100 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_quad.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_quad.c @@ -81,11 +81,15 @@ LLVMValueRef lp_build_scalar_ddx(struct lp_build_context *bld, LLVMValueRef a) { - LLVMValueRef idx_left = LLVMConstInt(LLVMInt32Type(), LP_BLD_QUAD_TOP_LEFT, 0); - LLVMValueRef idx_right = LLVMConstInt(LLVMInt32Type(), LP_BLD_QUAD_TOP_RIGHT, 0); - LLVMValueRef a_left = LLVMBuildExtractElement(bld->builder, a, idx_left, ""); - LLVMValueRef a_right = LLVMBuildExtractElement(bld->builder, a, idx_right, ""); - return lp_build_sub(bld, a_right, a_left); + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMValueRef idx_left = LLVMConstInt(i32t, LP_BLD_QUAD_TOP_LEFT, 0); + LLVMValueRef idx_right = LLVMConstInt(i32t, LP_BLD_QUAD_TOP_RIGHT, 0); + LLVMValueRef a_left = LLVMBuildExtractElement(bld->builder, a, idx_left, "left"); + LLVMValueRef a_right = LLVMBuildExtractElement(bld->builder, a, idx_right, "right"); + if (bld->type.floating) + return LLVMBuildFSub(bld->builder, a_right, a_left, "ddx"); + else + return LLVMBuildSub(bld->builder, a_right, a_left, "ddx"); } @@ -93,9 +97,13 @@ LLVMValueRef lp_build_scalar_ddy(struct lp_build_context *bld, LLVMValueRef a) { - LLVMValueRef idx_top = LLVMConstInt(LLVMInt32Type(), LP_BLD_QUAD_TOP_LEFT, 0); - LLVMValueRef idx_bottom = LLVMConstInt(LLVMInt32Type(), LP_BLD_QUAD_BOTTOM_LEFT, 0); - LLVMValueRef a_top = LLVMBuildExtractElement(bld->builder, a, idx_top, ""); - LLVMValueRef a_bottom = LLVMBuildExtractElement(bld->builder, a, idx_bottom, ""); - return lp_build_sub(bld, a_bottom, a_top); + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMValueRef idx_top = LLVMConstInt(i32t, LP_BLD_QUAD_TOP_LEFT, 0); + LLVMValueRef idx_bottom = LLVMConstInt(i32t, LP_BLD_QUAD_BOTTOM_LEFT, 0); + LLVMValueRef a_top = LLVMBuildExtractElement(bld->builder, a, idx_top, "top"); + LLVMValueRef a_bottom = LLVMBuildExtractElement(bld->builder, a, idx_bottom, "bottom"); + if (bld->type.floating) + return LLVMBuildFSub(bld->builder, a_bottom, a_top, "ddy"); + else + return LLVMBuildSub(bld->builder, a_bottom, a_top, "ddy"); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 9d15a6f4dad..844d1d935b5 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -200,8 +200,8 @@ lp_build_rho(struct lp_build_sample_context *bld, LLVMValueRef float_size; LLVMValueRef rho; - dsdx = LLVMBuildExtractElement(bld->builder, ddx[0], index0, "dsdx"); - dsdy = LLVMBuildExtractElement(bld->builder, ddy[0], index0, "dsdy"); + dsdx = ddx[0]; + dsdy = ddy[0]; if (dims <= 1) { rho_x = dsdx; @@ -214,15 +214,15 @@ lp_build_rho(struct lp_build_sample_context *bld, rho_x = LLVMBuildInsertElement(bld->builder, rho_x, dsdx, index0, ""); rho_y = LLVMBuildInsertElement(bld->builder, rho_y, dsdy, index0, ""); - dtdx = LLVMBuildExtractElement(bld->builder, ddx[1], index0, "dtdx"); - dtdy = LLVMBuildExtractElement(bld->builder, ddy[1], index0, "dtdy"); + dtdx = ddx[1]; + dtdy = ddy[1]; rho_x = LLVMBuildInsertElement(bld->builder, rho_x, dtdx, index1, ""); rho_y = LLVMBuildInsertElement(bld->builder, rho_y, dtdy, index1, ""); if (dims >= 3) { - drdx = LLVMBuildExtractElement(bld->builder, ddx[2], index0, "drdx"); - drdy = LLVMBuildExtractElement(bld->builder, ddy[2], index0, "drdy"); + drdx = ddx[2]; + drdy = ddy[2]; rho_x = LLVMBuildInsertElement(bld->builder, rho_x, drdx, index2, ""); rho_y = LLVMBuildInsertElement(bld->builder, rho_y, drdy, index2, ""); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 69d81ad9711..be5d9a261ac 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -942,12 +942,12 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, r = lp_build_broadcast_scalar(&bld->int_coord_bld, face); /* vec */ /* recompute ddx, ddy using the new (s,t) face texcoords */ - face_ddx[0] = lp_build_ddx(&bld->coord_bld, s); - face_ddx[1] = lp_build_ddx(&bld->coord_bld, t); + face_ddx[0] = lp_build_scalar_ddx(&bld->coord_bld, s); + face_ddx[1] = lp_build_scalar_ddx(&bld->coord_bld, t); face_ddx[2] = NULL; face_ddx[3] = NULL; - face_ddy[0] = lp_build_ddy(&bld->coord_bld, s); - face_ddy[1] = lp_build_ddy(&bld->coord_bld, t); + face_ddy[0] = lp_build_scalar_ddy(&bld->coord_bld, s); + face_ddy[1] = lp_build_scalar_ddy(&bld->coord_bld, t); face_ddy[2] = NULL; face_ddy[3] = NULL; ddx = face_ddx; diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 03020a62f85..2d4eb9a925c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -887,21 +887,25 @@ emit_tex( struct lp_build_tgsi_soa_context *bld, } if (modifier == LP_BLD_TEX_MODIFIER_EXPLICIT_DERIV) { + LLVMTypeRef i32t = LLVMInt32Type(); + LLVMValueRef index0 = LLVMConstInt(i32t, 0, 0); for (i = 0; i < num_coords; i++) { - ddx[i] = emit_fetch( bld, inst, 1, i ); - ddy[i] = emit_fetch( bld, inst, 2, i ); + LLVMValueRef src1 = emit_fetch( bld, inst, 1, i ); + LLVMValueRef src2 = emit_fetch( bld, inst, 2, i ); + ddx[i] = LLVMBuildExtractElement(bld->base.builder, src1, index0, ""); + ddy[i] = LLVMBuildExtractElement(bld->base.builder, src2, index0, ""); } unit = inst->Src[3].Register.Index; } else { for (i = 0; i < num_coords; i++) { - ddx[i] = lp_build_ddx( &bld->base, coords[i] ); - ddy[i] = lp_build_ddy( &bld->base, coords[i] ); + ddx[i] = lp_build_scalar_ddx( &bld->base, coords[i] ); + ddy[i] = lp_build_scalar_ddy( &bld->base, coords[i] ); } unit = inst->Src[1].Register.Index; } for (i = num_coords; i < 3; i++) { - ddx[i] = bld->base.undef; - ddy[i] = bld->base.undef; + ddx[i] = LLVMGetUndef(bld->base.elem_type); + ddy[i] = LLVMGetUndef(bld->base.elem_type); } bld->sampler->emit_fetch_texel(bld->sampler, -- cgit v1.2.3 From bd89da79a1acc8b896a7f5afc71435befe2ff7e4 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 8 Oct 2010 09:51:09 +1000 Subject: r600g: fix input/output Z export mixup for evergreen. --- src/gallium/drivers/r600/evergreen_state.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 0fd1d399518..81db2e25e8b 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -1546,7 +1546,7 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader r600_pipe_state_add_reg(rstate, R_028644_SPI_PS_INPUT_CNTL_0 + i * 4, tmp, 0xFFFFFFFF, NULL); } for (i = 0; i < rshader->noutput; i++) { - if (rshader->input[i].name == TGSI_SEMANTIC_POSITION) + if (rshader->output[i].name == TGSI_SEMANTIC_POSITION) r600_pipe_state_add_reg(rstate, R_02880C_DB_SHADER_CONTROL, S_02880C_Z_EXPORT_ENABLE(1), -- cgit v1.2.3 From 2c47f302af48fe2a464230efb63dfe543740d1fb Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 8 Oct 2010 10:17:51 +1000 Subject: r600g: evergreen has no request size bit in texture word4 --- src/gallium/drivers/r600/evergreen_state.c | 1 - src/gallium/drivers/r600/evergreend.h | 3 --- 2 files changed, 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 81db2e25e8b..bdd54811fb2 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -464,7 +464,6 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte r600_pipe_state_add_reg(rstate, R_030010_RESOURCE0_WORD4, word4 | S_030010_NUM_FORMAT_ALL(V_030010_SQ_NUM_FORMAT_NORM) | S_030010_SRF_MODE_ALL(V_030010_SFR_MODE_NO_ZERO) | - S_030010_REQUEST_SIZE(1) | S_030010_BASE_LEVEL(state->first_level), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_030014_RESOURCE0_WORD5, S_030014_LAST_LEVEL(state->last_level) | diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h index 9971dded782..eb36a35165e 100644 --- a/src/gallium/drivers/r600/evergreend.h +++ b/src/gallium/drivers/r600/evergreend.h @@ -984,9 +984,6 @@ #define S_030010_ENDIAN_SWAP(x) (((x) & 0x3) << 12) #define G_030010_ENDIAN_SWAP(x) (((x) >> 12) & 0x3) #define C_030010_ENDIAN_SWAP 0xFFFFCFFF -#define S_030010_REQUEST_SIZE(x) (((x) & 0x3) << 14) -#define G_030010_REQUEST_SIZE(x) (((x) >> 14) & 0x3) -#define C_030010_REQUEST_SIZE 0xFFFF3FFF #define S_030010_DST_SEL_X(x) (((x) & 0x7) << 16) #define G_030010_DST_SEL_X(x) (((x) >> 16) & 0x7) #define C_030010_DST_SEL_X 0xFFF8FFFF -- cgit v1.2.3 From ea1d818b58d6ff9e4cd0c40eb865beabde8f268c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 11 Oct 2010 11:58:27 +1000 Subject: r600g: enable vertex samplers. We need to move the texture sampler resources out of the range of the vertex attribs. We could probably improve this using an allocator but this is the simple answer for now. makes mesa-demos/src/glsl/vert-tex work. --- src/gallium/drivers/r600/evergreen_state.c | 11 ++++++++--- src/gallium/drivers/r600/r600_pipe.c | 2 +- src/gallium/drivers/r600/r600_shader.c | 6 ++++-- src/gallium/drivers/r600/r600_state.c | 11 ++++++++--- 4 files changed, 21 insertions(+), 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index bdd54811fb2..323509f6402 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -480,8 +480,14 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte static void evergreen_set_vs_sampler_view(struct pipe_context *ctx, unsigned count, struct pipe_sampler_view **views) { - /* TODO */ - assert(1); + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_sampler_view **resource = (struct r600_pipe_sampler_view **)views; + + for (int i = 0; i < count; i++) { + if (resource[i]) { + evergreen_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS); + } + } } static void evergreen_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, @@ -523,7 +529,6 @@ static void evergreen_bind_vs_sampler(struct pipe_context *ctx, unsigned count, struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state **rstates = (struct r600_pipe_state **)states; - /* TODO implement */ for (int i = 0; i < count; i++) { evergreen_context_pipe_state_set_vs_sampler(&rctx->ctx, rstates[i], i); } diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 0589652f705..832a2b2b606 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -257,7 +257,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) return 14; case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS: /* FIXME allow this once infrastructure is there */ - return 0; + return 16; case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS: case PIPE_CAP_MAX_COMBINED_SAMPLERS: return 16; diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 366d5d9c351..d22325e8b78 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -1866,8 +1866,10 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) memset(&tex, 0, sizeof(struct r600_bc_tex)); tex.inst = opcode; - tex.resource_id = ctx->file_offset[inst->Src[1].Register.File] + inst->Src[1].Register.Index; - tex.sampler_id = tex.resource_id; + tex.sampler_id = ctx->file_offset[inst->Src[1].Register.File] + inst->Src[1].Register.Index; + tex.resource_id = tex.sampler_id; + if (ctx->shader->processor_type == TGSI_PROCESSOR_VERTEX) + tex.resource_id += PIPE_MAX_ATTRIBS; tex.src_gpr = src_gpr; tex.dst_gpr = ctx->file_offset[inst->Dst[0].Register.File] + inst->Dst[0].Register.Index; tex.dst_sel_x = (inst->Dst[0].Register.WriteMask & 1) ? 0 : 7; diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 7ceedf6363b..29d9d154a24 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -683,8 +683,14 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c static void r600_set_vs_sampler_view(struct pipe_context *ctx, unsigned count, struct pipe_sampler_view **views) { - /* TODO */ - assert(1); + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_sampler_view **resource = (struct r600_pipe_sampler_view **)views; + + for (int i = 0; i < count; i++) { + if (resource[i]) { + r600_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS); + } + } } static void r600_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, @@ -726,7 +732,6 @@ static void r600_bind_vs_sampler(struct pipe_context *ctx, unsigned count, void struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state **rstates = (struct r600_pipe_state **)states; - /* TODO implement */ for (int i = 0; i < count; i++) { r600_context_pipe_state_set_vs_sampler(&rctx->ctx, rstates[i], i); } -- cgit v1.2.3 From ef2702fb2003944998ab1578119fb44fe16d1c82 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 11 Oct 2010 12:18:05 +1000 Subject: r600g: add TXL opcode support. fixes glsl1-2D Texture lookup with explicit lod (Vertex shader) --- src/gallium/drivers/r600/r600_shader.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index d22325e8b78..341800306d6 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -2926,7 +2926,7 @@ static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = { {TGSI_OPCODE_NRM, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_DIV, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_DP2, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4, tgsi_dp}, - {TGSI_OPCODE_TXL, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, + {TGSI_OPCODE_TXL, 0, SQ_TEX_INST_SAMPLE_L, tgsi_tex}, {TGSI_OPCODE_BRK, 0, V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK, tgsi_loop_brk_cont}, {TGSI_OPCODE_IF, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_if}, /* gap */ @@ -3084,7 +3084,7 @@ static struct r600_shader_tgsi_instruction eg_shader_tgsi_instruction[] = { {TGSI_OPCODE_NRM, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_DIV, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_DP2, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4, tgsi_dp}, - {TGSI_OPCODE_TXL, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, + {TGSI_OPCODE_TXL, 0, SQ_TEX_INST_SAMPLE_L, tgsi_tex}, {TGSI_OPCODE_BRK, 0, EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK, tgsi_loop_brk_cont}, {TGSI_OPCODE_IF, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_if}, /* gap */ -- cgit v1.2.3 From 3322416de44f27974edaba2aee8b2d2d21de6a8f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 11 Oct 2010 16:20:56 +1000 Subject: r600g: don't run with scissors. This could probably be done much nicer, I've spent a day chasing a coherency problem in the kernel, that turned out to be incorrect scissor setup. --- src/gallium/drivers/r600/evergreen_state.c | 45 ++++++++++++++++++++++++++++ src/gallium/drivers/r600/r600_state.c | 47 ++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 323509f6402..99085647a75 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -899,6 +899,51 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028254_PA_SC_VPORT_SCISSOR_0_BR, br, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028030_PA_SC_SCREEN_SCISSOR_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028034_PA_SC_SCREEN_SCISSOR_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028204_PA_SC_WINDOW_SCISSOR_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028208_PA_SC_WINDOW_SCISSOR_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028210_PA_SC_CLIPRECT_0_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028214_PA_SC_CLIPRECT_0_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028218_PA_SC_CLIPRECT_1_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_02821C_PA_SC_CLIPRECT_1_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028220_PA_SC_CLIPRECT_2_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028224_PA_SC_CLIPRECT_2_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028228_PA_SC_CLIPRECT_3_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_02822C_PA_SC_CLIPRECT_3_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028200_PA_SC_WINDOW_OFFSET, 0x00000000, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_02820C_PA_SC_CLIPRECT_RULE, 0x0000FFFF, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028230_PA_SC_EDGERULE, 0xAAAAAAAA, + 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028238_CB_TARGET_MASK, 0x00000000, target_mask, NULL); diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 29d9d154a24..a2a76cdeb75 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -1074,6 +1074,18 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, tl = S_028240_TL_X(0) | S_028240_TL_Y(0) | S_028240_WINDOW_OFFSET_DISABLE(1); br = S_028244_BR_X(state->width) | S_028244_BR_Y(state->height); + r600_pipe_state_add_reg(rstate, + R_028030_PA_SC_SCREEN_SCISSOR_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028034_PA_SC_SCREEN_SCISSOR_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028204_PA_SC_WINDOW_SCISSOR_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028208_PA_SC_WINDOW_SCISSOR_BR, br, + 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028240_PA_SC_GENERIC_SCISSOR_TL, tl, 0xFFFFFFFF, NULL); @@ -1086,6 +1098,41 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028254_PA_SC_VPORT_SCISSOR_0_BR, br, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028210_PA_SC_CLIPRECT_0_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028214_PA_SC_CLIPRECT_0_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028218_PA_SC_CLIPRECT_1_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_02821C_PA_SC_CLIPRECT_1_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028220_PA_SC_CLIPRECT_2_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028224_PA_SC_CLIPRECT_2_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028228_PA_SC_CLIPRECT_3_TL, tl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_02822C_PA_SC_CLIPRECT_3_BR, br, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_028200_PA_SC_WINDOW_OFFSET, 0x00000000, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_02820C_PA_SC_CLIPRECT_RULE, 0x0000FFFF, + 0xFFFFFFFF, NULL); + if (rctx->family >= CHIP_RV770) { + r600_pipe_state_add_reg(rstate, + R_028230_PA_SC_EDGERULE, 0xAAAAAAAA, + 0xFFFFFFFF, NULL); + } r600_pipe_state_add_reg(rstate, R_0287A0_CB_SHADER_CONTROL, shader_control, 0xFFFFFFFF, NULL); -- cgit v1.2.3 From b18fecbd0ea33c9db7e3fd676ed7b5877ebb1bd5 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 10 Oct 2010 23:36:14 +0100 Subject: llvmpipe: Remove outdated comment about stencil testing. --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index e768493103e..264fce8d6a6 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2009 VMware, Inc. + * Copyright 2009-2010 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -53,15 +53,8 @@ * ... ... ... ... ... ... ... ... ... * * - * Stencil test: - * Two-sided stencil test is supported but probably not as efficient as - * it could be. Currently, we use if/then/else constructs to do the - * operations for front vs. back-facing polygons. We could probably do - * both the front and back arithmetic then use a Select() instruction to - * choose the result depending on polyon orientation. We'd have to - * measure performance both ways and see which is better. - * * @author Jose Fonseca + * @author Brian Paul */ #include "pipe/p_state.h" -- cgit v1.2.3 From e1003336f0dcd9248c0127fbdc173522e35c5bdb Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 10 Oct 2010 23:55:24 +0100 Subject: gallivm: Eliminate unsigned integer arithmetic from texture coordinates. SSE support for 32bit and 16bit unsigned arithmetic is not complete, and can easily result in inefficient code. In most cases signed/unsigned doesn't make a difference, such as for integer texture coordinates. So remove uint_coord_type and uint_coord_bld to avoid inefficient operations to sneak in the future. --- src/gallium/auxiliary/gallivm/lp_bld_sample.h | 4 -- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 50 +++++++++++------------ src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 20 ++++----- 3 files changed, 32 insertions(+), 42 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index ce2285446ac..ffed27cee83 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -197,10 +197,6 @@ struct lp_build_sample_context struct lp_type coord_type; struct lp_build_context coord_bld; - /** Unsigned integer coordinates */ - struct lp_type uint_coord_type; - struct lp_build_context uint_coord_bld; - /** Signed integer coordinates */ struct lp_type int_coord_type; struct lp_build_context int_coord_bld; diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index be5d9a261ac..641d24b5b6d 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -81,11 +81,10 @@ lp_build_sample_wrap_nearest_int(struct lp_build_sample_context *bld, LLVMValueRef *out_offset, LLVMValueRef *out_i) { - struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld; struct lp_build_context *int_coord_bld = &bld->int_coord_bld; LLVMValueRef length_minus_one; - length_minus_one = lp_build_sub(uint_coord_bld, length, uint_coord_bld->one); + length_minus_one = lp_build_sub(int_coord_bld, length, int_coord_bld->one); switch(wrap_mode) { case PIPE_TEX_WRAP_REPEAT: @@ -93,7 +92,7 @@ lp_build_sample_wrap_nearest_int(struct lp_build_sample_context *bld, coord = LLVMBuildAnd(bld->builder, coord, length_minus_one, ""); else { /* Add a bias to the texcoord to handle negative coords */ - LLVMValueRef bias = lp_build_mul_imm(uint_coord_bld, length, 1024); + LLVMValueRef bias = lp_build_mul_imm(int_coord_bld, length, 1024); coord = LLVMBuildAdd(bld->builder, coord, bias, ""); coord = LLVMBuildURem(bld->builder, coord, length, ""); } @@ -114,7 +113,7 @@ lp_build_sample_wrap_nearest_int(struct lp_build_sample_context *bld, assert(0); } - lp_build_sample_partial_offset(uint_coord_bld, block_length, coord, stride, + lp_build_sample_partial_offset(int_coord_bld, block_length, coord, stride, out_offset, out_i); } @@ -147,7 +146,6 @@ lp_build_sample_wrap_linear_int(struct lp_build_sample_context *bld, LLVMValueRef *i0, LLVMValueRef *i1) { - struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld; struct lp_build_context *int_coord_bld = &bld->int_coord_bld; LLVMValueRef length_minus_one; LLVMValueRef lmask, umask, mask; @@ -189,8 +187,8 @@ lp_build_sample_wrap_linear_int(struct lp_build_sample_context *bld, * multiplication. */ - *i0 = uint_coord_bld->zero; - *i1 = uint_coord_bld->zero; + *i0 = int_coord_bld->zero; + *i1 = int_coord_bld->zero; length_minus_one = lp_build_sub(int_coord_bld, length, int_coord_bld->one); @@ -201,7 +199,7 @@ lp_build_sample_wrap_linear_int(struct lp_build_sample_context *bld, } else { /* Add a bias to the texcoord to handle negative coords */ - LLVMValueRef bias = lp_build_mul_imm(uint_coord_bld, length, 1024); + LLVMValueRef bias = lp_build_mul_imm(int_coord_bld, length, 1024); coord0 = LLVMBuildAdd(bld->builder, coord0, bias, ""); coord0 = LLVMBuildURem(bld->builder, coord0, length, ""); } @@ -209,9 +207,9 @@ lp_build_sample_wrap_linear_int(struct lp_build_sample_context *bld, mask = lp_build_compare(bld->builder, int_coord_bld->type, PIPE_FUNC_NOTEQUAL, coord0, length_minus_one); - *offset0 = lp_build_mul(uint_coord_bld, coord0, stride); + *offset0 = lp_build_mul(int_coord_bld, coord0, stride); *offset1 = LLVMBuildAnd(bld->builder, - lp_build_add(uint_coord_bld, *offset0, stride), + lp_build_add(int_coord_bld, *offset0, stride), mask, ""); break; @@ -226,8 +224,8 @@ lp_build_sample_wrap_linear_int(struct lp_build_sample_context *bld, mask = LLVMBuildAnd(bld->builder, lmask, umask, ""); - *offset0 = lp_build_mul(uint_coord_bld, coord0, stride); - *offset1 = lp_build_add(uint_coord_bld, + *offset0 = lp_build_mul(int_coord_bld, coord0, stride); + *offset1 = lp_build_add(int_coord_bld, *offset0, LLVMBuildAnd(bld->builder, stride, mask, "")); break; @@ -240,8 +238,8 @@ lp_build_sample_wrap_linear_int(struct lp_build_sample_context *bld, case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER: default: assert(0); - *offset0 = uint_coord_bld->zero; - *offset1 = uint_coord_bld->zero; + *offset0 = int_coord_bld->zero; + *offset1 = int_coord_bld->zero; break; } } @@ -327,7 +325,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, r_ipart = LLVMBuildAShr(builder, r, i32_c8, ""); /* get pixel, row, image strides */ - x_stride = lp_build_const_vec(bld->uint_coord_bld.type, + x_stride = lp_build_const_vec(bld->int_coord_bld.type, bld->format_desc->block.bits/8); /* Do texcoord wrapping, compute texel offset */ @@ -346,7 +344,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, bld->static_state->pot_height, bld->static_state->wrap_t, &y_offset, &y_subcoord); - offset = lp_build_add(&bld->uint_coord_bld, offset, y_offset); + offset = lp_build_add(&bld->int_coord_bld, offset, y_offset); if (dims >= 3) { LLVMValueRef z_offset; lp_build_sample_wrap_nearest_int(bld, @@ -355,13 +353,13 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, bld->static_state->pot_height, bld->static_state->wrap_r, &z_offset, &z_subcoord); - offset = lp_build_add(&bld->uint_coord_bld, offset, z_offset); + offset = lp_build_add(&bld->int_coord_bld, offset, z_offset); } else if (bld->static_state->target == PIPE_TEXTURE_CUBE) { LLVMValueRef z_offset; /* The r coord is the cube face in [0,5] */ - z_offset = lp_build_mul(&bld->uint_coord_bld, r, img_stride_vec); - offset = lp_build_add(&bld->uint_coord_bld, offset, z_offset); + z_offset = lp_build_mul(&bld->int_coord_bld, r, img_stride_vec); + offset = lp_build_add(&bld->int_coord_bld, offset, z_offset); } } @@ -522,7 +520,7 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, r_fpart = LLVMBuildAnd(builder, r, i32_c255, ""); /* get pixel, row and image strides */ - x_stride = lp_build_const_vec(bld->uint_coord_bld.type, + x_stride = lp_build_const_vec(bld->int_coord_bld.type, bld->format_desc->block.bits/8); y_stride = row_stride_vec; z_stride = img_stride_vec; @@ -553,9 +551,9 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, for (z = 0; z < 2; z++) { for (x = 0; x < 2; x++) { - offset[z][0][x] = lp_build_add(&bld->uint_coord_bld, + offset[z][0][x] = lp_build_add(&bld->int_coord_bld, offset[z][0][x], y_offset0); - offset[z][1][x] = lp_build_add(&bld->uint_coord_bld, + offset[z][1][x] = lp_build_add(&bld->int_coord_bld, offset[z][1][x], y_offset1); } } @@ -571,20 +569,20 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, &z_subcoord[0], &z_subcoord[1]); for (y = 0; y < 2; y++) { for (x = 0; x < 2; x++) { - offset[0][y][x] = lp_build_add(&bld->uint_coord_bld, + offset[0][y][x] = lp_build_add(&bld->int_coord_bld, offset[0][y][x], z_offset0); - offset[1][y][x] = lp_build_add(&bld->uint_coord_bld, + offset[1][y][x] = lp_build_add(&bld->int_coord_bld, offset[1][y][x], z_offset1); } } } else if (bld->static_state->target == PIPE_TEXTURE_CUBE) { LLVMValueRef z_offset; - z_offset = lp_build_mul(&bld->uint_coord_bld, r, img_stride_vec); + z_offset = lp_build_mul(&bld->int_coord_bld, r, img_stride_vec); for (y = 0; y < 2; y++) { for (x = 0; x < 2; x++) { /* The r coord is the cube face in [0,5] */ - offset[0][y][x] = lp_build_add(&bld->uint_coord_bld, + offset[0][y][x] = lp_build_add(&bld->int_coord_bld, offset[0][y][x], z_offset); } } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 75130e1c54f..af3f4688ede 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -131,7 +131,7 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld, } /* convert x,y,z coords to linear offset from start of texture, in bytes */ - lp_build_sample_offset(&bld->uint_coord_bld, + lp_build_sample_offset(&bld->int_coord_bld, bld->format_desc, x, y, z, y_stride, z_stride, &offset, &i, &j); @@ -145,7 +145,7 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld, * coords which are out of bounds to become zero. Zero's guaranteed * to be inside the texture image. */ - offset = lp_build_andnot(&bld->uint_coord_bld, offset, use_border); + offset = lp_build_andnot(&bld->int_coord_bld, offset, use_border); } lp_build_fetch_rgba_soa(bld->builder, @@ -239,9 +239,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, { struct lp_build_context *coord_bld = &bld->coord_bld; struct lp_build_context *int_coord_bld = &bld->int_coord_bld; - struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld; LLVMValueRef half = lp_build_const_vec(coord_bld->type, 0.5); - LLVMValueRef length_minus_one = lp_build_sub(uint_coord_bld, length, uint_coord_bld->one); + LLVMValueRef length_minus_one = lp_build_sub(int_coord_bld, length, int_coord_bld->one); LLVMValueRef coord0, coord1, weight; switch(wrap_mode) { @@ -253,20 +252,20 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight); /* repeat wrap */ if (is_pot) { - coord1 = lp_build_add(uint_coord_bld, coord0, uint_coord_bld->one); + coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); coord0 = LLVMBuildAnd(bld->builder, coord0, length_minus_one, ""); coord1 = LLVMBuildAnd(bld->builder, coord1, length_minus_one, ""); } else { /* Add a bias to the texcoord to handle negative coords */ - LLVMValueRef bias = lp_build_mul_imm(uint_coord_bld, length, 1024); + LLVMValueRef bias = lp_build_mul_imm(int_coord_bld, length, 1024); LLVMValueRef mask; coord0 = LLVMBuildAdd(bld->builder, coord0, bias, ""); coord0 = LLVMBuildURem(bld->builder, coord0, length, ""); mask = lp_build_compare(bld->builder, int_coord_bld->type, PIPE_FUNC_NOTEQUAL, coord0, length_minus_one); coord1 = LLVMBuildAnd(bld->builder, - lp_build_add(uint_coord_bld, coord0, uint_coord_bld->one), + lp_build_add(int_coord_bld, coord0, int_coord_bld->one), mask, ""); } break; @@ -448,8 +447,7 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, { struct lp_build_context *coord_bld = &bld->coord_bld; struct lp_build_context *int_coord_bld = &bld->int_coord_bld; - struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld; - LLVMValueRef length_minus_one = lp_build_sub(uint_coord_bld, length, uint_coord_bld->one); + LLVMValueRef length_minus_one = lp_build_sub(int_coord_bld, length, int_coord_bld->one); LLVMValueRef icoord; switch(wrap_mode) { @@ -460,7 +458,7 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld, icoord = LLVMBuildAnd(bld->builder, icoord, length_minus_one, ""); else { /* Add a bias to the texcoord to handle negative coords */ - LLVMValueRef bias = lp_build_mul_imm(uint_coord_bld, length, 1024); + LLVMValueRef bias = lp_build_mul_imm(int_coord_bld, length, 1024); icoord = LLVMBuildAdd(bld->builder, icoord, bias, ""); icoord = LLVMBuildURem(bld->builder, icoord, length, ""); } @@ -1199,7 +1197,6 @@ lp_build_sample_soa(LLVMBuilderRef builder, bld.float_type = lp_type_float(32); bld.int_type = lp_type_int(32); bld.coord_type = type; - bld.uint_coord_type = lp_uint_type(type); bld.int_coord_type = lp_int_type(type); bld.float_size_type = lp_type_float(32); bld.float_size_type.length = dims > 1 ? 4 : 1; @@ -1212,7 +1209,6 @@ lp_build_sample_soa(LLVMBuilderRef builder, lp_build_context_init(&bld.float_vec_bld, builder, float_vec_type); lp_build_context_init(&bld.int_bld, builder, bld.int_type); lp_build_context_init(&bld.coord_bld, builder, bld.coord_type); - lp_build_context_init(&bld.uint_coord_bld, builder, bld.uint_coord_type); lp_build_context_init(&bld.int_coord_bld, builder, bld.int_coord_type); lp_build_context_init(&bld.int_size_bld, builder, bld.int_size_type); lp_build_context_init(&bld.float_size_bld, builder, bld.float_size_type); -- cgit v1.2.3 From 6c1aa4fd49dab7af21902726d274e0a5a7fea8df Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 22 Aug 2010 17:27:56 +0100 Subject: gallium: Define C99 restrict keyword where absent. --- src/gallium/include/pipe/p_compiler.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/include/pipe/p_compiler.h b/src/gallium/include/pipe/p_compiler.h index 50205995911..3d6b5b5c81d 100644 --- a/src/gallium/include/pipe/p_compiler.h +++ b/src/gallium/include/pipe/p_compiler.h @@ -122,6 +122,27 @@ typedef unsigned char boolean; # endif #endif +/* + * Define the C99 restrict keyword. + * + * See also: + * - http://cellperformance.beyond3d.com/articles/2006/05/demystifying-the-restrict-keyword.html + */ +#ifndef restrict +# if (__STDC_VERSION__ >= 199901L) + /* C99 */ +# elif defined(__SUNPRO_C) && defined(__C99FEATURES__) + /* C99 */ +# elif defined(__GNUC__) +# define restrict __restrict__ +# elif defined(_MSC_VER) +# define restrict __restrict +# else +# define restrict /* */ +# endif +#endif + + /* Function visibility */ #ifndef PUBLIC # if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) -- cgit v1.2.3 From 11dad217186a4c177cb41aa526531d6cd46ae5b0 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Thu, 2 Sep 2010 15:52:44 +0100 Subject: tgsi: Export some names for some tgsi enums. Useful to give human legible names in other cases. --- src/gallium/auxiliary/tgsi/tgsi_dump.c | 49 ++++++++++++++++++---------------- src/gallium/auxiliary/tgsi/tgsi_dump.h | 9 +++++++ 2 files changed, 35 insertions(+), 23 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c b/src/gallium/auxiliary/tgsi/tgsi_dump.c index f71ffb70308..9b61797ace9 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_dump.c +++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c @@ -90,7 +90,8 @@ static const char *processor_type_names[] = "GEOM" }; -static const char *file_names[TGSI_FILE_COUNT] = +const char * +tgsi_file_names[TGSI_FILE_COUNT] = { "NULL", "CONST", @@ -135,7 +136,8 @@ static const char *immediate_type_names[] = "INT32" }; -static const char *swizzle_names[] = +const char * +tgsi_swizzle_names[] = { "x", "y", @@ -143,7 +145,8 @@ static const char *swizzle_names[] = "w" }; -static const char *texture_names[] = +const char * +tgsi_texture_names[] = { "UNKNOWN", "1D", @@ -201,15 +204,15 @@ _dump_register_src( struct dump_ctx *ctx, const struct tgsi_full_src_register *src ) { - ENM(src->Register.File, file_names); + ENM(src->Register.File, tgsi_file_names); if (src->Register.Dimension) { if (src->Dimension.Indirect) { CHR( '[' ); - ENM( src->DimIndirect.File, file_names ); + ENM( src->DimIndirect.File, tgsi_file_names ); CHR( '[' ); SID( src->DimIndirect.Index ); TXT( "]." ); - ENM( src->DimIndirect.SwizzleX, swizzle_names ); + ENM( src->DimIndirect.SwizzleX, tgsi_swizzle_names ); if (src->Dimension.Index != 0) { if (src->Dimension.Index > 0) CHR( '+' ); @@ -224,11 +227,11 @@ _dump_register_src( } if (src->Register.Indirect) { CHR( '[' ); - ENM( src->Indirect.File, file_names ); + ENM( src->Indirect.File, tgsi_file_names ); CHR( '[' ); SID( src->Indirect.Index ); TXT( "]." ); - ENM( src->Indirect.SwizzleX, swizzle_names ); + ENM( src->Indirect.SwizzleX, tgsi_swizzle_names ); if (src->Register.Index != 0) { if (src->Register.Index > 0) CHR( '+' ); @@ -248,15 +251,15 @@ _dump_register_dst( struct dump_ctx *ctx, const struct tgsi_full_dst_register *dst ) { - ENM(dst->Register.File, file_names); + ENM(dst->Register.File, tgsi_file_names); if (dst->Register.Dimension) { if (dst->Dimension.Indirect) { CHR( '[' ); - ENM( dst->DimIndirect.File, file_names ); + ENM( dst->DimIndirect.File, tgsi_file_names ); CHR( '[' ); SID( dst->DimIndirect.Index ); TXT( "]." ); - ENM( dst->DimIndirect.SwizzleX, swizzle_names ); + ENM( dst->DimIndirect.SwizzleX, tgsi_swizzle_names ); if (dst->Dimension.Index != 0) { if (dst->Dimension.Index > 0) CHR( '+' ); @@ -271,11 +274,11 @@ _dump_register_dst( } if (dst->Register.Indirect) { CHR( '[' ); - ENM( dst->Indirect.File, file_names ); + ENM( dst->Indirect.File, tgsi_file_names ); CHR( '[' ); SID( dst->Indirect.Index ); TXT( "]." ); - ENM( dst->Indirect.SwizzleX, swizzle_names ); + ENM( dst->Indirect.SwizzleX, tgsi_swizzle_names ); if (dst->Register.Index != 0) { if (dst->Register.Index > 0) CHR( '+' ); @@ -351,7 +354,7 @@ iter_declaration( TXT( "DCL " ); - ENM(decl->Declaration.File, file_names); + ENM(decl->Declaration.File, tgsi_file_names); /* all geometry shader inputs are two dimensional */ if (decl->Declaration.File == TGSI_FILE_INPUT && @@ -585,10 +588,10 @@ iter_instruction( inst->Predicate.SwizzleZ != TGSI_SWIZZLE_Z || inst->Predicate.SwizzleW != TGSI_SWIZZLE_W) { CHR( '.' ); - ENM( inst->Predicate.SwizzleX, swizzle_names ); - ENM( inst->Predicate.SwizzleY, swizzle_names ); - ENM( inst->Predicate.SwizzleZ, swizzle_names ); - ENM( inst->Predicate.SwizzleW, swizzle_names ); + ENM( inst->Predicate.SwizzleX, tgsi_swizzle_names ); + ENM( inst->Predicate.SwizzleY, tgsi_swizzle_names ); + ENM( inst->Predicate.SwizzleZ, tgsi_swizzle_names ); + ENM( inst->Predicate.SwizzleW, tgsi_swizzle_names ); } TXT( ") " ); @@ -641,10 +644,10 @@ iter_instruction( src->Register.SwizzleZ != TGSI_SWIZZLE_Z || src->Register.SwizzleW != TGSI_SWIZZLE_W) { CHR( '.' ); - ENM( src->Register.SwizzleX, swizzle_names ); - ENM( src->Register.SwizzleY, swizzle_names ); - ENM( src->Register.SwizzleZ, swizzle_names ); - ENM( src->Register.SwizzleW, swizzle_names ); + ENM( src->Register.SwizzleX, tgsi_swizzle_names ); + ENM( src->Register.SwizzleY, tgsi_swizzle_names ); + ENM( src->Register.SwizzleZ, tgsi_swizzle_names ); + ENM( src->Register.SwizzleW, tgsi_swizzle_names ); } if (src->Register.Absolute) @@ -655,7 +658,7 @@ iter_instruction( if (inst->Instruction.Texture) { TXT( ", " ); - ENM( inst->Texture.Texture, texture_names ); + ENM( inst->Texture.Texture, tgsi_texture_names ); } switch (inst->Instruction.Opcode) { diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.h b/src/gallium/auxiliary/tgsi/tgsi_dump.h index dd78b361007..fc0429ad8d9 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_dump.h +++ b/src/gallium/auxiliary/tgsi/tgsi_dump.h @@ -35,6 +35,15 @@ extern "C" { #endif +extern const char * +tgsi_file_names[TGSI_FILE_COUNT]; + +extern const char * +tgsi_swizzle_names[]; + +extern const char * +tgsi_texture_names[]; + void tgsi_dump_str( const struct tgsi_token *tokens, -- cgit v1.2.3 From 7c1b5772a81c4f701ae9a6208c9e34792c05d4ab Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Thu, 2 Sep 2010 15:54:07 +0100 Subject: gallivm: More detailed analysis of tgsi shaders. To allow more optimizations, in particular for direct textures. --- src/gallium/auxiliary/Makefile | 1 + src/gallium/auxiliary/SConscript | 1 + src/gallium/auxiliary/gallivm/lp_bld_tgsi.h | 77 ++++ src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c | 480 +++++++++++++++++++++++ 4 files changed, 559 insertions(+) create mode 100644 src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile index 02af4d9280a..abd33f6eef1 100644 --- a/src/gallium/auxiliary/Makefile +++ b/src/gallium/auxiliary/Makefile @@ -176,6 +176,7 @@ GALLIVM_SOURCES = \ gallivm/lp_bld_struct.c \ gallivm/lp_bld_swizzle.c \ gallivm/lp_bld_tgsi_aos.c \ + gallivm/lp_bld_tgsi_info.c \ gallivm/lp_bld_tgsi_soa.c \ gallivm/lp_bld_type.c \ draw/draw_llvm.c \ diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript index 48547c4b2c6..94cd74424a0 100644 --- a/src/gallium/auxiliary/SConscript +++ b/src/gallium/auxiliary/SConscript @@ -227,6 +227,7 @@ if env['llvm']: 'gallivm/lp_bld_struct.c', 'gallivm/lp_bld_swizzle.c', 'gallivm/lp_bld_tgsi_aos.c', + 'gallivm/lp_bld_tgsi_info.c', 'gallivm/lp_bld_tgsi_soa.c', 'gallivm/lp_bld_type.c', 'draw/draw_llvm.c', diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h index 97318b3456c..0173bc4a7fc 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h @@ -36,6 +36,9 @@ #define LP_BLD_TGSI_H #include "gallivm/lp_bld.h" +#include "pipe/p_compiler.h" +#include "pipe/p_state.h" +#include "tgsi/tgsi_scan.h" struct tgsi_token; @@ -54,6 +57,75 @@ enum lp_build_tex_modifier { }; +/** + * Describe a channel of a register. + * + * The value can be a: + * - immediate value (i.e. derived from a IMM register) + * - CONST[n].x/y/z/w + * - IN[n].x/y/z/w + * - undetermined (when .file == TGSI_FILE_NULL) + * + * This is one of the analysis results, and is used to described + * the output color in terms of inputs. + */ +struct lp_tgsi_channel_info +{ + unsigned file:4; /* TGSI_FILE_* */ + unsigned swizzle:3; /* PIPE_SWIZZLE_x */ + union { + uint32_t index; + float value; /* for TGSI_FILE_IMMEDIATE */ + }; +}; + + +/** + * Describe a texture sampler interpolator. + * + * The interpolation is described in terms of regular inputs. + */ +struct lp_tgsi_texture_info +{ + struct lp_tgsi_channel_info coord[4]; + unsigned target:8; /* TGSI_TEXTURE_* */ + unsigned unit:8; /* Sampler unit */ + unsigned modifier:8; /* LP_BLD_TEX_MODIFIER_* */ +}; + + +struct lp_tgsi_info +{ + struct tgsi_shader_info base; + + /* + * Whether any of the texture opcodes access a register file other than + * TGSI_FILE_INPUT. + * + * We could also handle TGSI_FILE_CONST/IMMEDIATE here, but there is little + * benefit. + */ + unsigned indirect_textures:1; + + /* + * Texture opcode description. Aimed at detecting and described direct + * texture opcodes. + */ + unsigned num_texs; + struct lp_tgsi_texture_info tex[PIPE_MAX_SAMPLERS]; + + /* + * Output description. Aimed at detecting and describing simple blit + * shaders. + */ + struct lp_tgsi_channel_info output[PIPE_MAX_SHADER_OUTPUTS][4]; + + /* + * Shortcut pointers into the above (for fragment shaders). + */ + const struct lp_tgsi_channel_info *cbuf[PIPE_MAX_COLOR_BUFS]; +}; + /** * Sampler code generation interface. * @@ -96,6 +168,11 @@ struct lp_build_sampler_aos }; +void +lp_build_tgsi_info(const struct tgsi_token *tokens, + struct lp_tgsi_info *info); + + void lp_build_tgsi_soa(LLVMBuilderRef builder, const struct tgsi_token *tokens, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c new file mode 100644 index 00000000000..eab72b8eb7d --- /dev/null +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c @@ -0,0 +1,480 @@ +/************************************************************************** + * + * Copyright 2010 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + **************************************************************************/ + + +#include "util/u_memory.h" +#include "util/u_math.h" +#include "tgsi/tgsi_parse.h" +#include "tgsi/tgsi_text.h" +#include "tgsi/tgsi_util.h" +#include "tgsi/tgsi_dump.h" +#include "lp_bld_debug.h" +#include "lp_bld_tgsi.h" + + +/** + * Analysis context. + * + * This is where we keep store the value of each channel of the IMM/TEMP/OUT + * register values, as we walk the shader. + */ +struct analysis_context +{ + struct lp_tgsi_info *info; + + unsigned num_imms; + float imm[32][4]; + + struct lp_tgsi_channel_info temp[32][4]; +}; + + +/** + * Describe the specified channel of the src register. + */ +static void +analyse_src(struct analysis_context *ctx, + struct lp_tgsi_channel_info *chan_info, + const struct tgsi_src_register *src, + unsigned chan) +{ + chan_info->file = TGSI_FILE_NULL; + if (!src->Indirect && !src->Absolute && !src->Negate) { + unsigned swizzle = tgsi_util_get_src_register_swizzle(src, chan); + if (src->File == TGSI_FILE_TEMPORARY) { + if (src->Index < Elements(ctx->temp)) { + *chan_info = ctx->temp[src->Index][swizzle]; + } + } else { + chan_info->file = src->File; + if (src->File == TGSI_FILE_IMMEDIATE) { + assert(src->Index < Elements(ctx->imm)); + if (src->Index < Elements(ctx->imm)) { + chan_info->value = ctx->imm[src->Index][swizzle]; + } + } else { + chan_info->index = src->Index; + chan_info->swizzle = swizzle; + } + } + } +} + + +/** + * Whether this register channel refers to a specific immediate value. + */ +static boolean +is_immediate(const struct lp_tgsi_channel_info *chan_info, float value) +{ + return chan_info->file == TGSI_FILE_IMMEDIATE && + chan_info->value == value; +} + + +static void +analyse_tex(struct analysis_context *ctx, + const struct tgsi_full_instruction *inst, + enum lp_build_tex_modifier modifier) +{ + struct lp_tgsi_info *info = ctx->info; + unsigned chan; + + if (info->num_texs < Elements(info->tex)) { + struct lp_tgsi_texture_info *tex_info = &info->tex[info->num_texs]; + bool indirect = FALSE; + unsigned readmask = 0; + + tex_info->target = inst->Texture.Texture; + switch (inst->Texture.Texture) { + case TGSI_TEXTURE_1D: + readmask = TGSI_WRITEMASK_X; + break; + case TGSI_TEXTURE_2D: + case TGSI_TEXTURE_RECT: + readmask = TGSI_WRITEMASK_XY; + break; + case TGSI_TEXTURE_SHADOW1D: + case TGSI_TEXTURE_SHADOW2D: + case TGSI_TEXTURE_SHADOWRECT: + case TGSI_TEXTURE_3D: + case TGSI_TEXTURE_CUBE: + readmask = TGSI_WRITEMASK_XYZ; + break; + default: + assert(0); + return; + } + + if (modifier == LP_BLD_TEX_MODIFIER_EXPLICIT_DERIV) { + /* We don't track explicit derivatives, although we could */ + indirect = TRUE; + tex_info->unit = inst->Src[3].Register.Index; + } else { + if (modifier == LP_BLD_TEX_MODIFIER_PROJECTED || + modifier == LP_BLD_TEX_MODIFIER_LOD_BIAS || + modifier == LP_BLD_TEX_MODIFIER_EXPLICIT_LOD) { + readmask |= TGSI_WRITEMASK_W; + } + tex_info->unit = inst->Src[1].Register.Index; + } + + for (chan = 0; chan < 4; ++chan) { + struct lp_tgsi_channel_info *chan_info = &tex_info->coord[chan]; + if (readmask & (1 << chan)) { + analyse_src(ctx, chan_info, &inst->Src[0].Register, chan); + if (chan_info->file != TGSI_FILE_INPUT) { + indirect = TRUE; + } + } else { + memset(chan_info, 0, sizeof *chan_info); + } + } + + if (indirect) { + info->indirect_textures = TRUE; + } + + ++info->num_texs; + } else { + info->indirect_textures = TRUE; + } +} + + +/** + * Process an instruction, and update the register values accordingly. + */ +static void +analyse_instruction(struct analysis_context *ctx, + struct tgsi_full_instruction *inst) +{ + struct lp_tgsi_info *info = ctx->info; + struct lp_tgsi_channel_info (*regs)[4]; + unsigned max_regs; + unsigned i; + unsigned index; + unsigned chan; + + for (i = 0; i < inst->Instruction.NumDstRegs; ++i) { + const struct tgsi_dst_register *dst = &inst->Dst[i].Register; + + /* + * Get the lp_tgsi_channel_info array corresponding to the destination + * register file. + */ + + if (dst->File == TGSI_FILE_TEMPORARY) { + regs = ctx->temp; + max_regs = Elements(ctx->temp); + } else if (dst->File == TGSI_FILE_OUTPUT) { + regs = info->output; + max_regs = Elements(info->output); + } else if (dst->File == TGSI_FILE_ADDRESS || + dst->File == TGSI_FILE_PREDICATE) { + continue; + } else { + assert(0); + continue; + } + + /* + * Detect direct TEX instructions + */ + + switch (inst->Instruction.Opcode) { + case TGSI_OPCODE_TEX: + analyse_tex(ctx, inst, LP_BLD_TEX_MODIFIER_NONE); + break; + case TGSI_OPCODE_TXD: + analyse_tex(ctx, inst, LP_BLD_TEX_MODIFIER_EXPLICIT_DERIV); + break; + case TGSI_OPCODE_TXB: + analyse_tex(ctx, inst, LP_BLD_TEX_MODIFIER_LOD_BIAS); + break; + case TGSI_OPCODE_TXL: + analyse_tex(ctx, inst, LP_BLD_TEX_MODIFIER_EXPLICIT_LOD); + break; + case TGSI_OPCODE_TXP: + analyse_tex(ctx, inst, LP_BLD_TEX_MODIFIER_PROJECTED); + break; + default: + break; + } + + /* + * Keep track of assignments and writes + */ + + if (dst->Indirect) { + /* + * It could be any register index so clear all register indices. + */ + + for (chan = 0; chan < 4; ++chan) { + if (dst->WriteMask & (1 << chan)) { + for (index = 0; index < max_regs; ++index) { + regs[index][chan].file = TGSI_FILE_NULL; + } + } + } + } else if (dst->Index < max_regs) { + /* + * Update this destination register value. + */ + + struct lp_tgsi_channel_info res[4]; + + memset(res, 0, sizeof res); + + if (!inst->Instruction.Predicate && + !inst->Instruction.Saturate) { + for (chan = 0; chan < 4; ++chan) { + if (dst->WriteMask & (1 << chan)) { + if (inst->Instruction.Opcode == TGSI_OPCODE_MOV) { + analyse_src(ctx, &res[chan], + &inst->Src[0].Register, chan); + } else if (inst->Instruction.Opcode == TGSI_OPCODE_MUL) { + /* + * Propagate values across 1.0 and 0.0 multiplications. + */ + + struct lp_tgsi_channel_info src0; + struct lp_tgsi_channel_info src1; + + analyse_src(ctx, &src0, &inst->Src[0].Register, chan); + analyse_src(ctx, &src1, &inst->Src[1].Register, chan); + + if (is_immediate(&src0, 0.0f)) { + res[chan] = src0; + } else if (is_immediate(&src1, 0.0f)) { + res[chan] = src1; + } else if (is_immediate(&src0, 1.0f)) { + res[chan] = src1; + } else if (is_immediate(&src1, 1.0f)) { + res[chan] = src0; + } + } + } + } + } + + for (chan = 0; chan < 4; ++chan) { + if (dst->WriteMask & (1 << chan)) { + regs[dst->Index][chan] = res[chan]; + } + } + } + } + + /* + * Clear all temporaries information in presence of a control flow opcode. + */ + + switch (inst->Instruction.Opcode) { + case TGSI_OPCODE_IF: + case TGSI_OPCODE_IFC: + case TGSI_OPCODE_ELSE: + case TGSI_OPCODE_ENDIF: + case TGSI_OPCODE_BGNLOOP: + case TGSI_OPCODE_BRK: + case TGSI_OPCODE_BREAKC: + case TGSI_OPCODE_CONT: + case TGSI_OPCODE_ENDLOOP: + case TGSI_OPCODE_CALLNZ: + case TGSI_OPCODE_CAL: + case TGSI_OPCODE_BGNSUB: + case TGSI_OPCODE_ENDSUB: + case TGSI_OPCODE_SWITCH: + case TGSI_OPCODE_CASE: + case TGSI_OPCODE_DEFAULT: + case TGSI_OPCODE_ENDSWITCH: + case TGSI_OPCODE_RET: + case TGSI_OPCODE_END: + /* XXX: Are there more cases? */ + memset(&ctx->temp, 0, sizeof ctx->temp); + memset(&info->output, 0, sizeof info->output); + default: + break; + } +} + + +static INLINE void +dump_info(const struct tgsi_token *tokens, + struct lp_tgsi_info *info) +{ + unsigned index; + unsigned chan; + + tgsi_dump(tokens, 0); + + for (index = 0; index < info->num_texs; ++index) { + const struct lp_tgsi_texture_info *tex_info = &info->tex[index]; + debug_printf("TEX[%u] =", index); + for (chan = 0; chan < 4; ++chan) { + const struct lp_tgsi_channel_info *chan_info = + &tex_info->coord[chan]; + if (chan_info->file != TGSI_FILE_NULL) { + debug_printf(" %s[%u].%c", + tgsi_file_names[chan_info->file], + chan_info->index, + "xyzw01"[chan_info->swizzle]); + } else { + debug_printf(" _"); + } + } + debug_printf(", SAMP[%u], %s\n", + tex_info->unit, + tgsi_texture_names[tex_info->target]); + } + + for (index = 0; index < PIPE_MAX_SHADER_OUTPUTS; ++index) { + for (chan = 0; chan < 4; ++chan) { + const struct lp_tgsi_channel_info *chan_info = + &info->output[index][chan]; + if (chan_info->file != TGSI_FILE_NULL) { + debug_printf("OUT[%u].%c = ", index, "xyzw"[chan]); + if (chan_info->file == TGSI_FILE_IMMEDIATE) { + debug_printf("%f", chan_info->value); + } else { + const char *file_name; + switch (chan_info->file) { + case TGSI_FILE_CONSTANT: + file_name = "CONST"; + break; + case TGSI_FILE_INPUT: + file_name = "IN"; + break; + default: + file_name = "???"; + break; + } + debug_printf("%s[%u].%c", + file_name, + chan_info->index, + "xyzw01"[chan_info->swizzle]); + } + debug_printf("\n"); + } + } + } +} + + +/** + * Detect any direct relationship between the output color + */ +void +lp_build_tgsi_info(const struct tgsi_token *tokens, + struct lp_tgsi_info *info) +{ + struct tgsi_parse_context parse; + struct analysis_context ctx; + unsigned index; + unsigned chan; + + memset(info, 0, sizeof *info); + + tgsi_scan_shader(tokens, &info->base); + + memset(&ctx, 0, sizeof ctx); + ctx.info = info; + + tgsi_parse_init(&parse, tokens); + + while (!tgsi_parse_end_of_tokens(&parse)) { + tgsi_parse_token(&parse); + + switch (parse.FullToken.Token.Type) { + case TGSI_TOKEN_TYPE_DECLARATION: + break; + + case TGSI_TOKEN_TYPE_INSTRUCTION: + { + struct tgsi_full_instruction *inst = + &parse.FullToken.FullInstruction; + + if (inst->Instruction.Opcode == TGSI_OPCODE_END || + inst->Instruction.Opcode == TGSI_OPCODE_BGNSUB) { + /* We reached the end of main function body. */ + goto finished; + } + + analyse_instruction(&ctx, inst); + } + break; + + case TGSI_TOKEN_TYPE_IMMEDIATE: + { + const unsigned size = + parse.FullToken.FullImmediate.Immediate.NrTokens - 1; + assert(size <= 4); + if (ctx.num_imms < Elements(ctx.imm)) { + for (chan = 0; chan < size; ++chan) { + ctx.imm[ctx.num_imms][chan] = + parse.FullToken.FullImmediate.u[chan].Float; + } + ++ctx.num_imms; + } + } + break; + + case TGSI_TOKEN_TYPE_PROPERTY: + break; + + default: + assert(0); + } + } +finished: + + tgsi_parse_free(&parse); + + + /* + * Link the output color values. + */ + + for (index = 0; index < PIPE_MAX_COLOR_BUFS; ++index) { + const struct lp_tgsi_channel_info null_output[4]; + info->cbuf[index] = null_output; + } + + for (index = 0; index < info->base.num_outputs; ++index) { + unsigned semantic_name = info->base.output_semantic_name[index]; + unsigned semantic_index = info->base.output_semantic_index[index]; + if (semantic_name == TGSI_SEMANTIC_COLOR && + semantic_index < PIPE_MAX_COLOR_BUFS) { + info->cbuf[semantic_index] = info->output[index]; + } + } + + if (gallivm_debug & GALLIVM_DEBUG_TGSI) { + dump_info(tokens, info); + } +} -- cgit v1.2.3 From 986cb9d5cf60bc11c7facc19017b5432b17240f7 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Thu, 2 Sep 2010 16:30:23 +0100 Subject: llvmpipe: Use lp_tgsi_info. --- src/gallium/drivers/llvmpipe/lp_setup_point.c | 4 +-- src/gallium/drivers/llvmpipe/lp_state_derived.c | 16 +++++------ src/gallium/drivers/llvmpipe/lp_state_fs.c | 38 ++++++++++++------------- src/gallium/drivers/llvmpipe/lp_state_fs.h | 3 +- 4 files changed, 31 insertions(+), 30 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 31d85f43c2f..64b24a88d54 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -239,8 +239,8 @@ setup_point_coefficients( struct lp_setup_context *setup, /* check if the sprite coord flag is set for this attribute. * If so, set it up so it up so x and y vary from 0 to 1. */ - if (shader->info.input_semantic_name[slot] == TGSI_SEMANTIC_GENERIC) { - unsigned semantic_index = shader->info.input_semantic_index[slot]; + if (shader->info.base.input_semantic_name[slot] == TGSI_SEMANTIC_GENERIC) { + unsigned semantic_index = shader->info.base.input_semantic_index[slot]; /* Note that sprite_coord enable is a bitfield of * PIPE_MAX_SHADER_OUTPUTS bits. */ diff --git a/src/gallium/drivers/llvmpipe/lp_state_derived.c b/src/gallium/drivers/llvmpipe/lp_state_derived.c index bb059d04599..7f68818ab47 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_derived.c +++ b/src/gallium/drivers/llvmpipe/lp_state_derived.c @@ -66,14 +66,14 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_PERSPECTIVE, vs_index); - for (i = 0; i < lpfs->info.num_inputs; i++) { + for (i = 0; i < lpfs->info.base.num_inputs; i++) { /* * Search for each input in current vs output: */ vs_index = draw_find_shader_output(llvmpipe->draw, - lpfs->info.input_semantic_name[i], - lpfs->info.input_semantic_index[i]); + lpfs->info.base.input_semantic_name[i], + lpfs->info.base.input_semantic_index[i]); if (vs_index < 0) { /* * This can happen with sprite coordinates - the vertex @@ -86,9 +86,9 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) /* This can be pre-computed, except for flatshade: */ - inputs[i].usage_mask = lpfs->info.input_usage_mask[i]; + inputs[i].usage_mask = lpfs->info.base.input_usage_mask[i]; - switch (lpfs->info.input_interpolate[i]) { + switch (lpfs->info.base.input_interpolate[i]) { case TGSI_INTERPOLATE_CONSTANT: inputs[i].interp = LP_INTERP_CONSTANT; break; @@ -103,7 +103,7 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) break; } - switch (lpfs->info.input_semantic_name[i]) { + switch (lpfs->info.base.input_semantic_name[i]) { case TGSI_SEMANTIC_FACE: inputs[i].interp = LP_INTERP_FACING; break; @@ -145,7 +145,7 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_CONSTANT, vs_index); } - llvmpipe->num_inputs = lpfs->info.num_inputs; + llvmpipe->num_inputs = lpfs->info.base.num_inputs; draw_compute_vertex_size(vinfo); @@ -153,7 +153,7 @@ compute_vertex_info(struct llvmpipe_context *llvmpipe) lp_setup_set_fs_inputs(llvmpipe->setup, inputs, - lpfs->info.num_inputs); + lpfs->info.base.num_inputs); } diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 6bfd02061d5..6872f2d3c6a 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -238,9 +238,9 @@ generate_fs(struct llvmpipe_context *lp, LLVMValueRef zs_value = NULL; LLVMValueRef stencil_refs[2]; struct lp_build_mask_context mask; - boolean simple_shader = (shader->info.file_count[TGSI_FILE_SAMPLER] == 0 && - shader->info.num_inputs < 3 && - shader->info.num_instructions < 8); + boolean simple_shader = (shader->info.base.file_count[TGSI_FILE_SAMPLER] == 0 && + shader->info.base.num_inputs < 3 && + shader->info.base.num_instructions < 8); unsigned attrib; unsigned chan; unsigned cbuf; @@ -253,8 +253,8 @@ generate_fs(struct llvmpipe_context *lp, zs_format_desc = util_format_description(key->zsbuf_format); assert(zs_format_desc); - if (!shader->info.writes_z) { - if (key->alpha.enabled || shader->info.uses_kill) + if (!shader->info.base.writes_z) { + if (key->alpha.enabled || shader->info.base.uses_kill) /* With alpha test and kill, can do the depth test early * and hopefully eliminate some quads. But need to do a * special deferred depth write once the final mask value @@ -334,12 +334,12 @@ generate_fs(struct llvmpipe_context *lp, /* Build the actual shader */ lp_build_tgsi_soa(builder, tokens, type, &mask, consts_ptr, interp->pos, interp->inputs, - outputs, sampler, &shader->info); + outputs, sampler, &shader->info.base); /* Alpha test */ if (key->alpha.enabled) { - int color0 = find_output_by_semantic(&shader->info, + int color0 = find_output_by_semantic(&shader->info.base, TGSI_SEMANTIC_COLOR, 0); @@ -358,7 +358,7 @@ generate_fs(struct llvmpipe_context *lp, /* Late Z test */ if (depth_mode & LATE_DEPTH_TEST) { - int pos0 = find_output_by_semantic(&shader->info, + int pos0 = find_output_by_semantic(&shader->info.base, TGSI_SEMANTIC_POSITION, 0); @@ -399,11 +399,11 @@ generate_fs(struct llvmpipe_context *lp, /* Color write */ - for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) + for (attrib = 0; attrib < shader->info.base.num_outputs; ++attrib) { - if (shader->info.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR) + if (shader->info.base.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR) { - unsigned cbuf = shader->info.output_semantic_index[attrib]; + unsigned cbuf = shader->info.base.output_semantic_index[attrib]; for(chan = 0; chan < NUM_CHANNELS; ++chan) { /* XXX: just initialize outputs to point at colors[] and @@ -728,7 +728,7 @@ generate_fragment(struct llvmpipe_context *lp, */ boolean do_branch = ((key->depth.enabled || key->stencil[0].enabled) && !key->alpha.enabled && - !shader->info.uses_kill); + !shader->info.base.uses_kill); generate_blend(&key->blend, rt, @@ -917,7 +917,7 @@ generate_variant(struct llvmpipe_context *lp, !key->stencil[0].enabled && !key->alpha.enabled && !key->depth.enabled && - !shader->info.uses_kill + !shader->info.base.uses_kill ? TRUE : FALSE; @@ -954,7 +954,7 @@ llvmpipe_create_fs_state(struct pipe_context *pipe, make_empty_list(&shader->variants); /* get/save the summary info for this shader */ - tgsi_scan_shader(templ->tokens, &shader->info); + lp_build_tgsi_info(templ->tokens, &shader->info); /* we need to keep a local copy of the tokens */ shader->base.tokens = tgsi_dup_tokens(templ->tokens); @@ -966,7 +966,7 @@ llvmpipe_create_fs_state(struct pipe_context *pipe, return NULL; } - nr_samplers = shader->info.file_max[TGSI_FILE_SAMPLER] + 1; + nr_samplers = shader->info.base.file_max[TGSI_FILE_SAMPLER] + 1; shader->variant_key_size = Offset(struct lp_fragment_shader_variant_key, sampler[nr_samplers]); @@ -976,8 +976,8 @@ llvmpipe_create_fs_state(struct pipe_context *pipe, debug_printf("llvmpipe: Create fragment shader #%u %p:\n", shader->no, (void *) shader); tgsi_dump(templ->tokens, 0); debug_printf("usage masks:\n"); - for (attrib = 0; attrib < shader->info.num_inputs; ++attrib) { - unsigned usage_mask = shader->info.input_usage_mask[attrib]; + for (attrib = 0; attrib < shader->info.base.num_inputs; ++attrib) { + unsigned usage_mask = shader->info.base.input_usage_mask[attrib]; debug_printf(" IN[%u].%s%s%s%s\n", attrib, usage_mask & TGSI_WRITEMASK_X ? "x" : "", @@ -1206,10 +1206,10 @@ make_variant_key(struct llvmpipe_context *lp, /* This value will be the same for all the variants of a given shader: */ - key->nr_samplers = shader->info.file_max[TGSI_FILE_SAMPLER] + 1; + key->nr_samplers = shader->info.base.file_max[TGSI_FILE_SAMPLER] + 1; for(i = 0; i < key->nr_samplers; ++i) { - if(shader->info.file_mask[TGSI_FILE_SAMPLER] & (1 << i)) { + if(shader->info.base.file_mask[TGSI_FILE_SAMPLER] & (1 << i)) { lp_sampler_static_state(&key->sampler[i], lp->fragment_sampler_views[i], lp->sampler[i]); diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.h b/src/gallium/drivers/llvmpipe/lp_state_fs.h index 4999b8dca1a..ddad117acac 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.h +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.h @@ -34,6 +34,7 @@ #include "pipe/p_state.h" #include "tgsi/tgsi_scan.h" /* for tgsi_shader_info */ #include "gallivm/lp_bld_sample.h" /* for struct lp_sampler_static_state */ +#include "gallivm/lp_bld_tgsi.h" /* for lp_tgsi_info */ struct tgsi_token; @@ -96,7 +97,7 @@ struct lp_fragment_shader { struct pipe_shader_state base; - struct tgsi_shader_info info; + struct lp_tgsi_info info; struct lp_fs_variant_list_item variants; -- cgit v1.2.3 From 965f69cb0c51ca5a5c332e207cc86367fa31e6b1 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 12 Oct 2010 09:41:02 +1000 Subject: r600g: fix typo in vertex sampling on r600 fixes https://bugs.freedesktop.org/show_bug.cgi?id=30771 Reported-by: Kevin DeKorte --- src/gallium/drivers/r600/r600_state.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index a2a76cdeb75..70461d24ea2 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -688,7 +688,7 @@ static void r600_set_vs_sampler_view(struct pipe_context *ctx, unsigned count, for (int i = 0; i < count; i++) { if (resource[i]) { - r600_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS); + r600_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS); } } } -- cgit v1.2.3 From c25fcf5aa5beccd7731706b8f85682170a2eca56 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Tue, 28 Sep 2010 22:51:28 +0200 Subject: nouveau: Get larger push buffers. Useful to amortize the command submission/reloc overhead (e.g. etracer goes from 72 to 109 FPS on nv4b). --- src/gallium/drivers/nouveau/nouveau_screen.c | 2 +- src/mesa/drivers/dri/nouveau/nouveau_context.c | 2 +- src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c index ebb21a6e5a3..a9426df686f 100644 --- a/src/gallium/drivers/nouveau/nouveau_screen.c +++ b/src/gallium/drivers/nouveau/nouveau_screen.c @@ -236,7 +236,7 @@ nouveau_screen_init(struct nouveau_screen *screen, struct nouveau_device *dev) int ret; ret = nouveau_channel_alloc(dev, 0xbeef0201, 0xbeef0202, - &screen->channel); + 512*1024, &screen->channel); if (ret) return ret; screen->device = dev; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index 6369e8d7b14..1c7f600d2b0 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -128,7 +128,7 @@ nouveau_context_init(GLcontext *ctx, struct nouveau_screen *screen, /* Allocate a hardware channel. */ ret = nouveau_channel_alloc(context_dev(ctx), 0xbeef0201, 0xbeef0202, - &nctx->hw.chan); + 512*1024, &nctx->hw.chan); if (ret) { nouveau_error("Error initializing the FIFO.\n"); return GL_FALSE; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c index e4415cbedb5..9373b936ab7 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c @@ -32,7 +32,7 @@ /* Arbitrary pushbuf length we can assume we can get with a single * WAIT_RING. */ -#define PUSHBUF_DWORDS 2048 +#define PUSHBUF_DWORDS 65536 /* Functions to set up struct nouveau_array_state from something like * a GL array or index buffer. */ -- cgit v1.2.3 From 4cb3b4ced80891ce8760cf5a0c06db9dbee36b76 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 11 Oct 2010 19:45:52 +0100 Subject: llvmpipe: Do not dispose the execution engine. The engine is a global owned by gallivm module. --- src/gallium/drivers/llvmpipe/lp_jit.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c b/src/gallium/drivers/llvmpipe/lp_jit.c index 04b12dedccf..e09ec504ab7 100644 --- a/src/gallium/drivers/llvmpipe/lp_jit.c +++ b/src/gallium/drivers/llvmpipe/lp_jit.c @@ -162,9 +162,6 @@ lp_jit_init_globals(struct llvmpipe_screen *screen) void lp_jit_screen_cleanup(struct llvmpipe_screen *screen) { - if(screen->engine) - LLVMDisposeExecutionEngine(screen->engine); - if(screen->pass) LLVMDisposePassManager(screen->pass); } -- cgit v1.2.3 From 2cf98d5a6dccba3fd69b8469e67f66dfb5fc9651 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Mon, 11 Oct 2010 16:30:14 +0100 Subject: llvmpipe: try to do more of rast_tri_3_16 with intrinsics There was actually a large quantity of scalar code in these functions previously. This tries to move more into intrinsics. Introduce an sse2 mm_mullo_epi32 replacement to avoid sse4 dependency in the new rasterization code. --- src/gallium/drivers/llvmpipe/lp_rast.h | 16 +- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 264 ++++++++++++++++++++++++++++- 2 files changed, 271 insertions(+), 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h index df0bea04b9a..e2bcc450168 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.h +++ b/src/gallium/drivers/llvmpipe/lp_rast.h @@ -89,19 +89,21 @@ struct lp_rast_shader_inputs { const struct lp_rast_state *state; }; - +/* Note: the order of these values is important as they are loaded by + * sse code in rasterization: + */ struct lp_rast_plane { - /* one-pixel sized trivial accept offsets for each plane */ - int ei; - - /* one-pixel sized trivial reject offsets for each plane */ - int eo; - /* edge function values at minx,miny ?? */ int c; int dcdx; int dcdy; + + /* one-pixel sized trivial reject offsets for each plane */ + int eo; + + /* one-pixel sized trivial accept offsets for each plane */ + int ei; }; /** diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index f870a187db5..7a6cbb8b63c 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -32,6 +32,7 @@ #include #include "util/u_math.h" #include "lp_debug.h" +#include "lp_debug_intrin.h" #include "lp_perf.h" #include "lp_rast_priv.h" #include "lp_tile_soa.h" @@ -254,8 +255,8 @@ sign_bits4(const __m128i *cstep, int cdiff) #define TAG(x) x##_3 #define NR_PLANES 3 -#define TRI_4 lp_rast_triangle_3_4 -#define TRI_16 lp_rast_triangle_3_16 +/*#define TRI_4 lp_rast_triangle_3_4*/ +/*#define TRI_16 lp_rast_triangle_3_16*/ #include "lp_rast_tri_tmp.h" #define TAG(x) x##_4 @@ -279,3 +280,262 @@ sign_bits4(const __m128i *cstep, int cdiff) #define NR_PLANES 8 #include "lp_rast_tri_tmp.h" + +static INLINE void +transpose4_epi32(__m128i a, + __m128i b, + __m128i c, + __m128i d, + __m128i *o, + __m128i *p, + __m128i *q, + __m128i *r) +{ + __m128i t0 = _mm_unpacklo_epi32(a, b); + __m128i t1 = _mm_unpacklo_epi32(c, d); + __m128i t2 = _mm_unpackhi_epi32(a, b); + __m128i t3 = _mm_unpackhi_epi32(c, d); + + *o = _mm_unpacklo_epi64(t0, t1); + *p = _mm_unpackhi_epi64(t0, t1); + *q = _mm_unpacklo_epi64(t2, t3); + *r = _mm_unpackhi_epi64(t2, t3); +} + + +#define SCALAR_EPI32(m, i) _mm_shuffle_epi32((m), _MM_SHUFFLE(i,i,i,i)) + +#define NR_PLANES 3 + + + +/* Provide an SSE2 implementation of _mm_mullo_epi32() in terms of + * _mm_mul_epu32(). + * + * I suspect this works fine for us because one of our operands is + * always positive, but not sure that this can be used for general + * signed integer multiplication. + * + * This seems close enough to the speed of SSE4 and the real + * _mm_mullo_epi32() intrinsic as to not justify adding an sse4 + * dependency at this point. + */ +static INLINE __m128i mm_mullo_epi32(const __m128i a, const __m128i b) +{ + __m128i a4 = _mm_srli_si128(a, 4); /* shift by one dword */ + __m128i b4 = _mm_srli_si128(b, 4); /* shift by one dword */ + __m128i ba = _mm_mul_epu32(b, a); /* multply dwords 0, 2 */ + __m128i b4a4 = _mm_mul_epu32(b4, a4); /* multiply dwords 1, 3 */ + + /* Interleave the results, either with shuffles or (slightly + * faster) direct bit operations: + */ +#if 0 + __m128i ba8 = _mm_shuffle_epi32(ba, 8); + __m128i b4a48 = _mm_shuffle_epi32(b4a4, 8); + __m128i result = _mm_unpacklo_epi32(ba8, b4a48); +#else + __m128i mask = _mm_setr_epi32(~0,0,~0,0); + __m128i ba_mask = _mm_and_si128(ba, mask); + __m128i b4a4_mask = _mm_and_si128(b4a4, mask); + __m128i b4a4_mask_shift = _mm_slli_si128(b4a4_mask, 4); + __m128i result = _mm_or_si128(ba_mask, b4a4_mask_shift); +#endif + + return result; +} + + + + +void +lp_rast_triangle_3_16(struct lp_rasterizer_task *task, + const union lp_rast_cmd_arg arg) +{ + const struct lp_rast_triangle *tri = arg.triangle.tri; + const struct lp_rast_plane *plane = tri->plane; + int x = (arg.triangle.plane_mask & 0xff) + task->x; + int y = (arg.triangle.plane_mask >> 8) + task->y; + unsigned i, j; + + struct { unsigned mask:16; unsigned i:8; unsigned j:8; } out[16]; + unsigned nr = 0; + + __m128i p0 = _mm_loadu_si128((__m128i *)&plane[0]); /* c, dcdx, dcdy, eo */ + __m128i p1 = _mm_loadu_si128((__m128i *)&plane[1]); /* c, dcdx, dcdy, eo */ + __m128i p2 = _mm_loadu_si128((__m128i *)&plane[2]); /* c, dcdx, dcdy, eo */ + __m128i zero = _mm_setzero_si128(); + + __m128i c; + __m128i dcdx; + __m128i dcdy; + __m128i rej4; + + __m128i dcdx2; + __m128i dcdx3; + + __m128i span_0; /* 0,dcdx,2dcdx,3dcdx for plane 0 */ + __m128i span_1; /* 0,dcdx,2dcdx,3dcdx for plane 1 */ + __m128i span_2; /* 0,dcdx,2dcdx,3dcdx for plane 2 */ + __m128i unused; + + transpose4_epi32(p0, p1, p2, zero, + &c, &dcdx, &dcdy, &rej4); + + /* Adjust dcdx; + */ + dcdx = _mm_sub_epi32(zero, dcdx); + + c = _mm_add_epi32(c, mm_mullo_epi32(dcdx, _mm_set1_epi32(x))); + c = _mm_add_epi32(c, mm_mullo_epi32(dcdy, _mm_set1_epi32(y))); + rej4 = _mm_slli_epi32(rej4, 2); + + dcdx2 = _mm_add_epi32(dcdx, dcdx); + dcdx3 = _mm_add_epi32(dcdx2, dcdx); + + transpose4_epi32(zero, dcdx, dcdx2, dcdx3, + &span_0, &span_1, &span_2, &unused); + + for (i = 0; i < 4; i++) { + __m128i cx = c; + + for (j = 0; j < 4; j++) { + __m128i c4rej = _mm_add_epi32(cx, rej4); + __m128i rej_masks = _mm_srai_epi32(c4rej, 31); + + /* if (is_zero(rej_masks)) */ + if (_mm_movemask_epi8(rej_masks) == 0) { + __m128i c0_0 = _mm_add_epi32(SCALAR_EPI32(cx, 0), span_0); + __m128i c1_0 = _mm_add_epi32(SCALAR_EPI32(cx, 1), span_1); + __m128i c2_0 = _mm_add_epi32(SCALAR_EPI32(cx, 2), span_2); + + __m128i c_0 = _mm_or_si128(_mm_or_si128(c0_0, c1_0), c2_0); + + __m128i c0_1 = _mm_add_epi32(c0_0, SCALAR_EPI32(dcdy, 0)); + __m128i c1_1 = _mm_add_epi32(c1_0, SCALAR_EPI32(dcdy, 1)); + __m128i c2_1 = _mm_add_epi32(c2_0, SCALAR_EPI32(dcdy, 2)); + + __m128i c_1 = _mm_or_si128(_mm_or_si128(c0_1, c1_1), c2_1); + __m128i c_01 = _mm_packs_epi32(c_0, c_1); + + __m128i c0_2 = _mm_add_epi32(c0_1, SCALAR_EPI32(dcdy, 0)); + __m128i c1_2 = _mm_add_epi32(c1_1, SCALAR_EPI32(dcdy, 1)); + __m128i c2_2 = _mm_add_epi32(c2_1, SCALAR_EPI32(dcdy, 2)); + + __m128i c_2 = _mm_or_si128(_mm_or_si128(c0_2, c1_2), c2_2); + + __m128i c0_3 = _mm_add_epi32(c0_2, SCALAR_EPI32(dcdy, 0)); + __m128i c1_3 = _mm_add_epi32(c1_2, SCALAR_EPI32(dcdy, 1)); + __m128i c2_3 = _mm_add_epi32(c2_2, SCALAR_EPI32(dcdy, 2)); + + __m128i c_3 = _mm_or_si128(_mm_or_si128(c0_3, c1_3), c2_3); + __m128i c_23 = _mm_packs_epi32(c_2, c_3); + __m128i c_0123 = _mm_packs_epi16(c_01, c_23); + + unsigned mask = _mm_movemask_epi8(c_0123); + + out[nr].i = i; + out[nr].j = j; + out[nr].mask = mask; + if (mask != 0xffff) + nr++; + } + cx = _mm_add_epi32(cx, _mm_slli_epi32(dcdx, 2)); + } + + c = _mm_add_epi32(c, _mm_slli_epi32(dcdy, 2)); + } + + for (i = 0; i < nr; i++) + lp_rast_shade_quads_mask(task, + &tri->inputs, + x + 4 * out[i].j, + y + 4 * out[i].i, + 0xffff & ~out[i].mask); +} + + + + + +void +lp_rast_triangle_3_4(struct lp_rasterizer_task *task, + const union lp_rast_cmd_arg arg) +{ + const struct lp_rast_triangle *tri = arg.triangle.tri; + const struct lp_rast_plane *plane = tri->plane; + int x = (arg.triangle.plane_mask & 0xff) + task->x; + int y = (arg.triangle.plane_mask >> 8) + task->y; + + __m128i p0 = _mm_loadu_si128((__m128i *)&plane[0]); /* c, dcdx, dcdy, eo */ + __m128i p1 = _mm_loadu_si128((__m128i *)&plane[1]); /* c, dcdx, dcdy, eo */ + __m128i p2 = _mm_loadu_si128((__m128i *)&plane[2]); /* c, dcdx, dcdy, eo */ + __m128i zero = _mm_setzero_si128(); + + __m128i c; + __m128i dcdx; + __m128i dcdy; + + __m128i dcdx2; + __m128i dcdx3; + + __m128i span_0; /* 0,dcdx,2dcdx,3dcdx for plane 0 */ + __m128i span_1; /* 0,dcdx,2dcdx,3dcdx for plane 1 */ + __m128i span_2; /* 0,dcdx,2dcdx,3dcdx for plane 2 */ + __m128i unused; + + transpose4_epi32(p0, p1, p2, zero, + &c, &dcdx, &dcdy, &unused); + + /* Adjust dcdx; + */ + dcdx = _mm_sub_epi32(zero, dcdx); + + c = _mm_add_epi32(c, _mm_mullo_epi32(dcdx, _mm_set1_epi32(x))); + c = _mm_add_epi32(c, _mm_mullo_epi32(dcdy, _mm_set1_epi32(y))); + + dcdx2 = _mm_add_epi32(dcdx, dcdx); + dcdx3 = _mm_add_epi32(dcdx2, dcdx); + + transpose4_epi32(zero, dcdx, dcdx2, dcdx3, + &span_0, &span_1, &span_2, &unused); + + + { + __m128i c0_0 = _mm_add_epi32(SCALAR_EPI32(c, 0), span_0); + __m128i c1_0 = _mm_add_epi32(SCALAR_EPI32(c, 1), span_1); + __m128i c2_0 = _mm_add_epi32(SCALAR_EPI32(c, 2), span_2); + + __m128i c_0 = _mm_or_si128(_mm_or_si128(c0_0, c1_0), c2_0); + + __m128i c0_1 = _mm_add_epi32(c0_0, SCALAR_EPI32(dcdy, 0)); + __m128i c1_1 = _mm_add_epi32(c1_0, SCALAR_EPI32(dcdy, 1)); + __m128i c2_1 = _mm_add_epi32(c2_0, SCALAR_EPI32(dcdy, 2)); + + __m128i c_1 = _mm_or_si128(_mm_or_si128(c0_1, c1_1), c2_1); + __m128i c_01 = _mm_packs_epi32(c_0, c_1); + + __m128i c0_2 = _mm_add_epi32(c0_1, SCALAR_EPI32(dcdy, 0)); + __m128i c1_2 = _mm_add_epi32(c1_1, SCALAR_EPI32(dcdy, 1)); + __m128i c2_2 = _mm_add_epi32(c2_1, SCALAR_EPI32(dcdy, 2)); + + __m128i c_2 = _mm_or_si128(_mm_or_si128(c0_2, c1_2), c2_2); + + __m128i c0_3 = _mm_add_epi32(c0_2, SCALAR_EPI32(dcdy, 0)); + __m128i c1_3 = _mm_add_epi32(c1_2, SCALAR_EPI32(dcdy, 1)); + __m128i c2_3 = _mm_add_epi32(c2_2, SCALAR_EPI32(dcdy, 2)); + + __m128i c_3 = _mm_or_si128(_mm_or_si128(c0_3, c1_3), c2_3); + __m128i c_23 = _mm_packs_epi32(c_2, c_3); + __m128i c_0123 = _mm_packs_epi16(c_01, c_23); + + unsigned mask = _mm_movemask_epi8(c_0123); + + if (mask != 0xffff) + lp_rast_shade_quads_mask(task, + &tri->inputs, + x, + y, + 0xffff & ~mask); + } +} -- cgit v1.2.3 From 9d59e148f86c1de2c69639d389398d7435cc193e Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Mon, 11 Oct 2010 18:20:02 +0100 Subject: llvmpipe: add debug helpers for epi32 etc --- src/gallium/drivers/llvmpipe/lp_debug_intrin.h | 115 +++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/gallium/drivers/llvmpipe/lp_debug_intrin.h (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_debug_intrin.h b/src/gallium/drivers/llvmpipe/lp_debug_intrin.h new file mode 100644 index 00000000000..5237e7893b6 --- /dev/null +++ b/src/gallium/drivers/llvmpipe/lp_debug_intrin.h @@ -0,0 +1,115 @@ +/************************************************************************** + * + * Copyright 2010 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + **************************************************************************/ + +#ifndef _LP_DEBUG_INTRIN_H_ +#define _LP_DEBUG_INTRIN_H_ + +#include "pipe/p_config.h" + +#if defined(PIPE_ARCH_SSE) + +#include + +static INLINE void print_epi8(const char *name, __m128i r) +{ + union { __m128i m; ubyte ub[16]; } u; + u.m = r; + + debug_printf("%s: " + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x\n", + name, + u.ub[0], u.ub[1], u.ub[2], u.ub[3], + u.ub[4], u.ub[5], u.ub[6], u.ub[7], + u.ub[8], u.ub[9], u.ub[10], u.ub[11], + u.ub[12], u.ub[13], u.ub[14], u.ub[15]); +} + +static INLINE void print_epi16(const char *name, __m128i r) +{ + union { __m128i m; ushort us[8]; } u; + u.m = r; + + debug_printf("%s: " + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x\n", + name, + u.us[0], u.us[1], u.us[2], u.us[3], + u.us[4], u.us[5], u.us[6], u.us[7]); +} + +static INLINE void print_epi32(const char *name, __m128i r) +{ + union { __m128i m; uint ui[4]; } u; + u.m = r; + + debug_printf("%s: " + "%08x/" + "%08x/" + "%08x/" + "%08x\n", + name, + u.ui[0], u.ui[1], u.ui[2], u.ui[3]); +} + +static INLINE void print_ps(const char *name, __m128 r) +{ + union { __m128 m; float f[4]; } u; + u.m = r; + + debug_printf("%s: " + "%f/" + "%f/" + "%f/" + "%f\n", + name, + u.f[0], u.f[1], u.f[2], u.f[3]); +} + + +#endif +#endif -- cgit v1.2.3 From 9773722c2b09d5f0615a47cecf4347859474dc56 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 12 Oct 2010 11:02:19 +0100 Subject: llvmpipe: try to keep plane c values small Avoid accumulating more and more fixed point bits. --- src/gallium/drivers/llvmpipe/lp_setup_line.c | 3 +-- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 38 +++++++++++++++++----------- 2 files changed, 24 insertions(+), 17 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index 693ac281752..c940860850e 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -640,8 +640,7 @@ try_setup_line( struct lp_setup_context *setup, } } - plane->dcdx *= FIXED_ONE; - plane->dcdy *= FIXED_ONE; + plane->c = (plane->c + (FIXED_ONE-1)) / FIXED_ONE; /* find trivial reject offsets for each edge for a single-pixel * sized block. These will be scaled up at each recursive level to diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 8fd034666c3..dfe1bd11ea0 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -343,26 +343,34 @@ do_triangle_ccw(struct lp_setup_context *setup, * Also, sometimes (in FBO cases) GL will render upside down * to its usual method, in which case it will probably want * to use the opposite, top-left convention. + * + * XXX: Chances are this will get stripped away. In fact this + * is only meaningful if: + * + * (plane->c & (FIXED_ONE-1)) == 0 + * */ - if (plane->dcdx < 0) { - /* both fill conventions want this - adjust for left edges */ - plane->c++; - } - else if (plane->dcdx == 0) { - if (setup->pixel_offset == 0) { - /* correct for top-left fill convention: - */ - if (plane->dcdy > 0) plane->c++; + if ((plane->c & (FIXED_ONE-1)) == 0) { + if (plane->dcdx < 0) { + /* both fill conventions want this - adjust for left edges */ + plane->c++; } - else { - /* correct for bottom-left fill convention: - */ - if (plane->dcdy < 0) plane->c++; + else if (plane->dcdx == 0) { + if (setup->pixel_offset == 0) { + /* correct for top-left fill convention: + */ + if (plane->dcdy > 0) plane->c++; + } + else { + /* correct for bottom-left fill convention: + */ + if (plane->dcdy < 0) plane->c++; + } } } - plane->dcdx *= FIXED_ONE; - plane->dcdy *= FIXED_ONE; + plane->c = (plane->c + (FIXED_ONE-1)) / FIXED_ONE; + /* find trivial reject offsets for each edge for a single-pixel * sized block. These will be scaled up at each recursive level to -- cgit v1.2.3 From b4277bc5843aca7f9e0ecc7e956733f1becd6ad6 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 12 Oct 2010 11:51:28 +0100 Subject: llvmpipe: fix typo in last commit --- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index 7a6cbb8b63c..854fd5cc1e8 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -491,8 +491,8 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task, */ dcdx = _mm_sub_epi32(zero, dcdx); - c = _mm_add_epi32(c, _mm_mullo_epi32(dcdx, _mm_set1_epi32(x))); - c = _mm_add_epi32(c, _mm_mullo_epi32(dcdy, _mm_set1_epi32(y))); + c = _mm_add_epi32(c, mm_mullo_epi32(dcdx, _mm_set1_epi32(x))); + c = _mm_add_epi32(c, mm_mullo_epi32(dcdy, _mm_set1_epi32(y))); dcdx2 = _mm_add_epi32(dcdx, dcdx); dcdx3 = _mm_add_epi32(dcdx2, dcdx); -- cgit v1.2.3 From 39331be44efc5b5ae749df3f6987626837c7b8ff Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 12 Oct 2010 12:27:55 +0100 Subject: llvmpipe: Fix MSVC build. MSVC doesn't accept more than 3 __m128i arguments. --- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 36 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index 854fd5cc1e8..5e8918b1d87 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -282,19 +282,19 @@ sign_bits4(const __m128i *cstep, int cdiff) static INLINE void -transpose4_epi32(__m128i a, - __m128i b, - __m128i c, - __m128i d, - __m128i *o, - __m128i *p, - __m128i *q, - __m128i *r) +transpose4_epi32(const __m128i * restrict a, + const __m128i * restrict b, + const __m128i * restrict c, + const __m128i * restrict d, + __m128i * restrict o, + __m128i * restrict p, + __m128i * restrict q, + __m128i * restrict r) { - __m128i t0 = _mm_unpacklo_epi32(a, b); - __m128i t1 = _mm_unpacklo_epi32(c, d); - __m128i t2 = _mm_unpackhi_epi32(a, b); - __m128i t3 = _mm_unpackhi_epi32(c, d); + __m128i t0 = _mm_unpacklo_epi32(*a, *b); + __m128i t1 = _mm_unpacklo_epi32(*c, *d); + __m128i t2 = _mm_unpackhi_epi32(*a, *b); + __m128i t3 = _mm_unpackhi_epi32(*c, *d); *o = _mm_unpacklo_epi64(t0, t1); *p = _mm_unpackhi_epi64(t0, t1); @@ -379,8 +379,8 @@ lp_rast_triangle_3_16(struct lp_rasterizer_task *task, __m128i span_2; /* 0,dcdx,2dcdx,3dcdx for plane 2 */ __m128i unused; - transpose4_epi32(p0, p1, p2, zero, - &c, &dcdx, &dcdy, &rej4); + transpose4_epi32(&p0, &p1, &p2, &zero, + &c, &dcdx, &dcdy, &rej4); /* Adjust dcdx; */ @@ -393,8 +393,8 @@ lp_rast_triangle_3_16(struct lp_rasterizer_task *task, dcdx2 = _mm_add_epi32(dcdx, dcdx); dcdx3 = _mm_add_epi32(dcdx2, dcdx); - transpose4_epi32(zero, dcdx, dcdx2, dcdx3, - &span_0, &span_1, &span_2, &unused); + transpose4_epi32(&zero, &dcdx, &dcdx2, &dcdx3, + &span_0, &span_1, &span_2, &unused); for (i = 0; i < 4; i++) { __m128i cx = c; @@ -484,7 +484,7 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task, __m128i span_2; /* 0,dcdx,2dcdx,3dcdx for plane 2 */ __m128i unused; - transpose4_epi32(p0, p1, p2, zero, + transpose4_epi32(&p0, &p1, &p2, &zero, &c, &dcdx, &dcdy, &unused); /* Adjust dcdx; @@ -497,7 +497,7 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task, dcdx2 = _mm_add_epi32(dcdx, dcdx); dcdx3 = _mm_add_epi32(dcdx2, dcdx); - transpose4_epi32(zero, dcdx, dcdx2, dcdx3, + transpose4_epi32(&zero, &dcdx, &dcdx2, &dcdx3, &span_0, &span_1, &span_2, &unused); -- cgit v1.2.3 From 1a574afabc8840da82e68ac643ec3a7b05afb631 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 12 Oct 2010 13:02:28 +0100 Subject: gallium: move sse intrinsics debug helpers to u_sse.h --- src/gallium/auxiliary/util/u_sse.h | 80 ++++++++++++++++- src/gallium/drivers/llvmpipe/lp_debug_intrin.h | 115 ------------------------- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 1 - 3 files changed, 79 insertions(+), 117 deletions(-) delete mode 100644 src/gallium/drivers/llvmpipe/lp_debug_intrin.h (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_sse.h b/src/gallium/auxiliary/util/u_sse.h index 03198c91da4..8fd0e52a3a4 100644 --- a/src/gallium/auxiliary/util/u_sse.h +++ b/src/gallium/auxiliary/util/u_sse.h @@ -72,6 +72,84 @@ _mm_castps_si128(__m128 a) #endif /* defined(_MSC_VER) && _MSC_VER < 1500 */ +static INLINE void u_print_epi8(const char *name, __m128i r) +{ + union { __m128i m; ubyte ub[16]; } u; + u.m = r; + + debug_printf("%s: " + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x/" + "%02x\n", + name, + u.ub[0], u.ub[1], u.ub[2], u.ub[3], + u.ub[4], u.ub[5], u.ub[6], u.ub[7], + u.ub[8], u.ub[9], u.ub[10], u.ub[11], + u.ub[12], u.ub[13], u.ub[14], u.ub[15]); +} + +static INLINE void u_print_epi16(const char *name, __m128i r) +{ + union { __m128i m; ushort us[8]; } u; + u.m = r; + + debug_printf("%s: " + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x/" + "%04x\n", + name, + u.us[0], u.us[1], u.us[2], u.us[3], + u.us[4], u.us[5], u.us[6], u.us[7]); +} + +static INLINE void u_print_epi32(const char *name, __m128i r) +{ + union { __m128i m; uint ui[4]; } u; + u.m = r; + + debug_printf("%s: " + "%08x/" + "%08x/" + "%08x/" + "%08x\n", + name, + u.ui[0], u.ui[1], u.ui[2], u.ui[3]); +} + +static INLINE void u_print_ps(const char *name, __m128 r) +{ + union { __m128 m; float f[4]; } u; + u.m = r; + + debug_printf("%s: " + "%f/" + "%f/" + "%f/" + "%f\n", + name, + u.f[0], u.f[1], u.f[2], u.f[3]); +} + + + #if defined(PIPE_ARCH_SSSE3) #include @@ -98,6 +176,6 @@ _mm_shuffle_epi8(__m128i a, __m128i mask) #endif /* !PIPE_ARCH_SSSE3 */ -#endif /* PIPE_ARCH_X86 || PIPE_ARCH_X86_64 */ +#endif /* PIPE_ARCH_SSE */ #endif /* U_SSE_H_ */ diff --git a/src/gallium/drivers/llvmpipe/lp_debug_intrin.h b/src/gallium/drivers/llvmpipe/lp_debug_intrin.h deleted file mode 100644 index 5237e7893b6..00000000000 --- a/src/gallium/drivers/llvmpipe/lp_debug_intrin.h +++ /dev/null @@ -1,115 +0,0 @@ -/************************************************************************** - * - * Copyright 2010 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - **************************************************************************/ - -#ifndef _LP_DEBUG_INTRIN_H_ -#define _LP_DEBUG_INTRIN_H_ - -#include "pipe/p_config.h" - -#if defined(PIPE_ARCH_SSE) - -#include - -static INLINE void print_epi8(const char *name, __m128i r) -{ - union { __m128i m; ubyte ub[16]; } u; - u.m = r; - - debug_printf("%s: " - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x/" - "%02x\n", - name, - u.ub[0], u.ub[1], u.ub[2], u.ub[3], - u.ub[4], u.ub[5], u.ub[6], u.ub[7], - u.ub[8], u.ub[9], u.ub[10], u.ub[11], - u.ub[12], u.ub[13], u.ub[14], u.ub[15]); -} - -static INLINE void print_epi16(const char *name, __m128i r) -{ - union { __m128i m; ushort us[8]; } u; - u.m = r; - - debug_printf("%s: " - "%04x/" - "%04x/" - "%04x/" - "%04x/" - "%04x/" - "%04x/" - "%04x/" - "%04x\n", - name, - u.us[0], u.us[1], u.us[2], u.us[3], - u.us[4], u.us[5], u.us[6], u.us[7]); -} - -static INLINE void print_epi32(const char *name, __m128i r) -{ - union { __m128i m; uint ui[4]; } u; - u.m = r; - - debug_printf("%s: " - "%08x/" - "%08x/" - "%08x/" - "%08x\n", - name, - u.ui[0], u.ui[1], u.ui[2], u.ui[3]); -} - -static INLINE void print_ps(const char *name, __m128 r) -{ - union { __m128 m; float f[4]; } u; - u.m = r; - - debug_printf("%s: " - "%f/" - "%f/" - "%f/" - "%f\n", - name, - u.f[0], u.f[1], u.f[2], u.f[3]); -} - - -#endif -#endif diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index 5e8918b1d87..19b0bd686a8 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -32,7 +32,6 @@ #include #include "util/u_math.h" #include "lp_debug.h" -#include "lp_debug_intrin.h" #include "lp_perf.h" #include "lp_rast_priv.h" #include "lp_tile_soa.h" -- cgit v1.2.3 From d0eb854f58ffb7d01fb37c0939078d8d117e7386 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 5 Oct 2010 23:15:44 +0100 Subject: r600g: add missing file to sconscript --- src/gallium/drivers/r600/SConscript | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/SConscript b/src/gallium/drivers/r600/SConscript index b6d9b7d8d22..bf0ad8571ba 100644 --- a/src/gallium/drivers/r600/SConscript +++ b/src/gallium/drivers/r600/SConscript @@ -18,6 +18,7 @@ r600 = env.ConvenienceLibrary( source = [ 'r600_asm.c', 'r600_buffer.c', + 'r600_blit.c', 'r600_helper.c', 'r600_pipe.c', 'r600_query.c', -- cgit v1.2.3 From 22ec25e2bf5c9309610b68e8e40472a8ea695ba9 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 10 Oct 2010 08:39:48 +0100 Subject: gallivm: don't branch on KILLs near end of shader --- src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 57 ++++++++++++++++++++----- 1 file changed, 47 insertions(+), 10 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 2d4eb9a925c..2bc90579a2a 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -917,6 +917,43 @@ emit_tex( struct lp_build_tgsi_soa_context *bld, texel); } +static boolean +near_end_of_shader(struct lp_build_tgsi_soa_context *bld, + int pc) +{ + int i; + + for (i = 0; i < 5; i++) { + unsigned opcode; + + if (pc + i >= bld->info->num_instructions) + return TRUE; + + opcode = bld->instructions[pc + i].Instruction.Opcode; + + if (opcode == TGSI_OPCODE_END) + return TRUE; + + if (opcode == TGSI_OPCODE_TEX || + opcode == TGSI_OPCODE_TXP || + opcode == TGSI_OPCODE_TXD || + opcode == TGSI_OPCODE_TXB || + opcode == TGSI_OPCODE_TXL || + opcode == TGSI_OPCODE_TXF || + opcode == TGSI_OPCODE_TXQ || + opcode == TGSI_OPCODE_CAL || + opcode == TGSI_OPCODE_CALLNZ || + opcode == TGSI_OPCODE_IF || + opcode == TGSI_OPCODE_IFC || + opcode == TGSI_OPCODE_BGNLOOP || + opcode == TGSI_OPCODE_SWITCH) + return FALSE; + } + + return TRUE; +} + + /** * Kill fragment if any of the src register values are negative. @@ -924,7 +961,8 @@ emit_tex( struct lp_build_tgsi_soa_context *bld, static void emit_kil( struct lp_build_tgsi_soa_context *bld, - const struct tgsi_full_instruction *inst ) + const struct tgsi_full_instruction *inst, + int pc) { const struct tgsi_full_src_register *reg = &inst->Src[0]; LLVMValueRef terms[NUM_CHANNELS]; @@ -966,9 +1004,8 @@ emit_kil( if(mask) { lp_build_mask_update(bld->mask, mask); - /* XXX: figure out if we are at the end of the shader and skip this: - */ - lp_build_mask_check(bld->mask); + if (!near_end_of_shader(bld, pc)) + lp_build_mask_check(bld->mask); } } @@ -981,7 +1018,8 @@ emit_kil( */ static void emit_kilp(struct lp_build_tgsi_soa_context *bld, - const struct tgsi_full_instruction *inst) + const struct tgsi_full_instruction *inst, + int pc) { LLVMValueRef mask; @@ -997,9 +1035,8 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld, lp_build_mask_update(bld->mask, mask); - /* XXX: figure out if we are at the end of the shader and skip this: - */ - lp_build_mask_check(bld->mask); + if (!near_end_of_shader(bld, pc)) + lp_build_mask_check(bld->mask); } static void @@ -1548,12 +1585,12 @@ emit_instruction( case TGSI_OPCODE_KILP: /* predicated kill */ - emit_kilp( bld, inst ); + emit_kilp( bld, inst, (*pc)-1 ); break; case TGSI_OPCODE_KIL: /* conditional kill */ - emit_kil( bld, inst ); + emit_kil( bld, inst, (*pc)-1 ); break; case TGSI_OPCODE_PK2H: -- cgit v1.2.3 From 0ca0382d1bfd1e9128fa4b588ce1411f7b8a85df Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 12 Oct 2010 13:20:39 +0100 Subject: Revert "llvmpipe: try to keep plane c values small" This reverts commit 9773722c2b09d5f0615a47cecf4347859474dc56. Looks like there are some floor/rounding issues here that need to be better understood. --- src/gallium/drivers/llvmpipe/lp_setup_line.c | 3 ++- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 38 +++++++++++----------------- 2 files changed, 17 insertions(+), 24 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index c940860850e..693ac281752 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -640,7 +640,8 @@ try_setup_line( struct lp_setup_context *setup, } } - plane->c = (plane->c + (FIXED_ONE-1)) / FIXED_ONE; + plane->dcdx *= FIXED_ONE; + plane->dcdy *= FIXED_ONE; /* find trivial reject offsets for each edge for a single-pixel * sized block. These will be scaled up at each recursive level to diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index dfe1bd11ea0..8fd034666c3 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -343,34 +343,26 @@ do_triangle_ccw(struct lp_setup_context *setup, * Also, sometimes (in FBO cases) GL will render upside down * to its usual method, in which case it will probably want * to use the opposite, top-left convention. - * - * XXX: Chances are this will get stripped away. In fact this - * is only meaningful if: - * - * (plane->c & (FIXED_ONE-1)) == 0 - * */ - if ((plane->c & (FIXED_ONE-1)) == 0) { - if (plane->dcdx < 0) { - /* both fill conventions want this - adjust for left edges */ - plane->c++; + if (plane->dcdx < 0) { + /* both fill conventions want this - adjust for left edges */ + plane->c++; + } + else if (plane->dcdx == 0) { + if (setup->pixel_offset == 0) { + /* correct for top-left fill convention: + */ + if (plane->dcdy > 0) plane->c++; } - else if (plane->dcdx == 0) { - if (setup->pixel_offset == 0) { - /* correct for top-left fill convention: - */ - if (plane->dcdy > 0) plane->c++; - } - else { - /* correct for bottom-left fill convention: - */ - if (plane->dcdy < 0) plane->c++; - } + else { + /* correct for bottom-left fill convention: + */ + if (plane->dcdy < 0) plane->c++; } } - plane->c = (plane->c + (FIXED_ONE-1)) / FIXED_ONE; - + plane->dcdx *= FIXED_ONE; + plane->dcdy *= FIXED_ONE; /* find trivial reject offsets for each edge for a single-pixel * sized block. These will be scaled up at each recursive level to -- cgit v1.2.3 From ec08047a801e430ab4db002aa68e5d412bf40b7e Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 12 Oct 2010 10:26:07 +0200 Subject: st/xorg: Don't try to use option values before processing options Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/xorg_driver.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index e10ff2f9508..835f06a73b1 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -402,19 +402,6 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags) if (!drv_init_drm(pScrn)) return FALSE; - use3D = cust ? !cust->no_3d : TRUE; - ms->from_3D = xf86GetOptValBool(ms->Options, OPTION_3D_ACCEL, - &use3D) ? - X_CONFIG : X_PROBED; - - ms->no3D = !use3D; - - if (!drv_init_resource_management(pScrn)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not init " - "Gallium3D or libKMS."); - return FALSE; - } - pScrn->monitor = pScrn->confScreen->monitor; pScrn->progClock = TRUE; pScrn->rgbBits = 8; @@ -449,6 +436,19 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags) memcpy(ms->Options, drv_options, sizeof(drv_options)); xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, ms->Options); + use3D = cust ? !cust->no_3d : TRUE; + ms->from_3D = xf86GetOptValBool(ms->Options, OPTION_3D_ACCEL, + &use3D) ? + X_CONFIG : X_PROBED; + + ms->no3D = !use3D; + + if (!drv_init_resource_management(pScrn)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not init " + "Gallium3D or libKMS."); + return FALSE; + } + /* Allocate an xf86CrtcConfig */ xf86CrtcConfigInit(pScrn, &crtc_config_funcs); xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); -- cgit v1.2.3 From f0bbf130f944b98cc44df4cd865fea1e4b296a5b Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 12 Oct 2010 11:07:38 +0200 Subject: xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers Signed-off-by: Thomas Hellstrom --- src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c b/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c index 237b308ae35..9c075b5597b 100644 --- a/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c +++ b/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c @@ -32,6 +32,7 @@ * allows X clients to communicate with the driver. */ +#include #include "dixstruct.h" #include "extnsionst.h" #include -- cgit v1.2.3 From bfd065c71ed6df1e1ce1a2a7e6bcf6bdacac38d4 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 12 Oct 2010 11:59:45 +0200 Subject: st/xorg: Add a customizer option to get rid of annoying cursor update flicker Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/xorg_crtc.c | 8 ++++++++ src/gallium/state_trackers/xorg/xorg_driver.c | 4 +++- src/gallium/state_trackers/xorg/xorg_tracker.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_crtc.c b/src/gallium/state_trackers/xorg/xorg_crtc.c index 26a907f205e..c65da71cdba 100644 --- a/src/gallium/state_trackers/xorg/xorg_crtc.c +++ b/src/gallium/state_trackers/xorg/xorg_crtc.c @@ -234,6 +234,10 @@ crtc_load_cursor_argb_ga3d(xf86CrtcPtr crtc, CARD32 * image) 64, 64, (void*)image, 64 * 4, 0, 0); ms->ctx->transfer_unmap(ms->ctx, transfer); ms->ctx->transfer_destroy(ms->ctx, transfer); + + if (crtc->cursor_shown) + drmModeSetCursor(ms->fd, crtcp->drm_crtc->crtc_id, + crtcp->cursor_handle, 64, 64); } #if HAVE_LIBKMS @@ -271,6 +275,10 @@ crtc_load_cursor_argb_kms(xf86CrtcPtr crtc, CARD32 * image) memcpy(ptr, image, 64*64*4); kms_bo_unmap(crtcp->cursor_bo); + if (crtc->cursor_shown) + drmModeSetCursor(ms->fd, crtcp->drm_crtc->crtc_id, + crtcp->cursor_handle, 64, 64); + return; err_bo_destroy: diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 835f06a73b1..f7b3ad3505c 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -791,7 +791,9 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) if (!ms->SWCursor) xf86_cursors_init(pScreen, 64, 64, HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64 | - HARDWARE_CURSOR_ARGB); + HARDWARE_CURSOR_ARGB | + ((cust && cust->unhidden_hw_cursor_update) ? + HARDWARE_CURSOR_UPDATE_UNHIDDEN : 0)); /* Must force it before EnterVT, so we are in control of VT and * later memory should be bound when allocating, e.g rotate_mem */ diff --git a/src/gallium/state_trackers/xorg/xorg_tracker.h b/src/gallium/state_trackers/xorg/xorg_tracker.h index be1a9fda48d..a3fb5e5dad0 100644 --- a/src/gallium/state_trackers/xorg/xorg_tracker.h +++ b/src/gallium/state_trackers/xorg/xorg_tracker.h @@ -76,6 +76,7 @@ typedef struct _CustomizerRec Bool dirty_throttling; Bool swap_throttling; Bool no_3d; + Bool unhidden_hw_cursor_update; Bool (*winsys_pre_init) (struct _CustomizerRec *cust, int fd); Bool (*winsys_screen_init)(struct _CustomizerRec *cust); Bool (*winsys_screen_close)(struct _CustomizerRec *cust); -- cgit v1.2.3 From 201c3d36697fccfee6b6dacf9529d1951f77651c Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 12 Oct 2010 14:10:50 +0200 Subject: xorg/vmwgfx: Don't hide HW cursors when updating them Gets rid of annoying cursor flicker Signed-off-by: Thomas Hellstrom --- src/gallium/targets/xorg-vmwgfx/vmw_screen.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/targets/xorg-vmwgfx/vmw_screen.c b/src/gallium/targets/xorg-vmwgfx/vmw_screen.c index 8173908f551..76622031650 100644 --- a/src/gallium/targets/xorg-vmwgfx/vmw_screen.c +++ b/src/gallium/targets/xorg-vmwgfx/vmw_screen.c @@ -245,6 +245,7 @@ vmw_screen_pre_init(ScrnInfoPtr pScrn, int flags) cust->winsys_enter_vt = vmw_screen_enter_vt; cust->winsys_leave_vt = vmw_screen_leave_vt; cust->no_3d = TRUE; + cust->unhidden_hw_cursor_update = TRUE; vmw->pScrn = pScrn; pScrn->driverPrivate = cust; -- cgit v1.2.3 From b6b7ce84e517cfb7d1c02ef2f389c8f2e5fea04c Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 12 Oct 2010 11:10:59 +0200 Subject: st/xorg: Don't try to remove invalid fbs Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/xorg_driver.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index f7b3ad3505c..ca745393a9a 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -369,6 +369,7 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags) ms = modesettingPTR(pScrn); ms->pEnt = pEnt; ms->cust = cust; + ms->fb_id = 1; pScrn->displayWidth = 640; /* default it */ @@ -864,8 +865,10 @@ drv_leave_vt(int scrnIndex, int flags) } } - drmModeRmFB(ms->fd, ms->fb_id); - ms->fb_id = -1; + if (ms->fb_id != -1) { + drmModeRmFB(ms->fd, ms->fb_id); + ms->fb_id = -1; + } /* idle hardware */ if (!ms->kms) @@ -946,7 +949,6 @@ drv_close_screen(int scrnIndex, ScreenPtr pScreen) } #endif - drmModeRmFB(ms->fd, ms->fb_id); ms->destroy_front_buffer(pScrn); if (ms->exa) -- cgit v1.2.3 From e3ec0fdd546259005c9ed2bf7b05cead2ab95b43 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 12 Oct 2010 14:15:59 +0100 Subject: llmvpipe: improve mm_mullo_epi32 Apply Jose's suggestions for a small but measurable improvement in isosurf. --- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index 19b0bd686a8..c3eefb724cf 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -321,8 +321,8 @@ transpose4_epi32(const __m128i * restrict a, */ static INLINE __m128i mm_mullo_epi32(const __m128i a, const __m128i b) { - __m128i a4 = _mm_srli_si128(a, 4); /* shift by one dword */ - __m128i b4 = _mm_srli_si128(b, 4); /* shift by one dword */ + __m128i a4 = _mm_srli_epi64(a, 32); /* shift by one dword */ + __m128i b4 = _mm_srli_epi64(b, 32); /* shift by one dword */ __m128i ba = _mm_mul_epu32(b, a); /* multply dwords 0, 2 */ __m128i b4a4 = _mm_mul_epu32(b4, a4); /* multiply dwords 1, 3 */ @@ -336,8 +336,7 @@ static INLINE __m128i mm_mullo_epi32(const __m128i a, const __m128i b) #else __m128i mask = _mm_setr_epi32(~0,0,~0,0); __m128i ba_mask = _mm_and_si128(ba, mask); - __m128i b4a4_mask = _mm_and_si128(b4a4, mask); - __m128i b4a4_mask_shift = _mm_slli_si128(b4a4_mask, 4); + __m128i b4a4_mask_shift = _mm_slli_epi64(b4a4, 32); __m128i result = _mm_or_si128(ba_mask, b4a4_mask_shift); #endif -- cgit v1.2.3 From 0ad9d8b5384c64ed57eed986af42508be5467e69 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 12 Oct 2010 08:54:54 -0600 Subject: st/xlib: add some comments --- src/gallium/state_trackers/glx/xlib/xm_st.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/glx/xlib/xm_st.c b/src/gallium/state_trackers/glx/xlib/xm_st.c index 4d0f5e66256..e7466bdbee5 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_st.c +++ b/src/gallium/state_trackers/glx/xlib/xm_st.c @@ -196,7 +196,13 @@ xmesa_st_framebuffer_validate_textures(struct st_framebuffer_iface *stfbi, /** + * Check that a framebuffer's attachments match the window's size. + * * Called via st_framebuffer_iface::validate() + * + * \param statts array of framebuffer attachments + * \param count number of framebuffer attachments in statts[] + * \param out returns resources for each of the attachments */ static boolean xmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, @@ -209,9 +215,11 @@ xmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, boolean resized; boolean ret; + /* build mask of ST_ATTACHMENT bits */ statt_mask = 0x0; for (i = 0; i < count; i++) statt_mask |= 1 << statts[i]; + /* record newly allocated textures */ new_mask = statt_mask & ~xstfb->texture_mask; -- cgit v1.2.3 From 6fbd4faf971a0091815211c4d1385c9a4fb0adc6 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 12 Oct 2010 16:07:38 +0100 Subject: gallivm: Name anonymous union. --- src/gallium/auxiliary/gallivm/lp_bld_tgsi.h | 2 +- src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h index 0173bc4a7fc..a4d3b750c3c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h @@ -76,7 +76,7 @@ struct lp_tgsi_channel_info union { uint32_t index; float value; /* for TGSI_FILE_IMMEDIATE */ - }; + } u; }; diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c index eab72b8eb7d..d1f82610025 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c @@ -74,10 +74,10 @@ analyse_src(struct analysis_context *ctx, if (src->File == TGSI_FILE_IMMEDIATE) { assert(src->Index < Elements(ctx->imm)); if (src->Index < Elements(ctx->imm)) { - chan_info->value = ctx->imm[src->Index][swizzle]; + chan_info->u.value = ctx->imm[src->Index][swizzle]; } } else { - chan_info->index = src->Index; + chan_info->u.index = src->Index; chan_info->swizzle = swizzle; } } @@ -92,7 +92,7 @@ static boolean is_immediate(const struct lp_tgsi_channel_info *chan_info, float value) { return chan_info->file == TGSI_FILE_IMMEDIATE && - chan_info->value == value; + chan_info->u.value == value; } @@ -342,7 +342,7 @@ dump_info(const struct tgsi_token *tokens, if (chan_info->file != TGSI_FILE_NULL) { debug_printf(" %s[%u].%c", tgsi_file_names[chan_info->file], - chan_info->index, + chan_info->u.index, "xyzw01"[chan_info->swizzle]); } else { debug_printf(" _"); @@ -360,7 +360,7 @@ dump_info(const struct tgsi_token *tokens, if (chan_info->file != TGSI_FILE_NULL) { debug_printf("OUT[%u].%c = ", index, "xyzw"[chan]); if (chan_info->file == TGSI_FILE_IMMEDIATE) { - debug_printf("%f", chan_info->value); + debug_printf("%f", chan_info->u.value); } else { const char *file_name; switch (chan_info->file) { @@ -376,7 +376,7 @@ dump_info(const struct tgsi_token *tokens, } debug_printf("%s[%u].%c", file_name, - chan_info->index, + chan_info->u.index, "xyzw01"[chan_info->swizzle]); } debug_printf("\n"); -- cgit v1.2.3 From 893620e52ea2b6ffc2e50f6bd9b7def76c405424 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 12 Oct 2010 18:22:36 +0200 Subject: st/xorg: Fix typo Pointed out by Jakob Bornecrantz. Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/xorg_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index ca745393a9a..3a5db9856d4 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -369,7 +369,7 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags) ms = modesettingPTR(pScrn); ms->pEnt = pEnt; ms->cust = cust; - ms->fb_id = 1; + ms->fb_id = -1; pScrn->displayWidth = 640; /* default it */ -- cgit v1.2.3 From 7533c374570b333b5e0d626d36d18c41d4611cb5 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 12 Oct 2010 18:26:41 +0100 Subject: llvmpipe: make sure intrinsics code is guarded with PIPE_ARCH_SSE --- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 82 +++++++++++++++--------------- 1 file changed, 42 insertions(+), 40 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index c3eefb724cf..bae772b9c50 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -239,46 +239,6 @@ sign_bits4(const __m128i *cstep, int cdiff) return _mm_movemask_epi8(result); } -#endif - - - - -#define TAG(x) x##_1 -#define NR_PLANES 1 -#include "lp_rast_tri_tmp.h" - -#define TAG(x) x##_2 -#define NR_PLANES 2 -#include "lp_rast_tri_tmp.h" - -#define TAG(x) x##_3 -#define NR_PLANES 3 -/*#define TRI_4 lp_rast_triangle_3_4*/ -/*#define TRI_16 lp_rast_triangle_3_16*/ -#include "lp_rast_tri_tmp.h" - -#define TAG(x) x##_4 -#define NR_PLANES 4 -#define TRI_16 lp_rast_triangle_4_16 -#include "lp_rast_tri_tmp.h" - -#define TAG(x) x##_5 -#define NR_PLANES 5 -#include "lp_rast_tri_tmp.h" - -#define TAG(x) x##_6 -#define NR_PLANES 6 -#include "lp_rast_tri_tmp.h" - -#define TAG(x) x##_7 -#define NR_PLANES 7 -#include "lp_rast_tri_tmp.h" - -#define TAG(x) x##_8 -#define NR_PLANES 8 -#include "lp_rast_tri_tmp.h" - static INLINE void transpose4_epi32(const __m128i * restrict a, @@ -537,3 +497,45 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task, 0xffff & ~mask); } } + +#undef NR_PLANES +#endif + + + + +#define TAG(x) x##_1 +#define NR_PLANES 1 +#include "lp_rast_tri_tmp.h" + +#define TAG(x) x##_2 +#define NR_PLANES 2 +#include "lp_rast_tri_tmp.h" + +#define TAG(x) x##_3 +#define NR_PLANES 3 +/*#define TRI_4 lp_rast_triangle_3_4*/ +/*#define TRI_16 lp_rast_triangle_3_16*/ +#include "lp_rast_tri_tmp.h" + +#define TAG(x) x##_4 +#define NR_PLANES 4 +#define TRI_16 lp_rast_triangle_4_16 +#include "lp_rast_tri_tmp.h" + +#define TAG(x) x##_5 +#define NR_PLANES 5 +#include "lp_rast_tri_tmp.h" + +#define TAG(x) x##_6 +#define NR_PLANES 6 +#include "lp_rast_tri_tmp.h" + +#define TAG(x) x##_7 +#define NR_PLANES 7 +#include "lp_rast_tri_tmp.h" + +#define TAG(x) x##_8 +#define NR_PLANES 8 +#include "lp_rast_tri_tmp.h" + -- cgit v1.2.3 From 4ecb2c105da590abf79421a06234b636cd1afcd6 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 6 Oct 2010 09:28:46 +1000 Subject: gallium/tgsi: add support for stencil writes. this adds the capability + a stencil semantic id, + tgsi scan support. Signed-off-by: Dave Airlie --- src/gallium/auxiliary/tgsi/tgsi_dump.c | 3 ++- src/gallium/auxiliary/tgsi/tgsi_scan.c | 8 +++++--- src/gallium/auxiliary/tgsi/tgsi_scan.h | 1 + src/gallium/docs/source/tgsi.rst | 6 ++++++ src/gallium/drivers/softpipe/sp_fs_exec.c | 12 ++++++++++-- src/gallium/include/pipe/p_defines.h | 3 ++- src/gallium/include/pipe/p_shader_tokens.h | 3 ++- 7 files changed, 28 insertions(+), 8 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c b/src/gallium/auxiliary/tgsi/tgsi_dump.c index 9b61797ace9..77bde86684e 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_dump.c +++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c @@ -126,7 +126,8 @@ static const char *semantic_names[] = "FACE", "EDGEFLAG", "PRIM_ID", - "INSTANCEID" + "INSTANCEID", + "STENCIL" }; static const char *immediate_type_names[] = diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c index 90198a4f604..538274887b9 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.c +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c @@ -157,9 +157,11 @@ tgsi_scan_shader(const struct tgsi_token *tokens, /* extra info for special outputs */ if (procType == TGSI_PROCESSOR_FRAGMENT && - fulldecl->Semantic.Name == TGSI_SEMANTIC_POSITION) { - info->writes_z = TRUE; - } + fulldecl->Semantic.Name == TGSI_SEMANTIC_POSITION) + info->writes_z = TRUE; + if (procType == TGSI_PROCESSOR_FRAGMENT && + fulldecl->Semantic.Name == TGSI_SEMANTIC_STENCIL) + info->writes_stencil = TRUE; if (procType == TGSI_PROCESSOR_VERTEX && fulldecl->Semantic.Name == TGSI_SEMANTIC_EDGEFLAG) { info->writes_edgeflag = TRUE; diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h index f8aa90cf065..374c7ed551d 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.h +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h @@ -60,6 +60,7 @@ struct tgsi_shader_info uint opcode_count[TGSI_OPCODE_LAST]; /**< opcode histogram */ boolean writes_z; /**< does fragment shader write Z value? */ + boolean writes_stencil; /**< does fragment shader write stencil value? */ boolean writes_edgeflag; /**< vertex shader outputs edgeflag */ boolean uses_kill; /**< KIL or KILP instruction used? */ diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index 9e02d43ab74..c767680c62a 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -1415,6 +1415,12 @@ Edge flags are used to control which lines or points are actually drawn when the polygon mode converts triangles/quads/polygons into points or lines. +TGSI_SEMANTIC_STENCIL +"""""""""""""""""""""" + +For fragment shaders, this semantic label indicates than an output +is a writable stencil reference value. Only the Y component is writable. +This allows the fragment shader to change the fragments stencilref value. Properties diff --git a/src/gallium/drivers/softpipe/sp_fs_exec.c b/src/gallium/drivers/softpipe/sp_fs_exec.c index 67e2c8f8bc4..346e1b402ba 100644 --- a/src/gallium/drivers/softpipe/sp_fs_exec.c +++ b/src/gallium/drivers/softpipe/sp_fs_exec.c @@ -158,9 +158,17 @@ exec_run( const struct sp_fragment_shader *base, case TGSI_SEMANTIC_POSITION: { uint j; - for (j = 0; j < 4; j++) { + + for (j = 0; j < 4; j++) quad->output.depth[j] = machine->Outputs[i].xyzw[2].f[j]; - } + } + break; + case TGSI_SEMANTIC_STENCIL: + { + uint j; + + for (j = 0; j < 4; j++) + quad->output.stencil[j] = (unsigned)machine->Outputs[i].xyzw[1].f[j]; } break; } diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 8b4663742fa..b6894c09e82 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -464,7 +464,8 @@ enum pipe_cap { PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER, - PIPE_CAP_DEPTH_CLAMP + PIPE_CAP_DEPTH_CLAMP, + PIPE_CAP_SHADER_STENCIL_EXPORT, }; /* Shader caps not specific to any single stage */ diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h index 74488de17eb..ba433b2bd2a 100644 --- a/src/gallium/include/pipe/p_shader_tokens.h +++ b/src/gallium/include/pipe/p_shader_tokens.h @@ -143,7 +143,8 @@ struct tgsi_declaration_dimension #define TGSI_SEMANTIC_EDGEFLAG 8 #define TGSI_SEMANTIC_PRIMID 9 #define TGSI_SEMANTIC_INSTANCEID 10 -#define TGSI_SEMANTIC_COUNT 11 /**< number of semantic values */ +#define TGSI_SEMANTIC_STENCIL 11 +#define TGSI_SEMANTIC_COUNT 12 /**< number of semantic values */ struct tgsi_declaration_semantic { -- cgit v1.2.3 From 66a0d1e4b930902810a5825193c4057626a51558 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 6 Oct 2010 09:30:17 +1000 Subject: gallium/format: add support for X24S8 and S8X24 formats. these formats are needed for hw that can sample and write stencil values. Signed-off-by: Dave Airlie --- src/gallium/auxiliary/util/u_format.csv | 2 ++ src/gallium/auxiliary/util/u_format_zs.c | 32 ++++++++++++++++++ src/gallium/auxiliary/util/u_format_zs.h | 11 ++++++ src/gallium/auxiliary/util/u_tile.c | 57 ++++++++++++++++++++++++++++++++ src/gallium/docs/source/tgsi.rst | 2 ++ src/gallium/include/pipe/p_format.h | 3 ++ 6 files changed, 107 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_format.csv b/src/gallium/auxiliary/util/u_format.csv index 016e73c4a1d..5c0f8db1b25 100644 --- a/src/gallium/auxiliary/util/u_format.csv +++ b/src/gallium/auxiliary/util/u_format.csv @@ -109,6 +109,8 @@ PIPE_FORMAT_Z32_UNORM , plain, 1, 1, un32, , , , x___, PIPE_FORMAT_Z32_FLOAT , plain, 1, 1, f32 , , , , x___, zs PIPE_FORMAT_Z24_UNORM_S8_USCALED , plain, 1, 1, un24, u8 , , , xy__, zs PIPE_FORMAT_S8_USCALED_Z24_UNORM , plain, 1, 1, u8 , un24, , , yx__, zs +PIPE_FORMAT_X24S8_USCALED , plain, 1, 1, x24, u8 , , , _y__, zs +PIPE_FORMAT_S8X24_USCALED , plain, 1, 1, u8 , x24 , , , _x__, zs PIPE_FORMAT_Z24X8_UNORM , plain, 1, 1, un24, x8 , , , x___, zs PIPE_FORMAT_X8Z24_UNORM , plain, 1, 1, x8 , un24, , , y___, zs PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED , plain, 1, 1, f32, u8 , x24 , , xy__, zs diff --git a/src/gallium/auxiliary/util/u_format_zs.c b/src/gallium/auxiliary/util/u_format_zs.c index 792d69c214c..fdadcec984f 100644 --- a/src/gallium/auxiliary/util/u_format_zs.c +++ b/src/gallium/auxiliary/util/u_format_zs.c @@ -918,3 +918,35 @@ util_format_z32_float_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned d } } + +void +util_format_x24s8_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) +{ + util_format_z24_unorm_s8_uscaled_unpack_s_8uscaled(dst_row, dst_stride, + src_row, src_stride, + width, height); +} + +void +util_format_x24s8_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) +{ + util_format_z24_unorm_s8_uscaled_pack_s_8uscaled(dst_row, dst_stride, + src_row, src_stride, + width, height); +} + +void +util_format_s8x24_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) +{ + util_format_s8_uscaled_z24_unorm_unpack_s_8uscaled(dst_row, dst_stride, + src_row, src_stride, + width, height); +} + +void +util_format_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) +{ + util_format_s8_uscaled_z24_unorm_pack_s_8uscaled(dst_row, dst_stride, + src_row, src_stride, + width, height); +} diff --git a/src/gallium/auxiliary/util/u_format_zs.h b/src/gallium/auxiliary/util/u_format_zs.h index 650db4b95fd..d412ca4c110 100644 --- a/src/gallium/auxiliary/util/u_format_zs.h +++ b/src/gallium/auxiliary/util/u_format_zs.h @@ -192,5 +192,16 @@ util_format_z32_float_s8x24_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned void util_format_z32_float_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); +void +util_format_x24s8_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); + +void +util_format_x24s8_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); + +void +util_format_s8x24_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); + +void +util_format_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); #endif /* U_FORMAT_ZS_H_ */ diff --git a/src/gallium/auxiliary/util/u_tile.c b/src/gallium/auxiliary/util/u_tile.c index f7aa1403d08..3099bc6f487 100644 --- a/src/gallium/auxiliary/util/u_tile.c +++ b/src/gallium/auxiliary/util/u_tile.c @@ -217,6 +217,57 @@ z24s8_get_tile_rgba(const unsigned *src, } } +/*** PIPE_FORMAT_S8X24_USCALED ***/ + +/** + * Return S component as four uint32_t in [0..255]. Z part ignored. + */ +static void +s8x24_get_tile_rgba(const unsigned *src, + unsigned w, unsigned h, + float *p, + unsigned dst_stride) +{ + unsigned i, j; + + for (i = 0; i < h; i++) { + float *pRow = p; + + for (j = 0; j < w; j++, pRow += 4) { + pRow[0] = + pRow[1] = + pRow[2] = + pRow[3] = (float)((*src++ >> 24) & 0xff); + } + + p += dst_stride; + } +} + +/*** PIPE_FORMAT_X24S8_USCALED ***/ + +/** + * Return S component as four uint32_t in [0..255]. Z part ignored. + */ +static void +x24s8_get_tile_rgba(const unsigned *src, + unsigned w, unsigned h, + float *p, + unsigned dst_stride) +{ + unsigned i, j; + + for (i = 0; i < h; i++) { + float *pRow = p; + for (j = 0; j < w; j++, pRow += 4) { + pRow[0] = + pRow[1] = + pRow[2] = + pRow[3] = (float)(*src++ & 0xff); + } + p += dst_stride; + } +} /*** PIPE_FORMAT_Z32_FLOAT ***/ @@ -261,10 +312,16 @@ pipe_tile_raw_to_rgba(enum pipe_format format, case PIPE_FORMAT_Z24X8_UNORM: s8z24_get_tile_rgba((unsigned *) src, w, h, dst, dst_stride); break; + case PIPE_FORMAT_X24S8_USCALED: + s8x24_get_tile_rgba((unsigned *) src, w, h, dst, dst_stride); + break; case PIPE_FORMAT_S8_USCALED_Z24_UNORM: case PIPE_FORMAT_X8Z24_UNORM: z24s8_get_tile_rgba((unsigned *) src, w, h, dst, dst_stride); break; + case PIPE_FORMAT_S8X24_USCALED: + x24s8_get_tile_rgba((unsigned *) src, w, h, dst, dst_stride); + break; case PIPE_FORMAT_Z32_FLOAT: z32f_get_tile_rgba((float *) src, w, h, dst, dst_stride); break; diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index c767680c62a..d99ed7c6d6b 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -1499,6 +1499,8 @@ well. | Z | XXX TBD | (z, z, z, 1) | (0, z, 0, 1) | | | | [#depth-tex-mode]_ | | +--------------------+--------------+--------------------+--------------+ +| S | (s, s, s, s) | unknown | unknown | ++--------------------+--------------+--------------------+--------------+ .. [#envmap-bumpmap] http://www.opengl.org/registry/specs/ATI/envmap_bumpmap.txt .. [#depth-tex-mode] the default is (z, z, z, 1) but may also be (0, 0, 0, z) diff --git a/src/gallium/include/pipe/p_format.h b/src/gallium/include/pipe/p_format.h index 06412f4894c..9978e5236fa 100644 --- a/src/gallium/include/pipe/p_format.h +++ b/src/gallium/include/pipe/p_format.h @@ -186,6 +186,9 @@ enum pipe_format { PIPE_FORMAT_R8G8B8X8_UNORM = 134, PIPE_FORMAT_B4G4R4X4_UNORM = 135, + /* some stencil samplers formats */ + PIPE_FORMAT_X24S8_USCALED = 136, + PIPE_FORMAT_S8X24_USCALED = 137, PIPE_FORMAT_COUNT }; -- cgit v1.2.3 From 67e71429f13aedf1cc8bf444708a7aa65223ac0a Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 7 Oct 2010 16:14:59 +1000 Subject: gallium/format: add X32_S8X24_USCALED format. Has similiar use cases to the S8X24 and X24S8 formats. --- src/gallium/auxiliary/util/u_format.csv | 1 + src/gallium/auxiliary/util/u_format_zs.c | 21 +++++++++++++++++++++ src/gallium/auxiliary/util/u_format_zs.h | 5 +++++ src/gallium/include/pipe/p_format.h | 1 + 4 files changed, 28 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_format.csv b/src/gallium/auxiliary/util/u_format.csv index 5c0f8db1b25..1fbd83841c1 100644 --- a/src/gallium/auxiliary/util/u_format.csv +++ b/src/gallium/auxiliary/util/u_format.csv @@ -114,6 +114,7 @@ PIPE_FORMAT_S8X24_USCALED , plain, 1, 1, u8 , x24 , , , _x__, PIPE_FORMAT_Z24X8_UNORM , plain, 1, 1, un24, x8 , , , x___, zs PIPE_FORMAT_X8Z24_UNORM , plain, 1, 1, x8 , un24, , , y___, zs PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED , plain, 1, 1, f32, u8 , x24 , , xy__, zs +PIPE_FORMAT_X32_S8X24_USCALED , plain, 1, 1, x32, u8 , x24 , , _y__, zs # YUV formats # http://www.fourcc.org/yuv.php#UYVY diff --git a/src/gallium/auxiliary/util/u_format_zs.c b/src/gallium/auxiliary/util/u_format_zs.c index fdadcec984f..80081e22f7c 100644 --- a/src/gallium/auxiliary/util/u_format_zs.c +++ b/src/gallium/auxiliary/util/u_format_zs.c @@ -950,3 +950,24 @@ util_format_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, src_row, src_stride, width, height); } + +void +util_format_x32_s8x24_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height) +{ + util_format_z32_float_s8x24_uscaled_unpack_s_8uscaled(dst_row, dst_stride, + src_row, src_stride, + width, height); + +} + +void +util_format_x32_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height) +{ + util_format_z32_float_s8x24_uscaled_pack_s_8uscaled(dst_row, dst_stride, + src_row, src_stride, + width, height); +} diff --git a/src/gallium/auxiliary/util/u_format_zs.h b/src/gallium/auxiliary/util/u_format_zs.h index d412ca4c110..1604cc3eee2 100644 --- a/src/gallium/auxiliary/util/u_format_zs.h +++ b/src/gallium/auxiliary/util/u_format_zs.h @@ -204,4 +204,9 @@ util_format_s8x24_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned dst_strid void util_format_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); +void +util_format_x32_s8x24_uscaled_unpack_s_8uscaled(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); + +void +util_format_x32_s8x24_uscaled_pack_s_8uscaled(uint8_t *dst_row, unsigned dst_sride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); #endif /* U_FORMAT_ZS_H_ */ diff --git a/src/gallium/include/pipe/p_format.h b/src/gallium/include/pipe/p_format.h index 9978e5236fa..22cc7aa18a2 100644 --- a/src/gallium/include/pipe/p_format.h +++ b/src/gallium/include/pipe/p_format.h @@ -189,6 +189,7 @@ enum pipe_format { /* some stencil samplers formats */ PIPE_FORMAT_X24S8_USCALED = 136, PIPE_FORMAT_S8X24_USCALED = 137, + PIPE_FORMAT_X32_S8X24_USCALED = 138, PIPE_FORMAT_COUNT }; -- cgit v1.2.3 From d02993c9dcdf8171a733a4da06236accf4e7d78f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 7 Oct 2010 15:34:31 +1000 Subject: gallium/util: add S8 tile sampling support. --- src/gallium/auxiliary/util/u_tile.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_tile.c b/src/gallium/auxiliary/util/u_tile.c index 3099bc6f487..44cadbfcdd0 100644 --- a/src/gallium/auxiliary/util/u_tile.c +++ b/src/gallium/auxiliary/util/u_tile.c @@ -269,6 +269,30 @@ x24s8_get_tile_rgba(const unsigned *src, } } + +/** + * Return S component as four uint32_t in [0..255]. Z part ignored. + */ +static void +s8_get_tile_rgba(const unsigned char *src, + unsigned w, unsigned h, + float *p, + unsigned dst_stride) +{ + unsigned i, j; + + for (i = 0; i < h; i++) { + float *pRow = p; + for (j = 0; j < w; j++, pRow += 4) { + pRow[0] = + pRow[1] = + pRow[2] = + pRow[3] = (float)(*src++ & 0xff); + } + p += dst_stride; + } +} + /*** PIPE_FORMAT_Z32_FLOAT ***/ /** @@ -312,6 +336,9 @@ pipe_tile_raw_to_rgba(enum pipe_format format, case PIPE_FORMAT_Z24X8_UNORM: s8z24_get_tile_rgba((unsigned *) src, w, h, dst, dst_stride); break; + case PIPE_FORMAT_S8_USCALED: + s8_get_tile_rgba((unsigned char *) src, w, h, dst, dst_stride); + break; case PIPE_FORMAT_X24S8_USCALED: s8x24_get_tile_rgba((unsigned *) src, w, h, dst, dst_stride); break; -- cgit v1.2.3 From d8f6ef456581644ab9444a1ed23542c2b0fff9e4 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 6 Oct 2010 09:32:32 +1000 Subject: softpipe: add support for shader stencil export capability this allows softpipe to be used to test shader stencil ref exporting. Signed-off-by: Dave Airlie --- src/gallium/drivers/softpipe/sp_fs_sse.c | 12 +++-- src/gallium/drivers/softpipe/sp_quad.h | 1 + src/gallium/drivers/softpipe/sp_quad_depth_test.c | 61 ++++++++++++++++++++--- src/gallium/drivers/softpipe/sp_quad_pipe.c | 3 +- src/gallium/drivers/softpipe/sp_screen.c | 2 + 5 files changed, 67 insertions(+), 12 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/softpipe/sp_fs_sse.c b/src/gallium/drivers/softpipe/sp_fs_sse.c index daa158df7c4..5b18cd035e3 100644 --- a/src/gallium/drivers/softpipe/sp_fs_sse.c +++ b/src/gallium/drivers/softpipe/sp_fs_sse.c @@ -169,9 +169,15 @@ fs_sse_run( const struct sp_fragment_shader *base, case TGSI_SEMANTIC_POSITION: { uint j; - for (j = 0; j < 4; j++) { - quad->output.depth[j] = machine->Outputs[0].xyzw[2].f[j]; - } + for (j = 0; j < 4; j++) + quad->output.depth[j] = machine->Outputs[i].xyzw[2].f[j]; + } + break; + case TGSI_SEMANTIC_STENCIL: + { + uint j; + for (j = 0; j < 4; j++) + quad->output.stencil[j] = machine->Outputs[i].xyzw[1].f[j]; } break; } diff --git a/src/gallium/drivers/softpipe/sp_quad.h b/src/gallium/drivers/softpipe/sp_quad.h index a3236bd1169..e745aa80619 100644 --- a/src/gallium/drivers/softpipe/sp_quad.h +++ b/src/gallium/drivers/softpipe/sp_quad.h @@ -85,6 +85,7 @@ struct quad_header_output /** colors in SOA format (rrrr, gggg, bbbb, aaaa) */ float color[PIPE_MAX_COLOR_BUFS][NUM_CHANNELS][QUAD_SIZE]; float depth[QUAD_SIZE]; + uint8_t stencil[QUAD_SIZE]; }; diff --git a/src/gallium/drivers/softpipe/sp_quad_depth_test.c b/src/gallium/drivers/softpipe/sp_quad_depth_test.c index e9b92626176..c8f5f89568a 100644 --- a/src/gallium/drivers/softpipe/sp_quad_depth_test.c +++ b/src/gallium/drivers/softpipe/sp_quad_depth_test.c @@ -47,6 +47,8 @@ struct depth_data { unsigned bzzzz[QUAD_SIZE]; /**< Z values fetched from depth buffer */ unsigned qzzzz[QUAD_SIZE]; /**< Z values from the quad */ ubyte stencilVals[QUAD_SIZE]; + boolean use_shader_stencil_refs; + ubyte shader_stencil_refs[QUAD_SIZE]; struct softpipe_cached_tile *tile; }; @@ -186,6 +188,33 @@ convert_quad_depth( struct depth_data *data, } +/** + * Compute the depth_data::shader_stencil_refs[] values from the float fragment stencil values. + */ +static void +convert_quad_stencil( struct depth_data *data, + const struct quad_header *quad ) +{ + unsigned j; + + data->use_shader_stencil_refs = TRUE; + /* Copy quads stencil values + */ + switch (data->format) { + case PIPE_FORMAT_Z24X8_UNORM: + case PIPE_FORMAT_Z24_UNORM_S8_USCALED: + case PIPE_FORMAT_X8Z24_UNORM: + case PIPE_FORMAT_S8_USCALED_Z24_UNORM: + { + for (j = 0; j < QUAD_SIZE; j++) { + data->shader_stencil_refs[j] = ((unsigned)(quad->output.stencil[j])); + } + } + break; + default: + assert(0); + } +} /** * Write data->bzzzz[] values and data->stencilVals into the Z/stencil buffer. @@ -272,8 +301,14 @@ do_stencil_test(struct depth_data *data, { unsigned passMask = 0x0; unsigned j; + ubyte refs[QUAD_SIZE]; - ref &= valMask; + for (j = 0; j < QUAD_SIZE; j++) { + if (data->use_shader_stencil_refs) + refs[j] = data->shader_stencil_refs[j] & valMask; + else + refs[j] = ref & valMask; + } switch (func) { case PIPE_FUNC_NEVER: @@ -281,42 +316,42 @@ do_stencil_test(struct depth_data *data, break; case PIPE_FUNC_LESS: for (j = 0; j < QUAD_SIZE; j++) { - if (ref < (data->stencilVals[j] & valMask)) { + if (refs[j] < (data->stencilVals[j] & valMask)) { passMask |= (1 << j); } } break; case PIPE_FUNC_EQUAL: for (j = 0; j < QUAD_SIZE; j++) { - if (ref == (data->stencilVals[j] & valMask)) { + if (refs[j] == (data->stencilVals[j] & valMask)) { passMask |= (1 << j); } } break; case PIPE_FUNC_LEQUAL: for (j = 0; j < QUAD_SIZE; j++) { - if (ref <= (data->stencilVals[j] & valMask)) { + if (refs[j] <= (data->stencilVals[j] & valMask)) { passMask |= (1 << j); } } break; case PIPE_FUNC_GREATER: for (j = 0; j < QUAD_SIZE; j++) { - if (ref > (data->stencilVals[j] & valMask)) { + if (refs[j] > (data->stencilVals[j] & valMask)) { passMask |= (1 << j); } } break; case PIPE_FUNC_NOTEQUAL: for (j = 0; j < QUAD_SIZE; j++) { - if (ref != (data->stencilVals[j] & valMask)) { + if (refs[j] != (data->stencilVals[j] & valMask)) { passMask |= (1 << j); } } break; case PIPE_FUNC_GEQUAL: for (j = 0; j < QUAD_SIZE; j++) { - if (ref >= (data->stencilVals[j] & valMask)) { + if (refs[j] >= (data->stencilVals[j] & valMask)) { passMask |= (1 << j); } } @@ -348,9 +383,14 @@ apply_stencil_op(struct depth_data *data, { unsigned j; ubyte newstencil[QUAD_SIZE]; + ubyte refs[QUAD_SIZE]; for (j = 0; j < QUAD_SIZE; j++) { newstencil[j] = data->stencilVals[j]; + if (data->use_shader_stencil_refs) + refs[j] = data->shader_stencil_refs[j]; + else + refs[j] = ref; } switch (op) { @@ -367,7 +407,7 @@ apply_stencil_op(struct depth_data *data, case PIPE_STENCIL_OP_REPLACE: for (j = 0; j < QUAD_SIZE; j++) { if (mask & (1 << j)) { - newstencil[j] = ref; + newstencil[j] = refs[j]; } } break; @@ -688,8 +728,10 @@ depth_test_quads_fallback(struct quad_stage *qs, unsigned i, pass = 0; const struct sp_fragment_shader *fs = qs->softpipe->fs; boolean interp_depth = !fs->info.writes_z; + boolean shader_stencil_ref = fs->info.writes_stencil; struct depth_data data; + data.use_shader_stencil_refs = FALSE; if (qs->softpipe->depth_stencil->alpha.enabled) { nr = alpha_test_quads(qs, quads, nr); @@ -716,6 +758,9 @@ depth_test_quads_fallback(struct quad_stage *qs, } if (qs->softpipe->depth_stencil->stencil[0].enabled) { + if (shader_stencil_ref) + convert_quad_stencil(&data, quads[i]); + depth_stencil_test_quad(qs, &data, quads[i]); write_depth_stencil_values(&data, quads[i]); } diff --git a/src/gallium/drivers/softpipe/sp_quad_pipe.c b/src/gallium/drivers/softpipe/sp_quad_pipe.c index 43b8e88e334..2cfd02a22c6 100644 --- a/src/gallium/drivers/softpipe/sp_quad_pipe.c +++ b/src/gallium/drivers/softpipe/sp_quad_pipe.c @@ -47,7 +47,8 @@ sp_build_quad_pipeline(struct softpipe_context *sp) sp->framebuffer.zsbuf && !sp->depth_stencil->alpha.enabled && !sp->fs->info.uses_kill && - !sp->fs->info.writes_z; + !sp->fs->info.writes_z && + !sp->fs->info.writes_stencil; sp->quad.first = sp->quad.blend; diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 2053d02f628..37557d11940 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -114,6 +114,8 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 1; case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: return 0; + case PIPE_CAP_SHADER_STENCIL_EXPORT: + return 1; default: return 0; } -- cgit v1.2.3 From 40acb109de61ba445b9247f7d53eaf1c2b9b1245 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 7 Oct 2010 13:01:37 +1000 Subject: r600g: add support for S8, X24S8 and S8X24 sampler formats. --- src/gallium/drivers/r600/r600_texture.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index db88346afbe..496b28a3b9c 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -498,14 +498,22 @@ uint32_t r600_translate_texformat(enum pipe_format format, case PIPE_FORMAT_Z16_UNORM: result = V_0280A0_COLOR_16; goto out_word4; + case PIPE_FORMAT_X24S8_USCALED: + word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_INT); case PIPE_FORMAT_Z24X8_UNORM: case PIPE_FORMAT_Z24_UNORM_S8_USCALED: result = V_0280A0_COLOR_8_24; goto out_word4; + case PIPE_FORMAT_S8X24_USCALED: + word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_INT); case PIPE_FORMAT_X8Z24_UNORM: case PIPE_FORMAT_S8_USCALED_Z24_UNORM: result = V_0280A0_COLOR_24_8; goto out_word4; + case PIPE_FORMAT_S8_USCALED: + result = V_0280A0_COLOR_8; + word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_INT); + goto out_word4; default: goto out_unknown; } -- cgit v1.2.3 From 39d1feb51e9dac794751e72f48faf26409a84b1c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 6 Oct 2010 10:14:33 +1000 Subject: r600g: add shader stencil export support. --- src/gallium/drivers/r600/r600_pipe.c | 1 + src/gallium/drivers/r600/r600_shader.c | 16 ++++++++++++++-- src/gallium/drivers/r600/r600d.h | 3 +++ 3 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 832a2b2b606..52fe3c777b3 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -242,6 +242,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_INDEP_BLEND_ENABLE: case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: case PIPE_CAP_DEPTH_CLAMP: + case PIPE_CAP_SHADER_STENCIL_EXPORT: return 1; /* Unsupported features (boolean caps). */ diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 341800306d6..8930d4e1831 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -137,12 +137,17 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade R_02880C_DB_SHADER_CONTROL, S_02880C_Z_EXPORT_ENABLE(1), S_02880C_Z_EXPORT_ENABLE(1), NULL); + if (rshader->output[i].name == TGSI_SEMANTIC_STENCIL) + r600_pipe_state_add_reg(rstate, + R_02880C_DB_SHADER_CONTROL, + S_02880C_STENCIL_REF_EXPORT_ENABLE(1), + S_02880C_STENCIL_REF_EXPORT_ENABLE(1), NULL); } exports_ps = 0; num_cout = 0; for (i = 0; i < rshader->noutput; i++) { - if (rshader->output[i].name == TGSI_SEMANTIC_POSITION) + if (rshader->output[i].name == TGSI_SEMANTIC_POSITION || rshader->output[i].name == TGSI_SEMANTIC_STENCIL) exports_ps |= 1; else if (rshader->output[i].name == TGSI_SEMANTIC_COLOR) { num_cout++; @@ -628,7 +633,14 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s } else if (shader->output[i].name == TGSI_SEMANTIC_POSITION) { output[i].array_base = 61; output[i].swizzle_x = 2; - output[i].swizzle_y = output[i].swizzle_z = output[i].swizzle_w = 7; + output[i].swizzle_y = 7; + output[i].swizzle_z = output[i].swizzle_w = 7; + output[i].type = V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PIXEL; + } else if (shader->output[i].name == TGSI_SEMANTIC_STENCIL) { + output[i].array_base = 61; + output[i].swizzle_x = 7; + output[i].swizzle_y = 1; + output[i].swizzle_z = output[i].swizzle_w = 7; output[i].type = V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PIXEL; } else { R600_ERR("unsupported fragment output name %d\n", shader->output[i].name); diff --git a/src/gallium/drivers/r600/r600d.h b/src/gallium/drivers/r600/r600d.h index a96d2ce26c1..f32f5286c95 100644 --- a/src/gallium/drivers/r600/r600d.h +++ b/src/gallium/drivers/r600/r600d.h @@ -667,6 +667,9 @@ #define S_02880C_Z_EXPORT_ENABLE(x) (((x) & 0x1) << 0) #define G_02880C_Z_EXPORT_ENABLE(x) (((x) >> 0) & 0x1) #define C_02880C_Z_EXPORT_ENABLE 0xFFFFFFFE +#define S_02880C_STENCIL_REF_EXPORT_ENABLE(x) (((x) & 0x1) << 1) +#define G_02880C_STENCIL_REF_EXPORT_ENABLE(x) (((x) >> 1) & 0x1) +#define C_02880C_STENCIL_REF_EXPORT_ENABLE 0xFFFFFFFD #define S_02880C_Z_ORDER(x) (((x) & 0x3) << 4) #define G_02880C_Z_ORDER(x) (((x) >> 4) & 0x3) #define C_02880C_Z_ORDER 0xFFFFFCFF -- cgit v1.2.3 From c1549729ce5243fb7fec7b589278656b8b1ab4fb Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Wed, 13 Oct 2010 02:34:08 +0200 Subject: gallivm: fix different handling of [non]normalized coords in linear soa path There seems to be no reason for it, so do same math for both (except the scale mul, of course). --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index af3f4688ede..8c03284621c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -294,23 +294,13 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, if (bld->static_state->normalized_coords) { /* mul by tex size */ coord = lp_build_mul(coord_bld, coord, length_f); - /* clamp to length max */ - coord = lp_build_min(coord_bld, coord, length_f); - /* subtract 0.5 */ - coord = lp_build_sub(coord_bld, coord, half); - /* clamp to [0, length - 0.5] */ - coord = lp_build_max(coord_bld, coord, coord_bld->zero); - } - /* XXX this is odd normalized ranges from 0 to length-0.5 after denorm - but non-normalized ranges from to 0.5 to length-0.5 after clamp. - Is this missing the sub 0.5? */ - else { - LLVMValueRef min, max; - /* clamp to [0.5, length - 0.5] */ - min = half; - max = lp_build_sub(coord_bld, length_f, min); - coord = lp_build_clamp(coord_bld, coord, min, max); } + /* clamp to length max */ + coord = lp_build_min(coord_bld, coord, length_f); + /* subtract 0.5 */ + coord = lp_build_sub(coord_bld, coord, half); + /* clamp to [0, length - 0.5] */ + coord = lp_build_max(coord_bld, coord, coord_bld->zero); /* convert to int, compute lerp weight */ lp_build_ifloor_fract(&abs_coord_bld, coord, &coord0, &weight); coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one); -- cgit v1.2.3 From 50f221a01b45cc1e00ed3462b8084d5b6a8a46aa Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 12 Oct 2010 18:37:30 -0600 Subject: gallivm: remove newlines --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 2c049d02934..00f419a486d 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -1423,8 +1423,6 @@ lp_build_ifloor_fract(struct lp_build_context *bld, LLVMValueRef *out_ipart, LLVMValueRef *out_fpart) { - - const struct lp_type type = bld->type; LLVMValueRef ipart; -- cgit v1.2.3 From 048a90c1cb926fdeae47392582cb91b0a689905f Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 12 Oct 2010 18:38:22 -0600 Subject: draw/llvmpipe: replace DRAW_MAX_TEXTURE_LEVELS with PIPE_MAX_TEXTURE_LEVELS There's no apparent reason for the former to exist. And they didn't even have the same value. --- src/gallium/auxiliary/draw/draw_context.c | 6 +++--- src/gallium/auxiliary/draw/draw_context.h | 7 +++---- src/gallium/auxiliary/draw/draw_llvm.c | 12 ++++++------ src/gallium/auxiliary/draw/draw_llvm.h | 13 ++++++------- src/gallium/drivers/llvmpipe/lp_state_sampler.c | 6 +++--- 5 files changed, 21 insertions(+), 23 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index 032fcbbc70a..40f654643bb 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -721,9 +721,9 @@ draw_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, uint32_t last_level, - uint32_t row_stride[DRAW_MAX_TEXTURE_LEVELS], - uint32_t img_stride[DRAW_MAX_TEXTURE_LEVELS], - const void *data[DRAW_MAX_TEXTURE_LEVELS]) + uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], + uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], + const void *data[PIPE_MAX_TEXTURE_LEVELS]) { #ifdef HAVE_LLVM if(draw->llvm) diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h index 1f27cbf488a..ff4f753604f 100644 --- a/src/gallium/auxiliary/draw/draw_context.h +++ b/src/gallium/auxiliary/draw/draw_context.h @@ -49,7 +49,6 @@ struct draw_geometry_shader; struct draw_fragment_shader; struct tgsi_sampler; -#define DRAW_MAX_TEXTURE_LEVELS 13 /* 4K x 4K for now */ struct draw_context *draw_create( struct pipe_context *pipe ); @@ -120,9 +119,9 @@ draw_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, uint32_t last_level, - uint32_t row_stride[DRAW_MAX_TEXTURE_LEVELS], - uint32_t img_stride[DRAW_MAX_TEXTURE_LEVELS], - const void *data[DRAW_MAX_TEXTURE_LEVELS]); + uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], + uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], + const void *data[PIPE_MAX_TEXTURE_LEVELS]); /* diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 7fb86d7cb27..d94340367c4 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -72,12 +72,12 @@ init_globals(struct draw_llvm *llvm) elem_types[DRAW_JIT_TEXTURE_DEPTH] = LLVMInt32Type(); elem_types[DRAW_JIT_TEXTURE_LAST_LEVEL] = LLVMInt32Type(); elem_types[DRAW_JIT_TEXTURE_ROW_STRIDE] = - LLVMArrayType(LLVMInt32Type(), DRAW_MAX_TEXTURE_LEVELS); + LLVMArrayType(LLVMInt32Type(), PIPE_MAX_TEXTURE_LEVELS); elem_types[DRAW_JIT_TEXTURE_IMG_STRIDE] = - LLVMArrayType(LLVMInt32Type(), DRAW_MAX_TEXTURE_LEVELS); + LLVMArrayType(LLVMInt32Type(), PIPE_MAX_TEXTURE_LEVELS); elem_types[DRAW_JIT_TEXTURE_DATA] = LLVMArrayType(LLVMPointerType(LLVMInt8Type(), 0), - DRAW_MAX_TEXTURE_LEVELS); + PIPE_MAX_TEXTURE_LEVELS); elem_types[DRAW_JIT_TEXTURE_MIN_LOD] = LLVMFloatType(); elem_types[DRAW_JIT_TEXTURE_MAX_LOD] = LLVMFloatType(); elem_types[DRAW_JIT_TEXTURE_LOD_BIAS] = LLVMFloatType(); @@ -1066,9 +1066,9 @@ draw_llvm_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, uint32_t last_level, - uint32_t row_stride[DRAW_MAX_TEXTURE_LEVELS], - uint32_t img_stride[DRAW_MAX_TEXTURE_LEVELS], - const void *data[DRAW_MAX_TEXTURE_LEVELS]) + uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], + uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], + const void *data[PIPE_MAX_TEXTURE_LEVELS]) { unsigned j; struct draw_jit_texture *jit_tex; diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index d0a68ae412d..de89b657f3d 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -41,7 +41,6 @@ #include #include -#define DRAW_MAX_TEXTURE_LEVELS 13 /* 4K x 4K for now */ struct draw_llvm; struct llvm_vertex_shader; @@ -52,9 +51,9 @@ struct draw_jit_texture uint32_t height; uint32_t depth; uint32_t last_level; - uint32_t row_stride[DRAW_MAX_TEXTURE_LEVELS]; - uint32_t img_stride[DRAW_MAX_TEXTURE_LEVELS]; - const void *data[DRAW_MAX_TEXTURE_LEVELS]; + uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS]; + uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS]; + const void *data[PIPE_MAX_TEXTURE_LEVELS]; float min_lod; float max_lod; float lod_bias; @@ -290,8 +289,8 @@ draw_llvm_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, uint32_t last_level, - uint32_t row_stride[DRAW_MAX_TEXTURE_LEVELS], - uint32_t img_stride[DRAW_MAX_TEXTURE_LEVELS], - const void *data[DRAW_MAX_TEXTURE_LEVELS]); + uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], + uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], + const void *data[PIPE_MAX_TEXTURE_LEVELS]); #endif diff --git a/src/gallium/drivers/llvmpipe/lp_state_sampler.c b/src/gallium/drivers/llvmpipe/lp_state_sampler.c index 17a4a0ed02d..1dd866195d3 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_sampler.c +++ b/src/gallium/drivers/llvmpipe/lp_state_sampler.c @@ -246,9 +246,9 @@ llvmpipe_prepare_vertex_sampling(struct llvmpipe_context *lp, struct pipe_sampler_view **views) { unsigned i; - uint32_t row_stride[DRAW_MAX_TEXTURE_LEVELS]; - uint32_t img_stride[DRAW_MAX_TEXTURE_LEVELS]; - const void *data[DRAW_MAX_TEXTURE_LEVELS]; + uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS]; + uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS]; + const void *data[PIPE_MAX_TEXTURE_LEVELS]; assert(num <= PIPE_MAX_VERTEX_SAMPLERS); if (!num) -- cgit v1.2.3 From 833b4fc11e0fcac36490b036135298232310568a Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 12 Oct 2010 14:43:44 +1000 Subject: r600g: fix depth0 setting --- src/gallium/drivers/r600/r600_texture.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 496b28a3b9c..1eaf40fdf0a 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -244,7 +244,7 @@ int r600_texture_depth_flush(struct pipe_context *ctx, resource.format = texture->format; resource.width0 = texture->width0; resource.height0 = texture->height0; - resource.depth0 = 0; + resource.depth0 = 1; resource.last_level = 0; resource.nr_samples = 0; resource.usage = PIPE_USAGE_DYNAMIC; @@ -297,7 +297,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, resource.format = texture->format; resource.width0 = box->width; resource.height0 = box->height; - resource.depth0 = 0; + resource.depth0 = 1; resource.last_level = 0; resource.nr_samples = 0; resource.usage = PIPE_USAGE_DYNAMIC; -- cgit v1.2.3 From a8d1d7253ed281fd5c3a8a86658998eb5b9af847 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 14:23:36 +1000 Subject: r600g: fix scissor/cliprect confusion gallium calls them scissors, but r600 hw like r300 is better off using cliprects to implement them as we can turn them on/off a lot easier. --- src/gallium/drivers/r600/evergreen_state.c | 52 +++------------------------ src/gallium/drivers/r600/r600_state.c | 58 ++++-------------------------- 2 files changed, 10 insertions(+), 100 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 99085647a75..a5298e3fdf9 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -241,6 +241,7 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, struct r600_pipe_state *rstate; unsigned tmp; unsigned prov_vtx = 1, polygon_dual_mode; + unsigned clip_rule; if (rs == NULL) { return NULL; @@ -250,6 +251,8 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, rs->flatshade = state->flatshade; rs->sprite_coord_enable = state->sprite_coord_enable; + clip_rule = state->scissor ? 0xAAAA : 0xFFFF; + /* offset */ rs->offset_units = state->offset_units; rs->offset_scale = state->offset_scale * 12.0f; @@ -299,6 +302,7 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028C18_PA_CL_GB_HORZ_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0x0, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL, 0x00000005, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_02820C_PA_SC_CLIPRECT_RULE, clip_rule, 0xFFFFFFFF, NULL); return rstate; } @@ -629,18 +633,6 @@ static void evergreen_set_scissor_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_SCISSOR; tl = S_028240_TL_X(state->minx) | S_028240_TL_Y(state->miny); br = S_028244_BR_X(state->maxx) | S_028244_BR_Y(state->maxy); - r600_pipe_state_add_reg(rstate, - R_028030_PA_SC_SCREEN_SCISSOR_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028034_PA_SC_SCREEN_SCISSOR_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028204_PA_SC_WINDOW_SCISSOR_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028208_PA_SC_WINDOW_SCISSOR_BR, br, - 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028210_PA_SC_CLIPRECT_0_TL, tl, 0xFFFFFFFF, NULL); @@ -665,15 +657,6 @@ static void evergreen_set_scissor_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_02822C_PA_SC_CLIPRECT_3_BR, br, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028200_PA_SC_WINDOW_OFFSET, 0x00000000, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02820C_PA_SC_CLIPRECT_RULE, 0x0000FFFF, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028230_PA_SC_EDGERULE, 0xAAAAAAAA, - 0xFFFFFFFF, NULL); free(rctx->states[R600_PIPE_STATE_SCISSOR]); rctx->states[R600_PIPE_STATE_SCISSOR] = rstate; @@ -911,36 +894,9 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028208_PA_SC_WINDOW_SCISSOR_BR, br, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028210_PA_SC_CLIPRECT_0_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028214_PA_SC_CLIPRECT_0_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028218_PA_SC_CLIPRECT_1_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02821C_PA_SC_CLIPRECT_1_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028220_PA_SC_CLIPRECT_2_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028224_PA_SC_CLIPRECT_2_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028228_PA_SC_CLIPRECT_3_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02822C_PA_SC_CLIPRECT_3_BR, br, - 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028200_PA_SC_WINDOW_OFFSET, 0x00000000, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02820C_PA_SC_CLIPRECT_RULE, 0x0000FFFF, - 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028230_PA_SC_EDGERULE, 0xAAAAAAAA, 0xFFFFFFFF, NULL); diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 70461d24ea2..25310eeda4e 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -446,6 +446,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx, struct r600_pipe_state *rstate; unsigned tmp; unsigned prov_vtx = 1, polygon_dual_mode; + unsigned clip_rule; if (rs == NULL) { return NULL; @@ -455,6 +456,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx, rs->flatshade = state->flatshade; rs->sprite_coord_enable = state->sprite_coord_enable; + clip_rule = state->scissor ? 0xAAAA : 0xFFFF; /* offset */ rs->offset_units = state->offset_units; rs->offset_scale = state->offset_scale * 12.0f; @@ -505,6 +507,8 @@ static void *r600_create_rs_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028C14_PA_CL_GB_HORZ_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C18_PA_CL_GB_HORZ_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028DFC_PA_SU_POLY_OFFSET_CLAMP, 0x00000000, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_02820C_PA_SC_CLIPRECT_RULE, clip_rule, 0xFFFFFFFF, NULL); + return rstate; } @@ -832,18 +836,6 @@ static void r600_set_scissor_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_SCISSOR; tl = S_028240_TL_X(state->minx) | S_028240_TL_Y(state->miny) | S_028240_WINDOW_OFFSET_DISABLE(1); br = S_028244_BR_X(state->maxx) | S_028244_BR_Y(state->maxy); - r600_pipe_state_add_reg(rstate, - R_028030_PA_SC_SCREEN_SCISSOR_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028034_PA_SC_SCREEN_SCISSOR_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028204_PA_SC_WINDOW_SCISSOR_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028208_PA_SC_WINDOW_SCISSOR_BR, br, - 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028210_PA_SC_CLIPRECT_0_TL, tl, 0xFFFFFFFF, NULL); @@ -868,17 +860,6 @@ static void r600_set_scissor_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_02822C_PA_SC_CLIPRECT_3_BR, br, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028200_PA_SC_WINDOW_OFFSET, 0x00000000, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02820C_PA_SC_CLIPRECT_RULE, 0x0000FFFF, - 0xFFFFFFFF, NULL); - if (rctx->family >= CHIP_RV770) { - r600_pipe_state_add_reg(rstate, - R_028230_PA_SC_EDGERULE, 0xAAAAAAAA, - 0xFFFFFFFF, NULL); - } free(rctx->states[R600_PIPE_STATE_SCISSOR]); rctx->states[R600_PIPE_STATE_SCISSOR] = rstate; @@ -1098,36 +1079,9 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028254_PA_SC_VPORT_SCISSOR_0_BR, br, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028210_PA_SC_CLIPRECT_0_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028214_PA_SC_CLIPRECT_0_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028218_PA_SC_CLIPRECT_1_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02821C_PA_SC_CLIPRECT_1_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028220_PA_SC_CLIPRECT_2_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028224_PA_SC_CLIPRECT_2_BR, br, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_028228_PA_SC_CLIPRECT_3_TL, tl, - 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02822C_PA_SC_CLIPRECT_3_BR, br, - 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028200_PA_SC_WINDOW_OFFSET, 0x00000000, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_02820C_PA_SC_CLIPRECT_RULE, 0x0000FFFF, - 0xFFFFFFFF, NULL); if (rctx->family >= CHIP_RV770) { r600_pipe_state_add_reg(rstate, R_028230_PA_SC_EDGERULE, 0xAAAAAAAA, @@ -1532,14 +1486,14 @@ void r600_init_config(struct r600_pipe_context *rctx) r600_pipe_state_add_reg(rstate, R_009830_DB_DEBUG, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_009838_DB_WATERMARKS, 0x00420204, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_0286C8_SPI_THREAD_GROUPING, 0x00000000, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, R_028A4C_PA_SC_MODE_CNTL, 0x00514000, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_028A4C_PA_SC_MODE_CNTL, 0x00514002, 0xFFFFFFFF, NULL); } else { r600_pipe_state_add_reg(rstate, R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_009508_TA_CNTL_AUX, 0x07000003, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_009830_DB_DEBUG, 0x82000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_009838_DB_WATERMARKS, 0x01020204, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_0286C8_SPI_THREAD_GROUPING, 0x00000001, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, R_028A4C_PA_SC_MODE_CNTL, 0x00004010, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_028A4C_PA_SC_MODE_CNTL, 0x00004012, 0xFFFFFFFF, NULL); } r600_pipe_state_add_reg(rstate, R_0288A8_SQ_ESGS_RING_ITEMSIZE, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_0288AC_SQ_GSVS_RING_ITEMSIZE, 0x00000000, 0xFFFFFFFF, NULL); -- cgit v1.2.3 From c8d4108fbee679735a1cc3f405d848d01bfb23f6 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 12 Oct 2010 13:24:01 +1000 Subject: r600g: store samplers/views across blit when we need to modify them also fixup framebuffer state copies to avoid bad state. --- src/gallium/drivers/r600/evergreen_state.c | 18 ++++++----- src/gallium/drivers/r600/r600_blit.c | 51 +++++++++++++++++++++--------- src/gallium/drivers/r600/r600_pipe.h | 10 ++++++ src/gallium/drivers/r600/r600_state.c | 18 ++++++----- 4 files changed, 66 insertions(+), 31 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index a5298e3fdf9..4e95d4c4905 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include "r600.h" #include "evergreend.h" @@ -500,6 +501,9 @@ static void evergreen_set_ps_sampler_view(struct pipe_context *ctx, unsigned cou struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_sampler_view **resource = (struct r600_pipe_sampler_view **)views; + rctx->ps_samplers.views = resource; + rctx->ps_samplers.n_views = count; + for (int i = 0; i < count; i++) { if (resource[i]) { evergreen_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i); @@ -523,6 +527,9 @@ static void evergreen_bind_ps_sampler(struct pipe_context *ctx, unsigned count, struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state **rstates = (struct r600_pipe_state **)states; + rctx->ps_samplers.samplers = states; + rctx->ps_samplers.n_samplers = count; + for (int i = 0; i < count; i++) { evergreen_context_pipe_state_set_ps_sampler(&rctx->ctx, rstates[i], i); } @@ -842,14 +849,9 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, /* unreference old buffer and reference new one */ rstate->id = R600_PIPE_STATE_FRAMEBUFFER; - for (int i = 0; i < rctx->framebuffer.nr_cbufs; i++) { - pipe_surface_reference(&rctx->framebuffer.cbufs[i], NULL); - } - for (int i = 0; i < state->nr_cbufs; i++) { - pipe_surface_reference(&rctx->framebuffer.cbufs[i], state->cbufs[i]); - } - pipe_surface_reference(&rctx->framebuffer.zsbuf, state->zsbuf); - rctx->framebuffer = *state; + + util_copy_framebuffer_state(&rctx->framebuffer, state); + rctx->pframebuffer = &rctx->framebuffer; /* build states */ diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 4bf44a171af..aecc87f7da1 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -24,10 +24,19 @@ #include #include "r600_pipe.h" -static void r600_blitter_save_states(struct pipe_context *ctx) +enum r600_blitter_op /* bitmask */ +{ + R600_CLEAR = 1, + R600_CLEAR_SURFACE = 2, + R600_COPY = 4 +}; + +static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + r600_context_queries_suspend(&rctx->ctx); + util_blitter_save_blend(rctx->blitter, rctx->states[R600_PIPE_STATE_BLEND]); util_blitter_save_depth_stencil_alpha(rctx->blitter, rctx->states[R600_PIPE_STATE_DSA]); if (rctx->states[R600_PIPE_STATE_STENCIL_REF]) { @@ -47,7 +56,25 @@ static void r600_blitter_save_states(struct pipe_context *ctx) rctx->vertex_elements = NULL; - /* TODO queries */ + if (op & (R600_CLEAR_SURFACE | R600_COPY)) + util_blitter_save_framebuffer(rctx->blitter, &rctx->framebuffer); + + if (op & R600_COPY) { + util_blitter_save_fragment_sampler_states( + rctx->blitter, rctx->ps_samplers.n_samplers, + (void**)rctx->ps_samplers.samplers); + + util_blitter_save_fragment_sampler_views( + rctx->blitter, rctx->ps_samplers.n_views, + (struct pipe_sampler_view**)rctx->ps_samplers.views); + } + +} + +static void r600_blitter_end(struct pipe_context *ctx) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + r600_context_queries_resume(&rctx->ctx); } int r600_blit_uncompress_depth(struct pipe_context *ctx, struct r600_resource_texture *texture) @@ -73,9 +100,8 @@ int r600_blit_uncompress_depth(struct pipe_context *ctx, struct r600_resource_te (struct pipe_resource*)texture->flushed_depth_texture, 0, level, 0, PIPE_BIND_RENDER_TARGET); - r600_blitter_save_states(ctx); + r600_blitter_begin(ctx, R600_CLEAR); util_blitter_save_framebuffer(rctx->blitter, &fb); - if (rctx->family == CHIP_RV610 || rctx->family == CHIP_RV630 || rctx->family == CHIP_RV620 || rctx->family == CHIP_RV635) depth = 0.0f; @@ -99,12 +125,11 @@ static void r600_clear(struct pipe_context *ctx, unsigned buffers, struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct pipe_framebuffer_state *fb = &rctx->framebuffer; - r600_context_queries_suspend(&rctx->ctx); - r600_blitter_save_states(ctx); + r600_blitter_begin(ctx, R600_CLEAR); util_blitter_clear(rctx->blitter, fb->width, fb->height, fb->nr_cbufs, buffers, rgba, depth, stencil); - r600_context_queries_resume(&rctx->ctx); + r600_blitter_end(ctx); } static void r600_clear_render_target(struct pipe_context *ctx, @@ -114,13 +139,11 @@ static void r600_clear_render_target(struct pipe_context *ctx, unsigned width, unsigned height) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct pipe_framebuffer_state *fb = &rctx->framebuffer; - r600_context_queries_suspend(&rctx->ctx); - util_blitter_save_framebuffer(rctx->blitter, fb); + r600_blitter_begin(ctx, R600_CLEAR_SURFACE); util_blitter_clear_render_target(rctx->blitter, dst, rgba, dstx, dsty, width, height); - r600_context_queries_resume(&rctx->ctx); + r600_blitter_end(ctx); } static void r600_clear_depth_stencil(struct pipe_context *ctx, @@ -132,13 +155,11 @@ static void r600_clear_depth_stencil(struct pipe_context *ctx, unsigned width, unsigned height) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct pipe_framebuffer_state *fb = &rctx->framebuffer; - r600_context_queries_suspend(&rctx->ctx); - util_blitter_save_framebuffer(rctx->blitter, fb); + r600_blitter_begin(ctx, R600_CLEAR_SURFACE); util_blitter_clear_depth_stencil(rctx->blitter, dst, clear_flags, depth, stencil, dstx, dsty, width, height); - r600_context_queries_resume(&rctx->ctx); + r600_blitter_end(ctx); } diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index c46029a5617..34a59646d51 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -92,6 +92,14 @@ struct r600_pipe_shader { struct r600_vertex_element vertex_elements; }; +/* needed for blitter save */ +struct r600_textures_info { + struct r600_pipe_sampler_view **views; + unsigned n_views; + void **samplers; + unsigned n_samplers; +}; + struct r600_pipe_context { struct pipe_context context; struct blitter_context *blitter; @@ -130,6 +138,8 @@ struct r600_pipe_context { struct u_upload_mgr *upload_vb; struct u_upload_mgr *upload_ib; unsigned any_user_vbs; + struct r600_textures_info ps_samplers; + }; struct r600_drawl { diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 25310eeda4e..b2e7c282e28 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include "r600.h" #include "r600d.h" @@ -703,6 +704,9 @@ static void r600_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_sampler_view **resource = (struct r600_pipe_sampler_view **)views; + rctx->ps_samplers.views = resource; + rctx->ps_samplers.n_views = count; + for (int i = 0; i < count; i++) { if (resource[i]) { r600_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i); @@ -726,6 +730,9 @@ static void r600_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state **rstates = (struct r600_pipe_state **)states; + rctx->ps_samplers.samplers = states; + rctx->ps_samplers.n_samplers = count; + for (int i = 0; i < count; i++) { r600_context_pipe_state_set_ps_sampler(&rctx->ctx, rstates[i], i); } @@ -1025,14 +1032,9 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, /* unreference old buffer and reference new one */ rstate->id = R600_PIPE_STATE_FRAMEBUFFER; - for (int i = 0; i < rctx->framebuffer.nr_cbufs; i++) { - pipe_surface_reference(&rctx->framebuffer.cbufs[i], NULL); - } - for (int i = 0; i < state->nr_cbufs; i++) { - pipe_surface_reference(&rctx->framebuffer.cbufs[i], state->cbufs[i]); - } - pipe_surface_reference(&rctx->framebuffer.zsbuf, state->zsbuf); - rctx->framebuffer = *state; + + util_copy_framebuffer_state(&rctx->framebuffer, state); + rctx->pframebuffer = &rctx->framebuffer; /* build states */ -- cgit v1.2.3 From d59498b78041b8a7a046ac2c892e7a1896f59ca2 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 15:22:04 +1000 Subject: r600g: reduce size of context structure. this thing will be in the cache a lot, so having massive big struct arrays inside it won't be helping anyone. --- src/gallium/drivers/r600/r600_pipe.c | 28 ++++++++++++++++++++++++++++ src/gallium/drivers/r600/r600_pipe.h | 11 +++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 52fe3c777b3..69bfb2a1a4e 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -85,6 +85,10 @@ static void r600_destroy_context(struct pipe_context *context) u_upload_destroy(rctx->upload_vb); u_upload_destroy(rctx->upload_ib); + FREE(rctx->ps_resource); + FREE(rctx->vs_resource); + FREE(rctx->vs_const); + FREE(rctx->ps_const); FREE(rctx); } @@ -171,6 +175,30 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void return NULL; } + rctx->vs_const = CALLOC(R600_CONSTANT_ARRAY_SIZE, sizeof(struct r600_pipe_state)); + if (!rctx->vs_const) { + FREE(rctx); + return NULL; + } + + rctx->ps_const = CALLOC(R600_CONSTANT_ARRAY_SIZE, sizeof(struct r600_pipe_state)); + if (!rctx->vs_const) { + FREE(rctx); + return NULL; + } + + rctx->vs_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state)); + if (!rctx->vs_resource) { + FREE(rctx); + return NULL; + } + + rctx->ps_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state)); + if (!rctx->ps_resource) { + FREE(rctx); + return NULL; + } + class = r600_get_family_class(rctx->radeon); if (class == R600 || class == R700) rctx->custom_dsa_flush = r600_create_db_flush_dsa(rctx); diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 34a59646d51..6ce1f969522 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -100,6 +100,9 @@ struct r600_textures_info { unsigned n_samplers; }; +#define R600_CONSTANT_ARRAY_SIZE 256 +#define R600_RESOURCE_ARRAY_SIZE 160 + struct r600_pipe_context { struct pipe_context context; struct blitter_context *blitter; @@ -122,10 +125,10 @@ struct r600_pipe_context { struct pipe_clip_state clip; unsigned vs_nconst; unsigned ps_nconst; - struct r600_pipe_state vs_const[256]; - struct r600_pipe_state ps_const[256]; - struct r600_pipe_state vs_resource[160]; - struct r600_pipe_state ps_resource[160]; + struct r600_pipe_state *vs_const; + struct r600_pipe_state *ps_const; + struct r600_pipe_state *vs_resource; + struct r600_pipe_state *ps_resource; struct r600_pipe_state config; struct r600_pipe_shader *ps_shader; struct r600_pipe_shader *vs_shader; -- cgit v1.2.3 From 560427667006f01ad9146fa07185924d4f3a08d6 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 15:56:12 +1000 Subject: r600g: the vs/ps const arrays weren't actually being used. completely removed them. --- src/gallium/drivers/r600/r600_pipe.c | 14 -------------- src/gallium/drivers/r600/r600_pipe.h | 2 -- 2 files changed, 16 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 69bfb2a1a4e..8eb97993236 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -87,8 +87,6 @@ static void r600_destroy_context(struct pipe_context *context) FREE(rctx->ps_resource); FREE(rctx->vs_resource); - FREE(rctx->vs_const); - FREE(rctx->ps_const); FREE(rctx); } @@ -175,18 +173,6 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void return NULL; } - rctx->vs_const = CALLOC(R600_CONSTANT_ARRAY_SIZE, sizeof(struct r600_pipe_state)); - if (!rctx->vs_const) { - FREE(rctx); - return NULL; - } - - rctx->ps_const = CALLOC(R600_CONSTANT_ARRAY_SIZE, sizeof(struct r600_pipe_state)); - if (!rctx->vs_const) { - FREE(rctx); - return NULL; - } - rctx->vs_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state)); if (!rctx->vs_resource) { FREE(rctx); diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 6ce1f969522..87317867696 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -125,8 +125,6 @@ struct r600_pipe_context { struct pipe_clip_state clip; unsigned vs_nconst; unsigned ps_nconst; - struct r600_pipe_state *vs_const; - struct r600_pipe_state *ps_const; struct r600_pipe_state *vs_resource; struct r600_pipe_state *ps_resource; struct r600_pipe_state config; -- cgit v1.2.3 From 9979d60c0e2e4152bce19c2c4128ff2941b9191b Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 12 Oct 2010 11:54:16 +1000 Subject: r600g: add copy into tiled texture --- src/gallium/drivers/r600/r600_texture.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 1eaf40fdf0a..f770a35dab4 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -53,6 +53,25 @@ static void r600_copy_from_tiled_texture(struct pipe_context *ctx, struct r600_t transfer->box.width, transfer->box.height); } + +/* Copy from a detiled texture to a tiled one. */ +static void r600_copy_into_tiled_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer) +{ + struct pipe_transfer *transfer = (struct pipe_transfer*)rtransfer; + struct pipe_resource *texture = transfer->resource; + struct pipe_subresource subsrc; + + subsrc.face = 0; + subsrc.level = 0; + ctx->resource_copy_region(ctx, texture, transfer->sr, + transfer->box.x, transfer->box.y, transfer->box.z, + rtransfer->linear_texture, subsrc, + 0, 0, 0, + transfer->box.width, transfer->box.height); + + ctx->flush(ctx, 0, NULL); +} + static unsigned long r600_texture_get_offset(struct r600_resource_texture *rtex, unsigned level, unsigned zslice, unsigned face) @@ -339,12 +358,12 @@ void r600_texture_transfer_destroy(struct pipe_context *ctx, struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource; if (rtransfer->linear_texture) { + if (transfer->usage & PIPE_TRANSFER_WRITE) { + r600_copy_into_tiled_texture(ctx, rtransfer); + } pipe_resource_reference(&rtransfer->linear_texture, NULL); } if (rtex->flushed_depth_texture) { - if (transfer->usage & PIPE_TRANSFER_WRITE) { - // TODO - } pipe_resource_reference((struct pipe_resource **)&rtex->flushed_depth_texture, NULL); } pipe_resource_reference(&transfer->resource, NULL); -- cgit v1.2.3 From 771dd89881791e38c076230497023ad7522602b3 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 12 Oct 2010 09:53:17 +1000 Subject: r600g: split out miptree setup like r300g just a cleanup step towards tiling --- src/gallium/drivers/r600/r600_texture.c | 55 ++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 12 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index f770a35dab4..048339e1204 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -91,22 +91,53 @@ static unsigned long r600_texture_get_offset(struct r600_resource_texture *rtex, } } -static void r600_setup_miptree(struct r600_resource_texture *rtex, enum chip_class chipc) +static unsigned r600_texture_get_stride(struct pipe_screen *screen, + struct r600_resource_texture *rtex, + unsigned level) { struct pipe_resource *ptex = &rtex->resource.base.b; - unsigned long w, h, pitch, size, layer_size, i, offset; + struct radeon *radeon = (struct radeon *)screen->winsys; + enum chip_class chipc = r600_get_family_class(radeon); + unsigned width, stride; + + width = u_minify(ptex->width0, level); + + stride = util_format_get_stride(ptex->format, align(width, 64)); + if (chipc == EVERGREEN) + stride = align(stride, 512); + else + stride = align(stride, 256); + return stride; +} + +static unsigned r600_texture_get_nblocksy(struct pipe_screen *screen, + struct r600_resource_texture *rtex, + unsigned level) +{ + struct pipe_resource *ptex = &rtex->resource.base.b; + unsigned height; + + height = u_minify(ptex->height0, level); + height = util_next_power_of_two(height); + return util_format_get_nblocksy(ptex->format, height); +} + +static void r600_setup_miptree(struct pipe_screen *screen, + struct r600_resource_texture *rtex) +{ + struct pipe_resource *ptex = &rtex->resource.base.b; + struct radeon *radeon = (struct radeon *)screen->winsys; + enum chip_class chipc = r600_get_family_class(radeon); + unsigned long pitch, size, layer_size, i, offset; + unsigned nblocksy; rtex->bpt = util_format_get_blocksize(ptex->format); for (i = 0, offset = 0; i <= ptex->last_level; i++) { - w = u_minify(ptex->width0, i); - h = u_minify(ptex->height0, i); - h = util_next_power_of_two(h); - pitch = util_format_get_stride(ptex->format, align(w, 64)); - if (chipc == EVERGREEN) - pitch = align(pitch, 512); - else - pitch = align(pitch, 256); - layer_size = pitch * h; + pitch = r600_texture_get_stride(screen, rtex, i); + nblocksy = r600_texture_get_nblocksy(screen, rtex, i); + + layer_size = pitch * nblocksy; + if (ptex->target == PIPE_TEXTURE_CUBE) { if (chipc >= R700) size = layer_size * 8; @@ -139,7 +170,7 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen, resource->base.vtbl = &r600_texture_vtbl; pipe_reference_init(&resource->base.b.reference, 1); resource->base.b.screen = screen; - r600_setup_miptree(rtex, r600_get_family_class(radeon)); + r600_setup_miptree(screen, rtex); /* FIXME alignment 4096 enought ? too much ? */ resource->domain = r600_domain_from_usage(resource->base.b.bind); -- cgit v1.2.3 From 6a0066a69f6873a53d45684205926e8f5b73ddb2 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 12 Oct 2010 10:51:03 +1000 Subject: r600g: use common texture object create function --- src/gallium/drivers/r600/r600_texture.c | 74 ++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 33 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 048339e1204..e825aeee350 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -100,6 +100,9 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen, enum chip_class chipc = r600_get_family_class(radeon); unsigned width, stride; + if (rtex->pitch_override) + return rtex->pitch_override; + width = u_minify(ptex->width0, level); stride = util_format_get_stride(ptex->format, align(width, 64)); @@ -154,33 +157,54 @@ static void r600_setup_miptree(struct pipe_screen *screen, rtex->size = offset; } -struct pipe_resource *r600_texture_create(struct pipe_screen *screen, - const struct pipe_resource *templ) +static struct r600_resource_texture * +r600_texture_create_object(struct pipe_screen *screen, + const struct pipe_resource *base, + unsigned array_mode, + unsigned pitch_in_bytes_override, + unsigned max_buffer_size, + struct r600_bo *bo) { struct r600_resource_texture *rtex; struct r600_resource *resource; struct radeon *radeon = (struct radeon *)screen->winsys; rtex = CALLOC_STRUCT(r600_resource_texture); - if (!rtex) { + if (rtex == NULL) return NULL; - } + resource = &rtex->resource; - resource->base.b = *templ; + resource->base.b = *base; resource->base.vtbl = &r600_texture_vtbl; pipe_reference_init(&resource->base.b.reference, 1); resource->base.b.screen = screen; + resource->bo = bo; + resource->domain = r600_domain_from_usage(resource->base.b.bind); + rtex->pitch_override = pitch_in_bytes_override; + rtex->array_mode = array_mode; + r600_setup_miptree(screen, rtex); - /* FIXME alignment 4096 enought ? too much ? */ - resource->domain = r600_domain_from_usage(resource->base.b.bind); resource->size = rtex->size; - resource->bo = r600_bo(radeon, rtex->size, 4096, 0); - if (resource->bo == NULL) { - FREE(rtex); - return NULL; + + if (!resource->bo) { + resource->bo = r600_bo(radeon, rtex->size, 4096, 0); + if (!resource->bo) { + FREE(rtex); + return NULL; + } } - return &resource->base.b; + return rtex; +} + +struct pipe_resource *r600_texture_create(struct pipe_screen *screen, + const struct pipe_resource *templ) +{ + unsigned array_mode = 0; + + return (struct pipe_resource *)r600_texture_create_object(screen, templ, array_mode, + 0, 0, NULL); + } static void r600_texture_destroy(struct pipe_screen *screen, @@ -231,13 +255,12 @@ static void r600_tex_surface_destroy(struct pipe_surface *surface) FREE(surface); } + struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen, const struct pipe_resource *templ, struct winsys_handle *whandle) { struct radeon *rw = (struct radeon*)screen->winsys; - struct r600_resource_texture *rtex; - struct r600_resource *resource; struct r600_bo *bo = NULL; /* Support only 2D textures without mipmaps */ @@ -245,30 +268,15 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen, templ->depth0 != 1 || templ->last_level != 0) return NULL; - rtex = CALLOC_STRUCT(r600_resource_texture); - if (rtex == NULL) - return NULL; - bo = r600_bo_handle(rw, whandle->handle); if (bo == NULL) { - FREE(rtex); return NULL; } - resource = &rtex->resource; - resource->base.b = *templ; - resource->base.vtbl = &r600_texture_vtbl; - pipe_reference_init(&resource->base.b.reference, 1); - resource->base.b.screen = screen; - resource->bo = bo; - rtex->depth = 0; - rtex->pitch_override = whandle->stride; - rtex->bpt = util_format_get_blocksize(templ->format); - rtex->pitch[0] = whandle->stride; - rtex->offset[0] = 0; - rtex->size = align(rtex->pitch[0] * templ->height0, 64); - - return &resource->base.b; + return (struct pipe_resource *)r600_texture_create_object(screen, templ, 0, + whandle->stride, + 0, + bo); } static unsigned int r600_texture_is_referenced(struct pipe_context *context, -- cgit v1.2.3 From fa797f12b3e1e82020eb7bc8fd0181baa7515efe Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 11:02:52 +1000 Subject: r600g: rename pitch in texture to pitch_in_bytes --- src/gallium/drivers/r600/evergreen_state.c | 12 ++++++------ src/gallium/drivers/r600/r600_resource.h | 2 +- src/gallium/drivers/r600/r600_state.c | 10 +++++----- src/gallium/drivers/r600/r600_texture.c | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 4e95d4c4905..54d2233467a 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -451,7 +451,7 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte bo[0] = rbuffer->bo; bo[1] = rbuffer->bo; } - pitch = align(tmp->pitch[0] / tmp->bpt, 8); + pitch = align(tmp->pitch_in_bytes[0] / tmp->bpt, 8); /* FIXME properly handle first level != 0 */ r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0, @@ -740,8 +740,8 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state bo[1] = rbuffer->bo; bo[2] = rbuffer->bo; - pitch = (rtex->pitch[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch[level] / rtex->bpt) * state->cbufs[cb]->height / 64 - 1; + pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; + slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->cbufs[cb]->height / 64 - 1; ntype = 0; desc = util_format_description(rtex->resource.base.b.format); if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) @@ -802,8 +802,8 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state rbuffer = &rtex->resource; level = state->zsbuf->level; - pitch = (rtex->pitch[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch[level] / rtex->bpt) * state->zsbuf->height / 64 - 1; + pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; + slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->zsbuf->height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); stencil_format = r600_translate_stencilformat(state->zsbuf->texture->format); @@ -815,7 +815,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state if (stencil_format) { uint32_t stencil_offset; - stencil_offset = ((state->zsbuf->height * rtex->pitch[level]) + 255) & ~255; + stencil_offset = ((state->zsbuf->height * rtex->pitch_in_bytes[level]) + 255) & ~255; r600_pipe_state_add_reg(rstate, R_02804C_DB_STENCIL_READ_BASE, (state->zsbuf->offset + stencil_offset + r600_bo_offset(rbuffer->bo)) >> 8, 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_028054_DB_STENCIL_WRITE_BASE, diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index 323960960d6..04b31ddf899 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -50,7 +50,7 @@ struct r600_resource { struct r600_resource_texture { struct r600_resource resource; unsigned long offset[PIPE_MAX_TEXTURE_LEVELS]; - unsigned long pitch[PIPE_MAX_TEXTURE_LEVELS]; + unsigned long pitch_in_bytes[PIPE_MAX_TEXTURE_LEVELS]; unsigned long layer_size[PIPE_MAX_TEXTURE_LEVELS]; unsigned long pitch_override; unsigned long bpt; diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index b2e7c282e28..8c8e7986522 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -653,7 +653,7 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c bo[0] = rbuffer->bo; bo[1] = rbuffer->bo; } - pitch = align(tmp->pitch[0] / tmp->bpt, 8); + pitch = align(tmp->pitch_in_bytes[0] / tmp->bpt, 8); /* FIXME properly handle first level != 0 */ r600_pipe_state_add_reg(rstate, R_038000_RESOURCE0_WORD0, @@ -943,8 +943,8 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta bo[1] = rbuffer->bo; bo[2] = rbuffer->bo; - pitch = (rtex->pitch[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch[level] / rtex->bpt) * state->cbufs[cb]->height / 64 - 1; + pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; + slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->cbufs[cb]->height / 64 - 1; ntype = 0; desc = util_format_description(rtex->resource.base.b.format); if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) @@ -1003,8 +1003,8 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta rbuffer = &rtex->resource; level = state->zsbuf->level; - pitch = (rtex->pitch[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch[level] / rtex->bpt) * state->zsbuf->height / 64 - 1; + pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; + slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->zsbuf->height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); r600_pipe_state_add_reg(rstate, R_02800C_DB_DEPTH_BASE, diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index e825aeee350..5bdfd499397 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -151,7 +151,7 @@ static void r600_setup_miptree(struct pipe_screen *screen, size = layer_size * u_minify(ptex->depth0, i); rtex->offset[i] = offset; rtex->layer_size[i] = layer_size; - rtex->pitch[i] = pitch; + rtex->pitch_in_bytes[i] = pitch; offset += size; } rtex->size = offset; @@ -340,7 +340,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, trans->transfer.sr = sr; trans->transfer.usage = usage; trans->transfer.box = *box; - trans->transfer.stride = rtex->pitch[sr.level]; + trans->transfer.stride = rtex->pitch_in_bytes[sr.level]; trans->offset = r600_texture_get_offset(rtex, sr.level, box->z, sr.face); if (rtex->depth) { r = r600_texture_depth_flush(ctx, texture); -- cgit v1.2.3 From e3b089126c63c7178d725fbe245ca09d3f9edba1 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 11:03:18 +1000 Subject: r600g: remove bpt and start using pitch_in_bytes/pixels. this mirror changes in r300g, bpt is kinda useless when it comes to some of the non-simple texture formats. --- src/gallium/drivers/r600/evergreen_state.c | 10 +++++----- src/gallium/drivers/r600/r600_resource.h | 2 +- src/gallium/drivers/r600/r600_state.c | 10 +++++----- src/gallium/drivers/r600/r600_texture.c | 10 +++++++++- 4 files changed, 20 insertions(+), 12 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 54d2233467a..49a888abe35 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -451,7 +451,7 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte bo[0] = rbuffer->bo; bo[1] = rbuffer->bo; } - pitch = align(tmp->pitch_in_bytes[0] / tmp->bpt, 8); + pitch = align(tmp->pitch_in_pixels[0], 8); /* FIXME properly handle first level != 0 */ r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0, @@ -740,8 +740,8 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state bo[1] = rbuffer->bo; bo[2] = rbuffer->bo; - pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->cbufs[cb]->height / 64 - 1; + pitch = rtex->pitch_in_pixels[level] / 8 - 1; + slice = rtex->pitch_in_pixels[level] * state->cbufs[cb]->height / 64 - 1; ntype = 0; desc = util_format_description(rtex->resource.base.b.format); if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) @@ -802,8 +802,8 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state rbuffer = &rtex->resource; level = state->zsbuf->level; - pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->zsbuf->height / 64 - 1; + pitch = rtex->pitch_in_pixels[level] / 8 - 1; + slice = rtex->pitch_in_pixels[level] * state->zsbuf->height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); stencil_format = r600_translate_stencilformat(state->zsbuf->texture->format); diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index 04b31ddf899..2d7495e0fbb 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -51,9 +51,9 @@ struct r600_resource_texture { struct r600_resource resource; unsigned long offset[PIPE_MAX_TEXTURE_LEVELS]; unsigned long pitch_in_bytes[PIPE_MAX_TEXTURE_LEVELS]; + unsigned long pitch_in_pixels[PIPE_MAX_TEXTURE_LEVELS]; unsigned long layer_size[PIPE_MAX_TEXTURE_LEVELS]; unsigned long pitch_override; - unsigned long bpt; unsigned long size; unsigned tiled; unsigned array_mode; diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 8c8e7986522..7b0aaef770f 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -653,7 +653,7 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c bo[0] = rbuffer->bo; bo[1] = rbuffer->bo; } - pitch = align(tmp->pitch_in_bytes[0] / tmp->bpt, 8); + pitch = align(tmp->pitch_in_pixels[0], 8); /* FIXME properly handle first level != 0 */ r600_pipe_state_add_reg(rstate, R_038000_RESOURCE0_WORD0, @@ -943,8 +943,8 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta bo[1] = rbuffer->bo; bo[2] = rbuffer->bo; - pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->cbufs[cb]->height / 64 - 1; + pitch = rtex->pitch_in_pixels[level] / 8 - 1; + slice = rtex->pitch_in_pixels[level] * state->cbufs[cb]->height / 64 - 1; ntype = 0; desc = util_format_description(rtex->resource.base.b.format); if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) @@ -1003,8 +1003,8 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta rbuffer = &rtex->resource; level = state->zsbuf->level; - pitch = (rtex->pitch_in_bytes[level] / rtex->bpt) / 8 - 1; - slice = (rtex->pitch_in_bytes[level] / rtex->bpt) * state->zsbuf->height / 64 - 1; + pitch = rtex->pitch_in_pixels[level] / 8 - 1; + slice = rtex->pitch_in_pixels[level] * state->zsbuf->height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); r600_pipe_state_add_reg(rstate, R_02800C_DB_DEPTH_BASE, diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 5bdfd499397..d1339f69e73 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -125,6 +125,14 @@ static unsigned r600_texture_get_nblocksy(struct pipe_screen *screen, return util_format_get_nblocksy(ptex->format, height); } +/* Get a width in pixels from a stride in bytes. */ +static unsigned pitch_to_width(enum pipe_format format, + unsigned pitch_in_bytes) +{ + return (pitch_in_bytes / util_format_get_blocksize(format)) * + util_format_get_blockwidth(format); +} + static void r600_setup_miptree(struct pipe_screen *screen, struct r600_resource_texture *rtex) { @@ -134,7 +142,6 @@ static void r600_setup_miptree(struct pipe_screen *screen, unsigned long pitch, size, layer_size, i, offset; unsigned nblocksy; - rtex->bpt = util_format_get_blocksize(ptex->format); for (i = 0, offset = 0; i <= ptex->last_level; i++) { pitch = r600_texture_get_stride(screen, rtex, i); nblocksy = r600_texture_get_nblocksy(screen, rtex, i); @@ -152,6 +159,7 @@ static void r600_setup_miptree(struct pipe_screen *screen, rtex->offset[i] = offset; rtex->layer_size[i] = layer_size; rtex->pitch_in_bytes[i] = pitch; + rtex->pitch_in_pixels[i] = pitch_to_width(ptex->format, pitch); offset += size; } rtex->size = offset; -- cgit v1.2.3 From e9acf9a3bb45caea7b0fba197aa9ab01f24bb63f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 10:14:55 +1000 Subject: r600g: fix transfer stride. fixes segfaults --- src/gallium/drivers/r600/r600_texture.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index d1339f69e73..94886acc38e 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -387,6 +387,9 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, FREE(trans); return NULL; } + + trans->transfer.stride = + ((struct r600_resource_texture *)trans->linear_texture)->pitch_in_bytes[0]; if (usage & PIPE_TRANSFER_READ) { /* We cannot map a tiled texture directly because the data is * in a different order, therefore we do detiling using a blit. */ -- cgit v1.2.3 From f8778eeb40daf355f8dbcfeb1a9b492c57ce6a35 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 11:08:44 +1000 Subject: r600g: drop all use of unsigned long this changes size on 32/64 bit so is definitely no what you want to use here. --- src/gallium/drivers/r600/r600_resource.h | 12 ++++++------ src/gallium/drivers/r600/r600_texture.c | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index 2d7495e0fbb..ef484aba4a2 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -49,12 +49,12 @@ struct r600_resource { struct r600_resource_texture { struct r600_resource resource; - unsigned long offset[PIPE_MAX_TEXTURE_LEVELS]; - unsigned long pitch_in_bytes[PIPE_MAX_TEXTURE_LEVELS]; - unsigned long pitch_in_pixels[PIPE_MAX_TEXTURE_LEVELS]; - unsigned long layer_size[PIPE_MAX_TEXTURE_LEVELS]; - unsigned long pitch_override; - unsigned long size; + unsigned offset[PIPE_MAX_TEXTURE_LEVELS]; + unsigned pitch_in_bytes[PIPE_MAX_TEXTURE_LEVELS]; + unsigned pitch_in_pixels[PIPE_MAX_TEXTURE_LEVELS]; + unsigned layer_size[PIPE_MAX_TEXTURE_LEVELS]; + unsigned pitch_override; + unsigned size; unsigned tiled; unsigned array_mode; unsigned tile_type; diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 94886acc38e..22fe8bf0f39 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -72,11 +72,11 @@ static void r600_copy_into_tiled_texture(struct pipe_context *ctx, struct r600_t ctx->flush(ctx, 0, NULL); } -static unsigned long r600_texture_get_offset(struct r600_resource_texture *rtex, +static unsigned r600_texture_get_offset(struct r600_resource_texture *rtex, unsigned level, unsigned zslice, unsigned face) { - unsigned long offset = rtex->offset[level]; + unsigned offset = rtex->offset[level]; switch (rtex->resource.base.b.target) { case PIPE_TEXTURE_3D: @@ -139,7 +139,7 @@ static void r600_setup_miptree(struct pipe_screen *screen, struct pipe_resource *ptex = &rtex->resource.base.b; struct radeon *radeon = (struct radeon *)screen->winsys; enum chip_class chipc = r600_get_family_class(radeon); - unsigned long pitch, size, layer_size, i, offset; + unsigned pitch, size, layer_size, i, offset; unsigned nblocksy; for (i = 0, offset = 0; i <= ptex->last_level; i++) { @@ -238,7 +238,7 @@ static struct pipe_surface *r600_get_tex_surface(struct pipe_screen *screen, { struct r600_resource_texture *rtex = (struct r600_resource_texture*)texture; struct pipe_surface *surface = CALLOC_STRUCT(pipe_surface); - unsigned long offset; + unsigned offset; if (surface == NULL) return NULL; @@ -427,7 +427,7 @@ void* r600_texture_transfer_map(struct pipe_context *ctx, struct r600_bo *bo; enum pipe_format format = transfer->resource->format; struct radeon *radeon = (struct radeon *)ctx->screen->winsys; - unsigned long offset = 0; + unsigned offset = 0; char *map; if (rtransfer->linear_texture) { -- cgit v1.2.3 From 88c1b32c62427c24ea276f20ac5ef260385a98d4 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 11:17:44 +1000 Subject: r600g: use blitter for hw copy region at the moment depth copies are failing (piglit depth-level-clamp) so use the fallback for now until get some time to investigate. --- src/gallium/drivers/r600/r600_blit.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index aecc87f7da1..cae05aab28b 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -22,6 +22,7 @@ */ #include #include +#include #include "r600_pipe.h" enum r600_blitter_op /* bitmask */ @@ -163,6 +164,26 @@ static void r600_clear_depth_stencil(struct pipe_context *ctx, } + +/* Copy a block of pixels from one surface to another using HW. */ +static void r600_hw_copy_region(struct pipe_context *ctx, + struct pipe_resource *dst, + struct pipe_subresource subdst, + unsigned dstx, unsigned dsty, unsigned dstz, + struct pipe_resource *src, + struct pipe_subresource subsrc, + unsigned srcx, unsigned srcy, unsigned srcz, + unsigned width, unsigned height) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + r600_blitter_begin(ctx, R600_COPY); + util_blitter_copy_region(rctx->blitter, dst, subdst, dstx, dsty, dstz, + src, subsrc, srcx, srcy, srcz, width, height, + TRUE); + r600_blitter_end(ctx); +} + static void r600_resource_copy_region(struct pipe_context *ctx, struct pipe_resource *dst, struct pipe_subresource subdst, @@ -172,8 +193,16 @@ static void r600_resource_copy_region(struct pipe_context *ctx, unsigned srcx, unsigned srcy, unsigned srcz, unsigned width, unsigned height) { - util_resource_copy_region(ctx, dst, subdst, dstx, dsty, dstz, - src, subsrc, srcx, srcy, srcz, width, height); + boolean is_depth; + /* there is something wrong with depth resource copies at the moment so avoid them for now */ + is_depth = util_format_get_component_bits(src->format, UTIL_FORMAT_COLORSPACE_ZS, 0) != 0; + if (is_depth) + util_resource_copy_region(ctx, dst, subdst, dstx, dsty, dstz, + src, subsrc, srcx, srcy, srcz, width, height); + else + r600_hw_copy_region(ctx, dst, subdst, dstx, dsty, dstz, + src, subsrc, srcx, srcy, srcz, width, height); + } void r600_init_blit_functions(struct r600_pipe_context *rctx) -- cgit v1.2.3 From 92e729bba5aab9958f5ba1339c27f6bfe743ef2e Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 17:40:32 +1000 Subject: r600g: evergreen add stencil export bit --- src/gallium/drivers/r600/evergreen_state.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 49a888abe35..379d66f48c6 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -1558,6 +1558,11 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader R_02880C_DB_SHADER_CONTROL, S_02880C_Z_EXPORT_ENABLE(1), S_02880C_Z_EXPORT_ENABLE(1), NULL); + if (rshader->output[i].name == TGSI_SEMANTIC_STENCIL) + r600_pipe_state_add_reg(rstate, + R_02880C_DB_SHADER_CONTROL, + S_02880C_STENCIL_EXPORT_ENABLE(1), + S_02880C_STENCIL_EXPORT_ENABLE(1), NULL); } exports_ps = 0; -- cgit v1.2.3 From 6da8129b3c25be1da6d6f6a0e56b8f70b1e2f054 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 17:45:10 +1000 Subject: r600g: add missing eg reg definition --- src/gallium/drivers/r600/evergreend.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h index eb36a35165e..94661fdd1f6 100644 --- a/src/gallium/drivers/r600/evergreend.h +++ b/src/gallium/drivers/r600/evergreend.h @@ -686,6 +686,9 @@ #define S_02880C_Z_EXPORT_ENABLE(x) (((x) & 0x1) << 0) #define G_02880C_Z_EXPORT_ENABLE(x) (((x) >> 0) & 0x1) #define C_02880C_Z_EXPORT_ENABLE 0xFFFFFFFE +#define S_02880C_STENCIL_EXPORT_ENABLE(x) (((x) & 0x2) << 0) +#define G_02880C_STENCIL_EXPORT_ENABLE(x) (((x) >> 0) & 0x2) +#define C_02880C_STENCIL_EXPORT_ENABLE 0xFFFFFFFD #define S_02880C_Z_ORDER(x) (((x) & 0x3) << 4) #define G_02880C_Z_ORDER(x) (((x) >> 4) & 0x3) #define C_02880C_Z_ORDER 0xFFFFFCFF -- cgit v1.2.3 From 40cc5bfcd70e412289dbb32a1ebca91bf109e1bd Mon Sep 17 00:00:00 2001 From: Stephan Schmid Date: Mon, 11 Oct 2010 15:49:56 +0200 Subject: r600g: fix relative addressing when splitting constant accesses Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600_shader.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 8930d4e1831..470f355cde2 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -808,6 +808,7 @@ static int tgsi_split_constant(struct r600_shader_ctx *ctx, struct r600_bc_alu_s alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV); alu.src[0].sel = r600_src[i].sel; alu.src[0].chan = k; + alu.src[0].rel = r600_src[i].rel; alu.dst.sel = treg; alu.dst.chan = k; alu.dst.write = 1; @@ -818,6 +819,7 @@ static int tgsi_split_constant(struct r600_shader_ctx *ctx, struct r600_bc_alu_s return r; } r600_src[i].sel = treg; + r600_src[i].rel =0; j--; } } -- cgit v1.2.3 From ff4b397517a374ac3d4bf437f85ae6a96171a714 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 18:50:37 +1000 Subject: r600g: fix stencil export for evergreen harder --- src/gallium/drivers/r600/evergreen_state.c | 2 +- src/gallium/drivers/r600/evergreend.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 379d66f48c6..542df11db66 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -1568,7 +1568,7 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader exports_ps = 0; num_cout = 0; for (i = 0; i < rshader->noutput; i++) { - if (rshader->output[i].name == TGSI_SEMANTIC_POSITION) + if (rshader->output[i].name == TGSI_SEMANTIC_POSITION || rshader->output[i].name == TGSI_SEMANTIC_STENCIL) exports_ps |= 1; else if (rshader->output[i].name == TGSI_SEMANTIC_COLOR) { num_cout++; diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h index 94661fdd1f6..5d07f532f09 100644 --- a/src/gallium/drivers/r600/evergreend.h +++ b/src/gallium/drivers/r600/evergreend.h @@ -686,8 +686,8 @@ #define S_02880C_Z_EXPORT_ENABLE(x) (((x) & 0x1) << 0) #define G_02880C_Z_EXPORT_ENABLE(x) (((x) >> 0) & 0x1) #define C_02880C_Z_EXPORT_ENABLE 0xFFFFFFFE -#define S_02880C_STENCIL_EXPORT_ENABLE(x) (((x) & 0x2) << 0) -#define G_02880C_STENCIL_EXPORT_ENABLE(x) (((x) >> 0) & 0x2) +#define S_02880C_STENCIL_EXPORT_ENABLE(x) (((x) & 0x1) << 1) +#define G_02880C_STENCIL_EXPORT_ENABLE(x) (((x) >> 1) & 0x1) #define C_02880C_STENCIL_EXPORT_ENABLE 0xFFFFFFFD #define S_02880C_Z_ORDER(x) (((x) & 0x3) << 4) #define G_02880C_Z_ORDER(x) (((x) >> 4) & 0x3) -- cgit v1.2.3 From d838e4f66d585baf3577f1298dd97d1b7c444ac2 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Wed, 13 Oct 2010 15:26:37 +0200 Subject: gallivm: only use lp_build_conv 4x4f -> 1x16 ub fastpath with sse2 This is relying on lp_build_pack2 using the sse2 pack intrinsics which handle clamping. (Alternatively could have make it use lp_build_packs2 but it might not even produce more efficient code than not using the fastpath in the first place.) --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 20aa2577830..20aa93e7781 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -267,7 +267,9 @@ lp_build_conv(LLVMBuilderRef builder, dst_type.sign == 0 && dst_type.norm == 1 && dst_type.width == 8 && - dst_type.length == 16) + dst_type.length == 16 && + + util_cpu_caps.has_sse2) { int i; @@ -306,23 +308,7 @@ lp_build_conv(LLVMBuilderRef builder, c = LLVMBuildFMul(builder, src[2], const_255f, ""); d = LLVMBuildFMul(builder, src[3], const_255f, ""); - /* lp_build_round generates excessively general code without - * sse2, so do rounding manually. - */ - if (!util_cpu_caps.has_sse2) { - LLVMValueRef const_half = lp_build_const_vec(src_type, 0.5f); - - a = LLVMBuildFAdd(builder, a, const_half, ""); - b = LLVMBuildFAdd(builder, b, const_half, ""); - c = LLVMBuildFAdd(builder, c, const_half, ""); - d = LLVMBuildFAdd(builder, d, const_half, ""); - - src_int0 = LLVMBuildFPToSI(builder, a, int32_vec_type, ""); - src_int1 = LLVMBuildFPToSI(builder, b, int32_vec_type, ""); - src_int2 = LLVMBuildFPToSI(builder, c, int32_vec_type, ""); - src_int3 = LLVMBuildFPToSI(builder, d, int32_vec_type, ""); - } - else { + { struct lp_build_context bld; bld.builder = builder; @@ -339,7 +325,7 @@ lp_build_conv(LLVMBuilderRef builder, src_int2 = lp_build_iround(&bld, c); src_int3 = lp_build_iround(&bld, d); } - + /* relying on clamping behavior of sse2 intrinsics here */ lo = lp_build_pack2(builder, int32_type, int16_type, src_int0, src_int1); hi = lp_build_pack2(builder, int32_type, int16_type, src_int2, src_int3); dst[i] = lp_build_pack2(builder, int16_type, dst_type, lo, hi); -- cgit v1.2.3 From e3c1c5377c7fcd17085bfb22fbc1cf30646751ba Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Tue, 12 Oct 2010 10:34:03 -0400 Subject: Get rid of GL/internal/glcore.h __GLcontextModes is always only used as an implementation internal struct at this point and we shouldn't install glcore.h anymore. Anything that needs __GLcontextModes should just include the struct in its headers files directly. --- include/GL/internal/glcore.h | 181 ------------------------ src/gallium/state_trackers/egl/x11/glcore.h | 181 ++++++++++++++++++++++++ src/gallium/state_trackers/egl/x11/glxinit.c | 2 +- src/gallium/state_trackers/egl/x11/x11_screen.h | 2 +- src/mesa/drivers/dri/common/dri_util.h | 1 - src/mesa/drivers/dri/common/drisw_util.h | 1 - src/mesa/main/context.c | 2 +- src/mesa/main/context.h | 2 +- src/mesa/main/glheader.h | 38 ++++- src/mesa/main/imports.h | 10 +- src/mesa/main/mtypes.h | 87 ++++++++++++ 11 files changed, 314 insertions(+), 193 deletions(-) delete mode 100644 include/GL/internal/glcore.h create mode 100644 src/gallium/state_trackers/egl/x11/glcore.h (limited to 'src/gallium') diff --git a/include/GL/internal/glcore.h b/include/GL/internal/glcore.h deleted file mode 100644 index 547b1113707..00000000000 --- a/include/GL/internal/glcore.h +++ /dev/null @@ -1,181 +0,0 @@ -#ifndef __gl_core_h_ -#define __gl_core_h_ - -/* - * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) - * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice including the dates of first publication and - * either this permission notice or a reference to - * http://oss.sgi.com/projects/FreeB/ - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Except as contained in this notice, the name of Silicon Graphics, Inc. - * shall not be used in advertising or otherwise to promote the sale, use or - * other dealings in this Software without prior written authorization from - * Silicon Graphics, Inc. - */ - -#if !defined(_WIN32_WCE) -#include -#endif - -#define GL_CORE_SGI 1 -#define GL_CORE_MESA 2 -#define GL_CORE_APPLE 4 -#define GL_CORE_WINDOWS 8 - -typedef struct __GLcontextRec __GLcontext; - -/* -** This file defines the interface between the GL core and the surrounding -** "operating system" that supports it (currently the GLX or WGL extensions). -** -** Members (data and function pointers) are documented as imported or -** exported according to how they are used by the core rendering functions. -** Imported members are initialized by the "operating system" and used by -** the core functions. Exported members are initialized by the core functions -** and used by the "operating system". -*/ - -/** - * Mode and limit information for a context. This information is - * kept around in the context so that values can be used during - * command execution, and for returning information about the - * context to the application. - * - * Instances of this structure are shared by the driver and the loader. To - * maintain binary compatability, new fields \b must be added only to the - * end of the structure. - * - * \sa _gl_context_modes_create - */ -typedef struct __GLcontextModesRec { - struct __GLcontextModesRec * next; - - GLboolean rgbMode; - GLboolean floatMode; - GLboolean colorIndexMode; - GLuint doubleBufferMode; - GLuint stereoMode; - - GLboolean haveAccumBuffer; - GLboolean haveDepthBuffer; - GLboolean haveStencilBuffer; - - GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */ - GLuint redMask, greenMask, blueMask, alphaMask; - GLint rgbBits; /* total bits for rgb */ - GLint indexBits; /* total bits for colorindex */ - - GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits; - GLint depthBits; - GLint stencilBits; - - GLint numAuxBuffers; - - GLint level; - - GLint pixmapMode; - - /* GLX */ - GLint visualID; - GLint visualType; /**< One of the GLX X visual types. (i.e., - * \c GLX_TRUE_COLOR, etc.) - */ - - /* EXT_visual_rating / GLX 1.2 */ - GLint visualRating; - - /* EXT_visual_info / GLX 1.2 */ - GLint transparentPixel; - /* colors are floats scaled to ints */ - GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha; - GLint transparentIndex; - - /* ARB_multisample / SGIS_multisample */ - GLint sampleBuffers; - GLint samples; - - /* SGIX_fbconfig / GLX 1.3 */ - GLint drawableType; - GLint renderType; - GLint xRenderable; - GLint fbconfigID; - - /* SGIX_pbuffer / GLX 1.3 */ - GLint maxPbufferWidth; - GLint maxPbufferHeight; - GLint maxPbufferPixels; - GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ - GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ - - /* SGIX_visual_select_group */ - GLint visualSelectGroup; - - /* OML_swap_method */ - GLint swapMethod; - - GLint screen; - - /* EXT_texture_from_pixmap */ - GLint bindToTextureRgb; - GLint bindToTextureRgba; - GLint bindToMipmapTexture; - GLint bindToTextureTargets; - GLint yInverted; -} __GLcontextModes; - -/* Several fields of __GLcontextModes can take these as values. Since - * GLX header files may not be available everywhere they need to be used, - * redefine them here. - */ -#define GLX_NONE 0x8000 -#define GLX_SLOW_CONFIG 0x8001 -#define GLX_TRUE_COLOR 0x8002 -#define GLX_DIRECT_COLOR 0x8003 -#define GLX_PSEUDO_COLOR 0x8004 -#define GLX_STATIC_COLOR 0x8005 -#define GLX_GRAY_SCALE 0x8006 -#define GLX_STATIC_GRAY 0x8007 -#define GLX_TRANSPARENT_RGB 0x8008 -#define GLX_TRANSPARENT_INDEX 0x8009 -#define GLX_NON_CONFORMANT_CONFIG 0x800D -#define GLX_SWAP_EXCHANGE_OML 0x8061 -#define GLX_SWAP_COPY_OML 0x8062 -#define GLX_SWAP_UNDEFINED_OML 0x8063 - -#define GLX_DONT_CARE 0xFFFFFFFF - -#define GLX_RGBA_BIT 0x00000001 -#define GLX_COLOR_INDEX_BIT 0x00000002 -#define GLX_WINDOW_BIT 0x00000001 -#define GLX_PIXMAP_BIT 0x00000002 -#define GLX_PBUFFER_BIT 0x00000004 - -#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 -#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 -#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 -#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 -#define GLX_Y_INVERTED_EXT 0x20D4 - -#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 -#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 -#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 - -#endif /* __gl_core_h_ */ diff --git a/src/gallium/state_trackers/egl/x11/glcore.h b/src/gallium/state_trackers/egl/x11/glcore.h new file mode 100644 index 00000000000..547b1113707 --- /dev/null +++ b/src/gallium/state_trackers/egl/x11/glcore.h @@ -0,0 +1,181 @@ +#ifndef __gl_core_h_ +#define __gl_core_h_ + +/* + * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) + * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice including the dates of first publication and + * either this permission notice or a reference to + * http://oss.sgi.com/projects/FreeB/ + * shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Except as contained in this notice, the name of Silicon Graphics, Inc. + * shall not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization from + * Silicon Graphics, Inc. + */ + +#if !defined(_WIN32_WCE) +#include +#endif + +#define GL_CORE_SGI 1 +#define GL_CORE_MESA 2 +#define GL_CORE_APPLE 4 +#define GL_CORE_WINDOWS 8 + +typedef struct __GLcontextRec __GLcontext; + +/* +** This file defines the interface between the GL core and the surrounding +** "operating system" that supports it (currently the GLX or WGL extensions). +** +** Members (data and function pointers) are documented as imported or +** exported according to how they are used by the core rendering functions. +** Imported members are initialized by the "operating system" and used by +** the core functions. Exported members are initialized by the core functions +** and used by the "operating system". +*/ + +/** + * Mode and limit information for a context. This information is + * kept around in the context so that values can be used during + * command execution, and for returning information about the + * context to the application. + * + * Instances of this structure are shared by the driver and the loader. To + * maintain binary compatability, new fields \b must be added only to the + * end of the structure. + * + * \sa _gl_context_modes_create + */ +typedef struct __GLcontextModesRec { + struct __GLcontextModesRec * next; + + GLboolean rgbMode; + GLboolean floatMode; + GLboolean colorIndexMode; + GLuint doubleBufferMode; + GLuint stereoMode; + + GLboolean haveAccumBuffer; + GLboolean haveDepthBuffer; + GLboolean haveStencilBuffer; + + GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */ + GLuint redMask, greenMask, blueMask, alphaMask; + GLint rgbBits; /* total bits for rgb */ + GLint indexBits; /* total bits for colorindex */ + + GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits; + GLint depthBits; + GLint stencilBits; + + GLint numAuxBuffers; + + GLint level; + + GLint pixmapMode; + + /* GLX */ + GLint visualID; + GLint visualType; /**< One of the GLX X visual types. (i.e., + * \c GLX_TRUE_COLOR, etc.) + */ + + /* EXT_visual_rating / GLX 1.2 */ + GLint visualRating; + + /* EXT_visual_info / GLX 1.2 */ + GLint transparentPixel; + /* colors are floats scaled to ints */ + GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha; + GLint transparentIndex; + + /* ARB_multisample / SGIS_multisample */ + GLint sampleBuffers; + GLint samples; + + /* SGIX_fbconfig / GLX 1.3 */ + GLint drawableType; + GLint renderType; + GLint xRenderable; + GLint fbconfigID; + + /* SGIX_pbuffer / GLX 1.3 */ + GLint maxPbufferWidth; + GLint maxPbufferHeight; + GLint maxPbufferPixels; + GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ + GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ + + /* SGIX_visual_select_group */ + GLint visualSelectGroup; + + /* OML_swap_method */ + GLint swapMethod; + + GLint screen; + + /* EXT_texture_from_pixmap */ + GLint bindToTextureRgb; + GLint bindToTextureRgba; + GLint bindToMipmapTexture; + GLint bindToTextureTargets; + GLint yInverted; +} __GLcontextModes; + +/* Several fields of __GLcontextModes can take these as values. Since + * GLX header files may not be available everywhere they need to be used, + * redefine them here. + */ +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 + +#define GLX_DONT_CARE 0xFFFFFFFF + +#define GLX_RGBA_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_PBUFFER_BIT 0x00000004 + +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 + +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 + +#endif /* __gl_core_h_ */ diff --git a/src/gallium/state_trackers/egl/x11/glxinit.c b/src/gallium/state_trackers/egl/x11/glxinit.c index 57c6aaff864..df8370f8d7d 100644 --- a/src/gallium/state_trackers/egl/x11/glxinit.c +++ b/src/gallium/state_trackers/egl/x11/glxinit.c @@ -18,7 +18,7 @@ #include "GL/glxproto.h" #include "GL/glxtokens.h" #include "GL/gl.h" /* for GL types needed by __GLcontextModes */ -#include "GL/internal/glcore.h" /* for __GLcontextModes */ +#include "glcore.h" /* for __GLcontextModes */ #include "glxinit.h" diff --git a/src/gallium/state_trackers/egl/x11/x11_screen.h b/src/gallium/state_trackers/egl/x11/x11_screen.h index bc0ef69ec66..2e313e0148e 100644 --- a/src/gallium/state_trackers/egl/x11/x11_screen.h +++ b/src/gallium/state_trackers/egl/x11/x11_screen.h @@ -30,7 +30,7 @@ #include #include #include "GL/gl.h" /* for GL types needed by __GLcontextModes */ -#include "GL/internal/glcore.h" /* for __GLcontextModes */ +#include "glcore.h" /* for __GLcontextModes */ #include "pipe/p_compiler.h" #include "common/native.h" diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h index 785beacd817..9fc797b6666 100644 --- a/src/mesa/drivers/dri/common/dri_util.h +++ b/src/mesa/drivers/dri/common/dri_util.h @@ -54,7 +54,6 @@ #include "xmlconfig.h" #include "main/glheader.h" #include "main/mtypes.h" -#include "GL/internal/glcore.h" #include "GL/internal/dri_interface.h" #define GLX_BAD_CONTEXT 5 diff --git a/src/mesa/drivers/dri/common/drisw_util.h b/src/mesa/drivers/dri/common/drisw_util.h index 9c3d01c99c0..2444f285737 100644 --- a/src/mesa/drivers/dri/common/drisw_util.h +++ b/src/mesa/drivers/dri/common/drisw_util.h @@ -39,7 +39,6 @@ #include "main/mtypes.h" #include -#include #include typedef struct _drmLock drmLock; diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 284c8b1d37b..0a527040d98 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -163,7 +163,7 @@ GLfloat _mesa_ubyte_to_float_color_tab[256]; * We have to finish any pending rendering. */ void -_mesa_notifySwapBuffers(__GLcontext *ctx) +_mesa_notifySwapBuffers(GLcontext *ctx) { if (MESA_VERBOSE & VERBOSE_SWAPBUFFERS) _mesa_debug(ctx, "SwapBuffers\n"); diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index c61da62826f..b130bbb066f 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -157,7 +157,7 @@ extern void _mesa_init_get_hash(GLcontext *ctx); extern void -_mesa_notifySwapBuffers(__GLcontext *gc); +_mesa_notifySwapBuffers(GLcontext *gc); extern struct _glapi_table * diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h index 45f7b55ad2a..1fe8c99f0f5 100644 --- a/src/mesa/main/glheader.h +++ b/src/mesa/main/glheader.h @@ -52,7 +52,6 @@ #define GL_GLEXT_PROTOTYPES #include "GL/gl.h" #include "GL/glext.h" -#include "GL/internal/glcore.h" /** @@ -140,6 +139,41 @@ typedef void *GLeglImageOES; */ #define MESA_GEOMETRY_PROGRAM 0x8c26 - +/* Several fields of __GLcontextModes can take these as values. Since + * GLX header files may not be available everywhere they need to be used, + * redefine them here. + */ +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 + +#define GLX_DONT_CARE 0xFFFFFFFF + +#define GLX_RGBA_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_PBUFFER_BIT 0x00000004 + +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 + +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 #endif /* GLHEADER_H */ diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index 751f2065011..a56e0af9b5c 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -568,17 +568,19 @@ _mesa_str_checksum(const char *str); extern int _mesa_snprintf( char *str, size_t size, const char *fmt, ... ) PRINTFLIKE(3, 4); +struct __GLcontextRec; + extern void -_mesa_warning( __GLcontext *gc, const char *fmtString, ... ) PRINTFLIKE(2, 3); +_mesa_warning( struct __GLcontextRec *gc, const char *fmtString, ... ) PRINTFLIKE(2, 3); extern void -_mesa_problem( const __GLcontext *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); +_mesa_problem( const struct __GLcontextRec *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); extern void -_mesa_error( __GLcontext *ctx, GLenum error, const char *fmtString, ... ) PRINTFLIKE(3, 4); +_mesa_error( struct __GLcontextRec *ctx, GLenum error, const char *fmtString, ... ) PRINTFLIKE(3, 4); extern void -_mesa_debug( const __GLcontext *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); +_mesa_debug( const struct __GLcontextRec *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); #if defined(_MSC_VER) && !defined(snprintf) diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 4851f0460cc..f428922814d 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -549,6 +549,93 @@ struct gl_shine_tab GLuint refcount; }; +/** + * Mode and limit information for a context. This information is + * kept around in the context so that values can be used during + * command execution, and for returning information about the + * context to the application. + * + * Instances of this structure are shared by the driver and the loader. To + * maintain binary compatability, new fields \b must be added only to the + * end of the structure. + * + * \sa _gl_context_modes_create + */ +typedef struct __GLcontextModesRec { + struct __GLcontextModesRec * next; + + GLboolean rgbMode; + GLboolean floatMode; + GLboolean colorIndexMode; + GLuint doubleBufferMode; + GLuint stereoMode; + + GLboolean haveAccumBuffer; + GLboolean haveDepthBuffer; + GLboolean haveStencilBuffer; + + GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */ + GLuint redMask, greenMask, blueMask, alphaMask; + GLint rgbBits; /* total bits for rgb */ + GLint indexBits; /* total bits for colorindex */ + + GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits; + GLint depthBits; + GLint stencilBits; + + GLint numAuxBuffers; + + GLint level; + + GLint pixmapMode; + + /* GLX */ + GLint visualID; + GLint visualType; /**< One of the GLX X visual types. (i.e., + * \c GLX_TRUE_COLOR, etc.) + */ + + /* EXT_visual_rating / GLX 1.2 */ + GLint visualRating; + + /* EXT_visual_info / GLX 1.2 */ + GLint transparentPixel; + /* colors are floats scaled to ints */ + GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha; + GLint transparentIndex; + + /* ARB_multisample / SGIS_multisample */ + GLint sampleBuffers; + GLint samples; + + /* SGIX_fbconfig / GLX 1.3 */ + GLint drawableType; + GLint renderType; + GLint xRenderable; + GLint fbconfigID; + + /* SGIX_pbuffer / GLX 1.3 */ + GLint maxPbufferWidth; + GLint maxPbufferHeight; + GLint maxPbufferPixels; + GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ + GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ + + /* SGIX_visual_select_group */ + GLint visualSelectGroup; + + /* OML_swap_method */ + GLint swapMethod; + + GLint screen; + + /* EXT_texture_from_pixmap */ + GLint bindToTextureRgb; + GLint bindToTextureRgba; + GLint bindToMipmapTexture; + GLint bindToTextureTargets; + GLint yInverted; +} __GLcontextModes; /** * Light source state. -- cgit v1.2.3 From 705e142dda047f24b563fc2bea0f922173e91d1b Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Tue, 12 Oct 2010 11:40:05 -0400 Subject: gl: Remove unused GLcontextModes fields --- src/gallium/state_trackers/glx/xlib/xm_api.c | 13 ++++++------- src/gallium/state_trackers/glx/xlib/xm_api.h | 1 + src/mesa/drivers/dri/common/dri_util.c | 3 +-- src/mesa/drivers/dri/common/utils.c | 3 --- src/mesa/drivers/x11/xm_api.c | 8 ++++---- src/mesa/drivers/x11/xmesaP.h | 1 + src/mesa/drivers/x11/xmesa_x.h | 2 +- src/mesa/main/context.c | 1 - src/mesa/main/glheader.h | 16 ---------------- src/mesa/main/mtypes.h | 21 --------------------- 10 files changed, 14 insertions(+), 55 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index f950c8858bc..2edeab0d74a 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -569,7 +569,7 @@ initialize_visual_and_buffer(XMesaVisual v, XMesaBuffer b, /* RGB WINDOW: * We support RGB rendering into almost any kind of visual. */ - const int xclass = v->mesa_visual.visualType; + const int xclass = v->visualType; if (xclass != GLX_TRUE_COLOR && xclass == !GLX_DIRECT_COLOR) { _mesa_warning(NULL, "XMesa: RGB mode rendering not supported in given visual.\n"); @@ -716,13 +716,13 @@ XMesaVisual XMesaCreateVisual( Display *display, v->mesa_visual.redMask = visinfo->red_mask; v->mesa_visual.greenMask = visinfo->green_mask; v->mesa_visual.blueMask = visinfo->blue_mask; - v->mesa_visual.visualID = visinfo->visualid; - v->mesa_visual.screen = visinfo->screen; + v->visualID = visinfo->visualid; + v->screen = visinfo->screen; #if !(defined(__cplusplus) || defined(c_plusplus)) - v->mesa_visual.visualType = xmesa_convert_from_x_visual_type(visinfo->class); + v->visualType = xmesa_convert_from_x_visual_type(visinfo->class); #else - v->mesa_visual.visualType = xmesa_convert_from_x_visual_type(visinfo->c_class); + v->visualType = xmesa_convert_from_x_visual_type(visinfo->c_class); #endif v->mesa_visual.visualRating = visualCaveat; @@ -733,7 +733,7 @@ XMesaVisual XMesaCreateVisual( Display *display, (void) initialize_visual_and_buffer( v, NULL, rgb_flag, 0, 0 ); { - const int xclass = v->mesa_visual.visualType; + const int xclass = v->visualType; if (xclass == GLX_TRUE_COLOR || xclass == GLX_DIRECT_COLOR) { red_bits = _mesa_bitcount(GET_REDMASK(v)); green_bits = _mesa_bitcount(GET_GREENMASK(v)); @@ -783,7 +783,6 @@ XMesaVisual XMesaCreateVisual( Display *display, vis->numAuxBuffers = 0; vis->level = 0; - vis->pixmapMode = 0; vis->sampleBuffers = 0; vis->samples = 0; } diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.h b/src/gallium/state_trackers/glx/xlib/xm_api.h index fedf2b2d5a1..33062832961 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.h +++ b/src/gallium/state_trackers/glx/xlib/xm_api.h @@ -281,6 +281,7 @@ XMesaCopyContext(XMesaContext src, XMesaContext dst, unsigned long mask); */ struct xmesa_visual { GLvisual mesa_visual; /* Device independent visual parameters */ + int screen, visualID, visualType; Display *display; /* The X11 display */ XVisualInfo * visinfo; /* X's visual info (pointer to private copy) */ XVisualInfo *vishandle; /* Only used in fakeglx.c */ diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index d46f622d573..87b475f203e 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -444,8 +444,7 @@ driCreateNewDrawable(__DRIscreen *psp, const __DRIconfig *config, pdp->driScreenPriv = psp; - if (!(*psp->DriverAPI.CreateBuffer)(psp, pdp, &config->modes, - renderType == GLX_PIXMAP_BIT)) { + if (!(*psp->DriverAPI.CreateBuffer)(psp, pdp, &config->modes, 0)) { free(pdp); return NULL; } diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 0685d2f0e61..87bf5662b0b 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -620,9 +620,6 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type, modes->transparentBlue = GLX_DONT_CARE; modes->transparentAlpha = GLX_DONT_CARE; modes->transparentIndex = GLX_DONT_CARE; - modes->visualType = GLX_DONT_CARE; - modes->renderType = GLX_RGBA_BIT; - modes->drawableType = GLX_WINDOW_BIT; modes->rgbMode = GL_TRUE; if ( db_modes[i] == GLX_NONE ) { diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index dac1668cfe1..984caa4f0a1 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1397,14 +1397,14 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, v->mesa_visual.redMask = visinfo->redMask; v->mesa_visual.greenMask = visinfo->greenMask; v->mesa_visual.blueMask = visinfo->blueMask; - v->mesa_visual.visualID = visinfo->vid; - v->mesa_visual.screen = 0; /* FIXME: What should be done here? */ + v->visualID = visinfo->vid; + v->screen = 0; /* FIXME: What should be done here? */ #else v->mesa_visual.redMask = visinfo->red_mask; v->mesa_visual.greenMask = visinfo->green_mask; v->mesa_visual.blueMask = visinfo->blue_mask; - v->mesa_visual.visualID = visinfo->visualid; - v->mesa_visual.screen = visinfo->screen; + v->visualID = visinfo->visualid; + v->screen = visinfo->screen; #endif #if defined(XFree86Server) || !(defined(__cplusplus) || defined(c_plusplus)) diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index e0a6908228d..939b7a7c509 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -86,6 +86,7 @@ enum pixel_format { struct xmesa_visual { GLvisual mesa_visual; /* Device independent visual parameters */ XMesaDisplay *display; /* The X11 display */ + int screen, visualID; #ifdef XFree86Server GLint ColormapEntries; GLint nplanes; diff --git a/src/mesa/drivers/x11/xmesa_x.h b/src/mesa/drivers/x11/xmesa_x.h index 865bab4313b..ea6cb3f24e1 100644 --- a/src/mesa/drivers/x11/xmesa_x.h +++ b/src/mesa/drivers/x11/xmesa_x.h @@ -79,7 +79,7 @@ typedef XColor XMesaColor; #define GET_GREENMASK(__v) __v->mesa_visual.greenMask #define GET_BLUEMASK(__v) __v->mesa_visual.blueMask #define GET_VISUAL_DEPTH(__v) __v->visinfo->depth -#define GET_BLACK_PIXEL(__v) BlackPixel(__v->display, __v->mesa_visual.screen) +#define GET_BLACK_PIXEL(__v) BlackPixel(__v->display, __v->screen) #define CHECK_BYTE_ORDER(__v) host_byte_order()==ImageByteOrder(__v->display) #define CHECK_FOR_HPCR(__v) XInternAtom(__v->display, "_HP_RGB_SMOOTH_MAP_LIST", True) diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 0a527040d98..a3479f1f7dc 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -296,7 +296,6 @@ _mesa_initialize_visual( GLvisual *vis, vis->numAuxBuffers = 0; vis->level = 0; - vis->pixmapMode = 0; vis->sampleBuffers = numSamples > 0 ? 1 : 0; vis->samples = numSamples; diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h index 1fe8c99f0f5..0c9013de66e 100644 --- a/src/mesa/main/glheader.h +++ b/src/mesa/main/glheader.h @@ -160,20 +160,4 @@ typedef void *GLeglImageOES; #define GLX_DONT_CARE 0xFFFFFFFF -#define GLX_RGBA_BIT 0x00000001 -#define GLX_COLOR_INDEX_BIT 0x00000002 -#define GLX_WINDOW_BIT 0x00000001 -#define GLX_PIXMAP_BIT 0x00000002 -#define GLX_PBUFFER_BIT 0x00000004 - -#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 -#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 -#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 -#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 -#define GLX_Y_INVERTED_EXT 0x20D4 - -#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 -#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 -#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 - #endif /* GLHEADER_H */ diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index f428922814d..8eae64b62aa 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -562,8 +562,6 @@ struct gl_shine_tab * \sa _gl_context_modes_create */ typedef struct __GLcontextModesRec { - struct __GLcontextModesRec * next; - GLboolean rgbMode; GLboolean floatMode; GLboolean colorIndexMode; @@ -587,14 +585,6 @@ typedef struct __GLcontextModesRec { GLint level; - GLint pixmapMode; - - /* GLX */ - GLint visualID; - GLint visualType; /**< One of the GLX X visual types. (i.e., - * \c GLX_TRUE_COLOR, etc.) - */ - /* EXT_visual_rating / GLX 1.2 */ GLint visualRating; @@ -608,12 +598,6 @@ typedef struct __GLcontextModesRec { GLint sampleBuffers; GLint samples; - /* SGIX_fbconfig / GLX 1.3 */ - GLint drawableType; - GLint renderType; - GLint xRenderable; - GLint fbconfigID; - /* SGIX_pbuffer / GLX 1.3 */ GLint maxPbufferWidth; GLint maxPbufferHeight; @@ -621,14 +605,9 @@ typedef struct __GLcontextModesRec { GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ - /* SGIX_visual_select_group */ - GLint visualSelectGroup; - /* OML_swap_method */ GLint swapMethod; - GLint screen; - /* EXT_texture_from_pixmap */ GLint bindToTextureRgb; GLint bindToTextureRgba; -- cgit v1.2.3 From d3491e775fb07f891463b2185d74bbad62f3ed24 Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Tue, 12 Oct 2010 11:58:47 -0400 Subject: Rename GLvisual and __GLcontextModes to struct gl_config --- .../state_trackers/dri/common/dri_context.c | 2 +- .../state_trackers/dri/common/dri_context.h | 2 +- .../state_trackers/dri/common/dri_drawable.c | 2 +- .../state_trackers/dri/common/dri_drawable.h | 2 +- src/gallium/state_trackers/dri/common/dri_screen.c | 2 +- src/gallium/state_trackers/dri/common/dri_screen.h | 2 +- src/gallium/state_trackers/dri/drm/dri2.c | 6 ++--- src/gallium/state_trackers/dri/sw/drisw.c | 2 +- src/gallium/state_trackers/glx/xlib/xm_api.c | 2 +- src/gallium/state_trackers/glx/xlib/xm_api.h | 2 +- src/mesa/drivers/beos/GLView.cpp | 8 +++--- src/mesa/drivers/dri/common/dri_util.c | 4 +-- src/mesa/drivers/dri/common/dri_util.h | 4 +-- src/mesa/drivers/dri/common/drisw_util.h | 4 +-- src/mesa/drivers/dri/common/utils.c | 14 +++++----- src/mesa/drivers/dri/common/utils.h | 2 +- src/mesa/drivers/dri/i810/i810context.c | 2 +- src/mesa/drivers/dri/i810/i810screen.c | 4 +-- src/mesa/drivers/dri/i810/i810screen.h | 2 +- src/mesa/drivers/dri/i810/i810span.c | 2 +- src/mesa/drivers/dri/i810/i810span.h | 2 +- src/mesa/drivers/dri/i915/i830_context.c | 2 +- src/mesa/drivers/dri/i915/i830_context.h | 2 +- src/mesa/drivers/dri/i915/i915_context.c | 2 +- src/mesa/drivers/dri/i915/i915_context.h | 2 +- src/mesa/drivers/dri/i965/brw_context.c | 2 +- src/mesa/drivers/dri/i965/brw_context.h | 2 +- src/mesa/drivers/dri/intel/intel_context.c | 4 +-- src/mesa/drivers/dri/intel/intel_context.h | 2 +- src/mesa/drivers/dri/intel/intel_screen.c | 12 ++++----- src/mesa/drivers/dri/mach64/mach64_context.c | 2 +- src/mesa/drivers/dri/mach64/mach64_context.h | 2 +- src/mesa/drivers/dri/mach64/mach64_screen.c | 6 ++--- src/mesa/drivers/dri/mach64/mach64_span.c | 2 +- src/mesa/drivers/dri/mach64/mach64_span.h | 2 +- src/mesa/drivers/dri/mga/mga_xmesa.c | 8 +++--- src/mesa/drivers/dri/mga/mgaspan.c | 2 +- src/mesa/drivers/dri/mga/mgaspan.h | 2 +- src/mesa/drivers/dri/nouveau/nouveau_context.c | 4 +-- src/mesa/drivers/dri/nouveau/nouveau_context.h | 4 +-- src/mesa/drivers/dri/nouveau/nouveau_driver.h | 2 +- src/mesa/drivers/dri/nouveau/nouveau_fbo.c | 2 +- src/mesa/drivers/dri/nouveau/nouveau_fbo.h | 2 +- src/mesa/drivers/dri/nouveau/nouveau_screen.c | 2 +- src/mesa/drivers/dri/nouveau/nv04_context.c | 2 +- src/mesa/drivers/dri/nouveau/nv10_context.c | 2 +- src/mesa/drivers/dri/nouveau/nv20_context.c | 2 +- src/mesa/drivers/dri/r128/r128_context.c | 2 +- src/mesa/drivers/dri/r128/r128_context.h | 2 +- src/mesa/drivers/dri/r128/r128_screen.c | 6 ++--- src/mesa/drivers/dri/r128/r128_span.c | 2 +- src/mesa/drivers/dri/r128/r128_span.h | 2 +- src/mesa/drivers/dri/r200/r200_context.c | 2 +- src/mesa/drivers/dri/r200/r200_context.h | 2 +- src/mesa/drivers/dri/r300/r300_context.c | 2 +- src/mesa/drivers/dri/r300/r300_context.h | 2 +- src/mesa/drivers/dri/r600/r600_context.c | 2 +- src/mesa/drivers/dri/r600/r600_context.h | 2 +- .../drivers/dri/radeon/radeon_common_context.c | 2 +- .../drivers/dri/radeon/radeon_common_context.h | 2 +- src/mesa/drivers/dri/radeon/radeon_context.c | 2 +- src/mesa/drivers/dri/radeon/radeon_context.h | 2 +- src/mesa/drivers/dri/radeon/radeon_screen.c | 8 +++--- src/mesa/drivers/dri/savage/savage_xmesa.c | 8 +++--- src/mesa/drivers/dri/savage/savagespan.c | 2 +- src/mesa/drivers/dri/savage/savagespan.h | 2 +- src/mesa/drivers/dri/sis/sis_context.c | 2 +- src/mesa/drivers/dri/sis/sis_context.h | 2 +- src/mesa/drivers/dri/sis/sis_screen.c | 4 +-- src/mesa/drivers/dri/sis/sis_span.c | 2 +- src/mesa/drivers/dri/sis/sis_span.h | 2 +- src/mesa/drivers/dri/swrast/swrast.c | 8 +++--- src/mesa/drivers/dri/tdfx/tdfx_context.c | 2 +- src/mesa/drivers/dri/tdfx/tdfx_context.h | 2 +- src/mesa/drivers/dri/tdfx/tdfx_dd.c | 2 +- src/mesa/drivers/dri/tdfx/tdfx_dd.h | 2 +- src/mesa/drivers/dri/tdfx/tdfx_screen.c | 4 +-- src/mesa/drivers/dri/tdfx/tdfx_span.c | 2 +- src/mesa/drivers/dri/tdfx/tdfx_span.h | 2 +- src/mesa/drivers/dri/unichrome/via_context.c | 2 +- src/mesa/drivers/dri/unichrome/via_screen.c | 4 +-- src/mesa/drivers/dri/unichrome/via_screen.h | 2 +- src/mesa/drivers/dri/unichrome/via_span.c | 2 +- src/mesa/drivers/dri/unichrome/via_span.h | 2 +- src/mesa/drivers/fbdev/glfbdev.c | 4 +-- src/mesa/drivers/osmesa/osmesa.c | 2 +- src/mesa/drivers/windows/gdi/wmesa.c | 6 ++--- src/mesa/drivers/windows/gldirect/dglcontext.h | 4 +-- src/mesa/drivers/x11/xm_buffer.c | 2 +- src/mesa/drivers/x11/xmesaP.h | 6 ++--- src/mesa/main/context.c | 30 +++++++++++----------- src/mesa/main/context.h | 18 ++++++------- src/mesa/main/framebuffer.c | 4 +-- src/mesa/main/framebuffer.h | 4 +-- src/mesa/main/glheader.h | 2 +- src/mesa/main/mtypes.h | 21 +++------------ src/mesa/state_tracker/st_context.c | 2 +- src/mesa/state_tracker/st_context.h | 2 +- src/mesa/state_tracker/st_manager.c | 8 +++--- 99 files changed, 177 insertions(+), 190 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 22e1b6dd701..770b37037f5 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -49,7 +49,7 @@ dri_init_extensions(struct dri_context *ctx) } GLboolean -dri_create_context(gl_api api, const __GLcontextModes * visual, +dri_create_context(gl_api api, const struct gl_config * visual, __DRIcontext * cPriv, void *sharedContextPrivate) { __DRIscreen *sPriv = cPriv->driScreenPriv; diff --git a/src/gallium/state_trackers/dri/common/dri_context.h b/src/gallium/state_trackers/dri/common/dri_context.h index beb59c6f684..35105e861f9 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.h +++ b/src/gallium/state_trackers/dri/common/dri_context.h @@ -88,7 +88,7 @@ dri_get_current(__DRIscreen * driScreenPriv); boolean dri_create_context(gl_api api, - const __GLcontextModes * visual, + const struct gl_config * visual, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c index 1bdfdccf439..5fd6e7863c0 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.c +++ b/src/gallium/state_trackers/dri/common/dri_drawable.c @@ -112,7 +112,7 @@ dri_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi, boolean dri_create_buffer(__DRIscreen * sPriv, __DRIdrawable * dPriv, - const __GLcontextModes * visual, boolean isPixmap) + const struct gl_config * visual, boolean isPixmap) { struct dri_screen *screen = sPriv->private; struct dri_drawable *drawable = NULL; diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h index 74e662d36c4..837d3983748 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.h +++ b/src/gallium/state_trackers/dri/common/dri_drawable.h @@ -79,7 +79,7 @@ dri_drawable(__DRIdrawable * driDrawPriv) boolean dri_create_buffer(__DRIscreen * sPriv, __DRIdrawable * dPriv, - const __GLcontextModes * visual, boolean isPixmap); + const struct gl_config * visual, boolean isPixmap); void dri_destroy_buffer(__DRIdrawable * dPriv); diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c index b3b09b605fa..252ad1768d8 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.c +++ b/src/gallium/state_trackers/dri/common/dri_screen.c @@ -227,7 +227,7 @@ dri_fill_in_modes(struct dri_screen *screen, */ void dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen, - const __GLcontextModes *mode) + const struct gl_config *mode) { memset(stvis, 0, sizeof(*stvis)); diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h b/src/gallium/state_trackers/dri/common/dri_screen.h index d4eb8f454f0..0da9b5510fc 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.h +++ b/src/gallium/state_trackers/dri/common/dri_screen.h @@ -114,7 +114,7 @@ dri_with_format(__DRIscreen * sPriv) void dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen, - const __GLcontextModes *mode); + const struct gl_config *mode); const __DRIconfig ** dri_init_screen_helper(struct dri_screen *screen, diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c index 116afccb194..3c5b0756174 100644 --- a/src/gallium/state_trackers/dri/drm/dri2.c +++ b/src/gallium/state_trackers/dri/drm/dri2.c @@ -502,7 +502,7 @@ static const __DRIextension *dri_screen_extensions[] = { /** * This is the driver specific part of the createNewScreen entry point. * - * Returns the __GLcontextModes supported by this driver. + * Returns the struct gl_config supported by this driver. */ static const __DRIconfig ** dri2_init_screen(__DRIscreen * sPriv) @@ -548,7 +548,7 @@ fail: } static boolean -dri2_create_context(gl_api api, const __GLcontextModes * visual, +dri2_create_context(gl_api api, const struct gl_config * visual, __DRIcontext * cPriv, void *sharedContextPrivate) { struct dri_context *ctx = NULL; @@ -564,7 +564,7 @@ dri2_create_context(gl_api api, const __GLcontextModes * visual, static boolean dri2_create_buffer(__DRIscreen * sPriv, __DRIdrawable * dPriv, - const __GLcontextModes * visual, boolean isPixmap) + const struct gl_config * visual, boolean isPixmap) { struct dri_drawable *drawable = NULL; diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c index 04bba631aeb..c48cc440367 100644 --- a/src/gallium/state_trackers/dri/sw/drisw.c +++ b/src/gallium/state_trackers/dri/sw/drisw.c @@ -298,7 +298,7 @@ fail: static boolean drisw_create_buffer(__DRIscreen * sPriv, __DRIdrawable * dPriv, - const __GLcontextModes * visual, boolean isPixmap) + const struct gl_config * visual, boolean isPixmap) { struct dri_drawable *drawable = NULL; diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index 2edeab0d74a..6ce386008a7 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -756,7 +756,7 @@ XMesaVisual XMesaCreateVisual( Display *display, /* initialize visual */ { - __GLcontextModes *vis = &v->mesa_visual; + struct gl_config *vis = &v->mesa_visual; vis->rgbMode = GL_TRUE; vis->doubleBufferMode = db_flag; diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.h b/src/gallium/state_trackers/glx/xlib/xm_api.h index 33062832961..b8ac979edc1 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.h +++ b/src/gallium/state_trackers/glx/xlib/xm_api.h @@ -280,7 +280,7 @@ XMesaCopyContext(XMesaContext src, XMesaContext dst, unsigned long mask); * Basically corresponds to an XVisualInfo. */ struct xmesa_visual { - GLvisual mesa_visual; /* Device independent visual parameters */ + struct gl_config mesa_visual;/* Device independent visual parameters */ int screen, visualID, visualType; Display *display; /* The X11 display */ XVisualInfo * visinfo; /* X's visual info (pointer to private copy) */ diff --git a/src/mesa/drivers/beos/GLView.cpp b/src/mesa/drivers/beos/GLView.cpp index a029f6b200c..44082e47cf4 100644 --- a/src/mesa/drivers/beos/GLView.cpp +++ b/src/mesa/drivers/beos/GLView.cpp @@ -105,7 +105,7 @@ public: MesaDriver(); ~MesaDriver(); - void Init(BGLView * bglview, GLcontext * c, GLvisual * v, GLframebuffer * b); + void Init(BGLView * bglview, GLcontext * c, struct gl_config * v, GLframebuffer * b); void LockGL(); void UnlockGL(); @@ -121,7 +121,7 @@ private: MesaDriver &operator=(const MesaDriver &rhs); // assignment oper. illegal GLcontext * m_glcontext; - GLvisual * m_glvisual; + struct gl_config * m_glvisual; GLframebuffer * m_glframebuffer; BGLView * m_bglview; @@ -297,7 +297,7 @@ BGLView::BGLView(BRect rect, char *name, MesaDriver * md = new MesaDriver(); // examine option flags and create gl_context struct - GLvisual * visual = _mesa_create_visual( dblFlag, + struct gl_config * visual = _mesa_create_visual( dblFlag, stereoFlag, red, green, blue, alpha, depth, @@ -668,7 +668,7 @@ MesaDriver::~MesaDriver() } -void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, GLvisual * visual, GLframebuffer * framebuffer) +void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, struct gl_config * visual, GLframebuffer * framebuffer) { m_bglview = bglview; m_glcontext = ctx; diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index 87b475f203e..a5b71bd40ad 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -634,7 +634,7 @@ dri2CreateNewContextForAPI(__DRIscreen *screen, int api, __DRIcontext *shared, void *data) { __DRIcontext *context; - const __GLcontextModes *modes = (config != NULL) ? &config->modes : NULL; + const struct gl_config *modes = (config != NULL) ? &config->modes : NULL; void *shareCtx = (shared != NULL) ? shared->driverPrivate : NULL; gl_api mesa_api; @@ -754,7 +754,7 @@ setupLoaderExtensions(__DRIscreen *psp, * This is the bootstrap function for the driver. libGL supplies all of the * requisite information about the system, and the driver initializes itself. * This routine also fills in the linked list pointed to by \c driver_modes - * with the \c __GLcontextModes that the driver can support for windows or + * with the \c struct gl_config that the driver can support for windows or * pbuffers. * * For legacy DRI. diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h index 9fc797b6666..ffffb99b301 100644 --- a/src/mesa/drivers/dri/common/dri_util.h +++ b/src/mesa/drivers/dri/common/dri_util.h @@ -148,7 +148,7 @@ struct __DriverAPIRec { * Context creation callback */ GLboolean (*CreateContext)(gl_api api, - const __GLcontextModes *glVis, + const struct gl_config *glVis, __DRIcontext *driContextPriv, void *sharedContextPrivate); @@ -162,7 +162,7 @@ struct __DriverAPIRec { */ GLboolean (*CreateBuffer)(__DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *glVis, + const struct gl_config *glVis, GLboolean pixmapBuffer); /** diff --git a/src/mesa/drivers/dri/common/drisw_util.h b/src/mesa/drivers/dri/common/drisw_util.h index 2444f285737..d43f5235aa6 100644 --- a/src/mesa/drivers/dri/common/drisw_util.h +++ b/src/mesa/drivers/dri/common/drisw_util.h @@ -59,7 +59,7 @@ struct __DriverAPIRec { void (*DestroyScreen)(__DRIscreen *driScrnPriv); GLboolean (*CreateContext)(gl_api glapi, - const __GLcontextModes *glVis, + const struct gl_config *glVis, __DRIcontext *driContextPriv, void *sharedContextPrivate); @@ -67,7 +67,7 @@ struct __DriverAPIRec { GLboolean (*CreateBuffer)(__DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *glVis, + const struct gl_config *glVis, GLboolean pixmapBuffer); void (*DestroyBuffer)(__DRIdrawable *driDrawPriv); diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 87bf5662b0b..3cc496c671f 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -371,14 +371,14 @@ GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, } /** - * Creates a set of \c __GLcontextModes that a driver will expose. + * Creates a set of \c struct gl_config that a driver will expose. * - * A set of \c __GLcontextModes will be created based on the supplied + * A set of \c struct gl_config will be created based on the supplied * parameters. The number of modes processed will be 2 * * \c num_depth_stencil_bits * \c num_db_modes. * * For the most part, data is just copied from \c depth_bits, \c stencil_bits, - * \c db_modes, and \c visType into each \c __GLcontextModes element. + * \c db_modes, and \c visType into each \c struct gl_config element. * However, the meanings of \c fb_format and \c fb_type require further * explanation. The \c fb_format specifies which color components are in * each pixel and what the default order is. For example, \c GL_RGB specifies @@ -391,7 +391,7 @@ GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, * * One sublte issue is the combination of \c GL_RGB or \c GL_BGR and either * of the \c GL_UNSIGNED_INT_8_8_8_8 modes. The resulting mask values in the - * \c __GLcontextModes structure is \b identical to the \c GL_RGBA or + * \c struct gl_config structure is \b identical to the \c GL_RGBA or * \c GL_BGRA case, except the \c alphaMask is zero. This means that, as * far as this routine is concerned, \c GL_RGB with \c GL_UNSIGNED_INT_8_8_8_8 * still uses 32-bits. @@ -399,7 +399,7 @@ GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, * If in doubt, look at the tables used in the function. * * \param ptr_to_modes Pointer to a pointer to a linked list of - * \c __GLcontextModes. Upon completion, a pointer to + * \c struct gl_config. Upon completion, a pointer to * the next element to be process will be stored here. * If the function fails and returns \c GL_FALSE, this * value will be unmodified, but some elements in the @@ -505,7 +505,7 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type, const uint32_t * masks; int index; __DRIconfig **configs, **c; - __GLcontextModes *modes; + struct gl_config *modes; unsigned i, j, k, h; unsigned num_modes; unsigned num_accum_bits = (enable_accum) ? 2 : 1; @@ -685,7 +685,7 @@ __DRIconfig **driConcatConfigs(__DRIconfig **a, } #define __ATTRIB(attrib, field) \ - { attrib, offsetof(__GLcontextModes, field) } + { attrib, offsetof(struct gl_config, field) } static const struct { unsigned int attrib, offset; } attribMap[] = { __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE, rgbBits), diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h index de6070c3987..01930d784ee 100644 --- a/src/mesa/drivers/dri/common/utils.h +++ b/src/mesa/drivers/dri/common/utils.h @@ -99,7 +99,7 @@ extern GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, GLsizei *width, GLsizei *height ); struct __DRIconfigRec { - __GLcontextModes modes; + struct gl_config modes; }; extern __DRIconfig ** diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index 8f52c20c2de..aaa97f017ad 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -166,7 +166,7 @@ static const struct dri_debug_control debug_control[] = GLboolean i810CreateContext( gl_api api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/i810/i810screen.c b/src/mesa/drivers/dri/i810/i810screen.c index 56708c97cbb..098d027771f 100644 --- a/src/mesa/drivers/dri/i810/i810screen.c +++ b/src/mesa/drivers/dri/i810/i810screen.c @@ -55,7 +55,7 @@ i810FillInModes( __DRIscreen *psp, unsigned stencil_bits, GLboolean have_back_buffer ) { __DRIconfig **configs; - __GLcontextModes * m; + struct gl_config * m; unsigned depth_buffer_factor; unsigned back_buffer_factor; unsigned i; @@ -272,7 +272,7 @@ i810DestroyScreen(__DRIscreen *sPriv) static GLboolean i810CreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap ) { i810ScreenPrivate *screen = (i810ScreenPrivate *) driScrnPriv->private; diff --git a/src/mesa/drivers/dri/i810/i810screen.h b/src/mesa/drivers/dri/i810/i810screen.h index fe6db7e6e1c..25c1072ce06 100644 --- a/src/mesa/drivers/dri/i810/i810screen.h +++ b/src/mesa/drivers/dri/i810/i810screen.h @@ -79,7 +79,7 @@ typedef struct { extern GLboolean i810CreateContext( gl_api api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/i810/i810span.c b/src/mesa/drivers/dri/i810/i810span.c index 6576f6745ea..b4cae4e4e04 100644 --- a/src/mesa/drivers/dri/i810/i810span.c +++ b/src/mesa/drivers/dri/i810/i810span.c @@ -109,7 +109,7 @@ void i810InitSpanFuncs( GLcontext *ctx ) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -i810SetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +i810SetSpanFunctions(driRenderbuffer *drb, const struct gl_config *vis) { if (drb->Base.InternalFormat == GL_RGBA) { /* always 565 RGB */ diff --git a/src/mesa/drivers/dri/i810/i810span.h b/src/mesa/drivers/dri/i810/i810span.h index 9aed253bd54..c01a2f94ae7 100644 --- a/src/mesa/drivers/dri/i810/i810span.h +++ b/src/mesa/drivers/dri/i810/i810span.h @@ -9,6 +9,6 @@ extern void i810SpanRenderFinish( GLcontext *ctx ); extern void i810SpanRenderStart( GLcontext *ctx ); extern void -i810SetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); +i810SetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); #endif diff --git a/src/mesa/drivers/dri/i915/i830_context.c b/src/mesa/drivers/dri/i915/i830_context.c index 8ddce6d82a5..7783de964f8 100644 --- a/src/mesa/drivers/dri/i915/i830_context.c +++ b/src/mesa/drivers/dri/i915/i830_context.c @@ -48,7 +48,7 @@ i830InitDriverFunctions(struct dd_function_table *functions) extern const struct tnl_pipeline_stage *intel_pipeline[]; GLboolean -i830CreateContext(const __GLcontextModes * mesaVis, +i830CreateContext(const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/i915/i830_context.h b/src/mesa/drivers/dri/i915/i830_context.h index 2100ffe6d99..87cfa8ff0bf 100644 --- a/src/mesa/drivers/dri/i915/i830_context.h +++ b/src/mesa/drivers/dri/i915/i830_context.h @@ -178,7 +178,7 @@ i830_state_draw_region(struct intel_context *intel, /* i830_context.c */ extern GLboolean -i830CreateContext(const __GLcontextModes * mesaVis, +i830CreateContext(const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c index 412714ada8e..6688bd8536f 100644 --- a/src/mesa/drivers/dri/i915/i915_context.c +++ b/src/mesa/drivers/dri/i915/i915_context.c @@ -94,7 +94,7 @@ extern const struct tnl_pipeline_stage *intel_pipeline[]; GLboolean i915CreateContext(int api, - const __GLcontextModes * mesaVis, + const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index 33dad9a1953..5f3adb3db7e 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -320,7 +320,7 @@ do { \ * i915_context.c */ extern GLboolean i915CreateContext(int api, - const __GLcontextModes * mesaVis, + const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index fa82dfda8f1..d59ba0e5e87 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -57,7 +57,7 @@ static void brwInitDriverFunctions( struct dd_function_table *functions ) } GLboolean brwCreateContext( int api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 71e6d8ef895..700d201f492 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -719,7 +719,7 @@ void brwInitVtbl( struct brw_context *brw ); * brw_context.c */ GLboolean brwCreateContext( int api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 039ac6d4c12..c3b5148fe75 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -616,7 +616,7 @@ intelInitDriverFunctions(struct dd_function_table *functions) GLboolean intelInitContext(struct intel_context *intel, int api, - const __GLcontextModes * mesaVis, + const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate, struct dd_function_table *functions) @@ -626,7 +626,7 @@ intelInitContext(struct intel_context *intel, __DRIscreen *sPriv = driContextPriv->driScreenPriv; struct intel_screen *intelScreen = sPriv->private; int bo_reuse_mode; - __GLcontextModes visual; + struct gl_config visual; /* we can't do anything without a connection to the device */ if (intelScreen->bufmgr == NULL) diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 28d53284fdf..e94ba94df27 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -383,7 +383,7 @@ extern int INTEL_DEBUG; extern GLboolean intelInitContext(struct intel_context *intel, int api, - const __GLcontextModes * mesaVis, + const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate, struct dd_function_table *functions); diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index d200dc1f4ac..061f0d278d6 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -339,7 +339,7 @@ intelDestroyScreen(__DRIscreen * sPriv) static GLboolean intelCreateBuffer(__DRIscreen * driScrnPriv, __DRIdrawable * driDrawPriv, - const __GLcontextModes * mesaVis, GLboolean isPixmap) + const struct gl_config * mesaVis, GLboolean isPixmap) { struct intel_renderbuffer *rb; @@ -415,22 +415,22 @@ intelDestroyBuffer(__DRIdrawable * driDrawPriv) * init-designated function to register chipids and createcontext * functions. */ -extern GLboolean i830CreateContext(const __GLcontextModes * mesaVis, +extern GLboolean i830CreateContext(const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); extern GLboolean i915CreateContext(int api, - const __GLcontextModes * mesaVis, + const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); extern GLboolean brwCreateContext(int api, - const __GLcontextModes * mesaVis, + const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); static GLboolean intelCreateContext(gl_api api, - const __GLcontextModes * mesaVis, + const struct gl_config * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate) { @@ -488,7 +488,7 @@ intel_init_bufmgr(struct intel_screen *intelScreen) * This is the driver specific part of the createNewScreen entry point. * Called when using DRI2. * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig **intelInitScreen2(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/mach64/mach64_context.c b/src/mesa/drivers/dri/mach64/mach64_context.c index a20a1c9655b..9d89cb8a486 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.c +++ b/src/mesa/drivers/dri/mach64/mach64_context.c @@ -86,7 +86,7 @@ static const struct dri_extension card_extensions[] = /* Create the device specific context. */ GLboolean mach64CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/mach64/mach64_context.h b/src/mesa/drivers/dri/mach64/mach64_context.h index 893fc8daee9..3d7943db01b 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.h +++ b/src/mesa/drivers/dri/mach64/mach64_context.h @@ -274,7 +274,7 @@ struct mach64_context { extern GLboolean mach64CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/mach64/mach64_screen.c b/src/mesa/drivers/dri/mach64/mach64_screen.c index 239e8bc8fd0..762ffe5e430 100644 --- a/src/mesa/drivers/dri/mach64/mach64_screen.c +++ b/src/mesa/drivers/dri/mach64/mach64_screen.c @@ -71,7 +71,7 @@ mach64FillInModes( __DRIscreen *psp, unsigned stencil_bits, GLboolean have_back_buffer ) { __DRIconfig **configs; - __GLcontextModes * m; + struct gl_config * m; GLenum fb_format; GLenum fb_type; unsigned depth_buffer_factor; @@ -298,7 +298,7 @@ mach64DestroyScreen( __DRIscreen *driScreen ) static GLboolean mach64CreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap ) { mach64ScreenPtr screen = (mach64ScreenPtr) driScrnPriv->private; @@ -414,7 +414,7 @@ mach64InitDriver( __DRIscreen *driScreen ) * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig ** mach64InitScreen(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/mach64/mach64_span.c b/src/mesa/drivers/dri/mach64/mach64_span.c index 0c52c0c88cb..aff938debf7 100644 --- a/src/mesa/drivers/dri/mach64/mach64_span.c +++ b/src/mesa/drivers/dri/mach64/mach64_span.c @@ -154,7 +154,7 @@ void mach64DDInitSpanFuncs( GLcontext *ctx ) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -mach64SetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +mach64SetSpanFunctions(driRenderbuffer *drb, const struct gl_config *vis) { if (drb->Base.Format == MESA_FORMAT_RGB565) { mach64InitPointers_RGB565(&drb->Base); diff --git a/src/mesa/drivers/dri/mach64/mach64_span.h b/src/mesa/drivers/dri/mach64/mach64_span.h index 65141d05c3d..c0120ce9b03 100644 --- a/src/mesa/drivers/dri/mach64/mach64_span.h +++ b/src/mesa/drivers/dri/mach64/mach64_span.h @@ -36,6 +36,6 @@ extern void mach64DDInitSpanFuncs( GLcontext *ctx ); extern void -mach64SetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); +mach64SetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); #endif diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c index 13f73a83e90..6daeb6a6bf7 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.c +++ b/src/mesa/drivers/dri/mga/mga_xmesa.c @@ -110,7 +110,7 @@ mgaFillInModes( __DRIscreen *psp, unsigned stencil_bits, GLboolean have_back_buffer ) { __DRIconfig **configs; - __GLcontextModes * m; + struct gl_config * m; unsigned depth_buffer_factor; unsigned back_buffer_factor; GLenum fb_format; @@ -421,7 +421,7 @@ static const struct dri_debug_control debug_control[] = static GLboolean mgaCreateContext( gl_api api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { @@ -695,7 +695,7 @@ mgaDestroyContext(__DRIcontext *driContextPriv) static GLboolean mgaCreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap ) { mgaScreenPrivate *screen = (mgaScreenPrivate *) driScrnPriv->private; @@ -925,7 +925,7 @@ void mgaGetLock( mgaContextPtr mmesa, GLuint flags ) * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig **mgaInitScreen(__DRIscreen *psp) { diff --git a/src/mesa/drivers/dri/mga/mgaspan.c b/src/mesa/drivers/dri/mga/mgaspan.c index 10606c152c3..1f2fb0c39aa 100644 --- a/src/mesa/drivers/dri/mga/mgaspan.c +++ b/src/mesa/drivers/dri/mga/mgaspan.c @@ -204,7 +204,7 @@ void mgaDDInitSpanFuncs( GLcontext *ctx ) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -mgaSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +mgaSetSpanFunctions(driRenderbuffer *drb, const struct gl_config *vis) { if (drb->Base.Format == MESA_FORMAT_RGB565) { mgaInitPointers_565(&drb->Base); diff --git a/src/mesa/drivers/dri/mga/mgaspan.h b/src/mesa/drivers/dri/mga/mgaspan.h index f5e2e49b8a4..a35a9b84797 100644 --- a/src/mesa/drivers/dri/mga/mgaspan.h +++ b/src/mesa/drivers/dri/mga/mgaspan.h @@ -33,7 +33,7 @@ extern void mgaDDInitSpanFuncs( GLcontext *ctx ); extern void -mgaSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); +mgaSetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); #endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index 1c7f600d2b0..fed0b7a34f6 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -77,7 +77,7 @@ nouveau_channel_flush_notify(struct nouveau_channel *chan) GLboolean nouveau_context_create(gl_api api, - const __GLcontextModes *visual, __DRIcontext *dri_ctx, + const struct gl_config *visual, __DRIcontext *dri_ctx, void *share_ctx) { __DRIscreen *dri_screen = dri_ctx->driScreenPriv; @@ -98,7 +98,7 @@ nouveau_context_create(gl_api api, GLboolean nouveau_context_init(GLcontext *ctx, struct nouveau_screen *screen, - const GLvisual *visual, GLcontext *share_ctx) + const struct gl_config *visual, GLcontext *share_ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct dd_function_table functions; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h b/src/mesa/drivers/dri/nouveau/nouveau_context.h index 5f00327119b..8cbfefe85a4 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h @@ -95,12 +95,12 @@ struct nouveau_context { GLboolean nouveau_context_create(gl_api api, - const __GLcontextModes *visual, __DRIcontext *dri_ctx, + const struct gl_config *visual, __DRIcontext *dri_ctx, void *share_ctx); GLboolean nouveau_context_init(GLcontext *ctx, struct nouveau_screen *screen, - const GLvisual *visual, GLcontext *share_ctx); + const struct gl_config *visual, GLcontext *share_ctx); void nouveau_context_deinit(GLcontext *ctx); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.h b/src/mesa/drivers/dri/nouveau/nouveau_driver.h index 283f6eac2c8..fa2bc7abd1d 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_driver.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.h @@ -52,7 +52,7 @@ struct nouveau_driver { GLcontext *(*context_create)(struct nouveau_screen *screen, - const GLvisual *visual, + const struct gl_config *visual, GLcontext *share_ctx); void (*context_destroy)(GLcontext *ctx); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_fbo.c b/src/mesa/drivers/dri/nouveau/nouveau_fbo.c index f0caf4c6291..397d4ad1eb4 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_fbo.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_fbo.c @@ -180,7 +180,7 @@ nouveau_framebuffer_new(GLcontext *ctx, GLuint name) } struct gl_framebuffer * -nouveau_framebuffer_dri_new(const GLvisual *visual) +nouveau_framebuffer_dri_new(const struct gl_config *visual) { struct nouveau_framebuffer *nfb; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_fbo.h b/src/mesa/drivers/dri/nouveau/nouveau_fbo.h index 05ea03a075f..b1d5d8da45f 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_fbo.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_fbo.h @@ -45,7 +45,7 @@ struct nouveau_renderbuffer { #define to_nouveau_renderbuffer(x) ((struct nouveau_renderbuffer *)(x)) struct gl_framebuffer * -nouveau_framebuffer_dri_new(const GLvisual *visual); +nouveau_framebuffer_dri_new(const struct gl_config *visual); struct gl_renderbuffer * nouveau_renderbuffer_dri_new(GLenum format, __DRIdrawable *drawable); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c index 4330c8d9473..a6e2186cf43 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_screen.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.c @@ -153,7 +153,7 @@ nouveau_destroy_screen(__DRIscreen *dri_screen) static GLboolean nouveau_create_buffer(__DRIscreen *dri_screen, __DRIdrawable *drawable, - const __GLcontextModes *visual, + const struct gl_config *visual, GLboolean is_pixmap) { struct gl_renderbuffer *rb; diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c index 94422f559dc..9906cac07a9 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.c +++ b/src/mesa/drivers/dri/nouveau/nv04_context.c @@ -167,7 +167,7 @@ nv04_context_destroy(GLcontext *ctx) } static GLcontext * -nv04_context_create(struct nouveau_screen *screen, const GLvisual *visual, +nv04_context_create(struct nouveau_screen *screen, const struct gl_config *visual, GLcontext *share_ctx) { struct nv04_context *nctx; diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c index 3d898fd94d9..04b0fc37a83 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_context.c +++ b/src/mesa/drivers/dri/nouveau/nv10_context.c @@ -416,7 +416,7 @@ nv10_context_destroy(GLcontext *ctx) } static GLcontext * -nv10_context_create(struct nouveau_screen *screen, const GLvisual *visual, +nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visual, GLcontext *share_ctx) { struct nouveau_context *nctx; diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c index b9c221e716b..bc424f8b28b 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_context.c +++ b/src/mesa/drivers/dri/nouveau/nv20_context.c @@ -385,7 +385,7 @@ nv20_context_destroy(GLcontext *ctx) } static GLcontext * -nv20_context_create(struct nouveau_screen *screen, const GLvisual *visual, +nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visual, GLcontext *share_ctx) { struct nouveau_context *nctx; diff --git a/src/mesa/drivers/dri/r128/r128_context.c b/src/mesa/drivers/dri/r128/r128_context.c index b917e0e0dcd..bc25d7e8ca9 100644 --- a/src/mesa/drivers/dri/r128/r128_context.c +++ b/src/mesa/drivers/dri/r128/r128_context.c @@ -99,7 +99,7 @@ static const struct dri_debug_control debug_control[] = /* Create the device specific context. */ GLboolean r128CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/r128/r128_context.h b/src/mesa/drivers/dri/r128/r128_context.h index 65ddb3bd23b..e9ff2fe9de4 100644 --- a/src/mesa/drivers/dri/r128/r128_context.h +++ b/src/mesa/drivers/dri/r128/r128_context.h @@ -225,7 +225,7 @@ struct r128_context { extern GLboolean r128CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/r128/r128_screen.c b/src/mesa/drivers/dri/r128/r128_screen.c index 7626a159d6a..29a4f74156e 100644 --- a/src/mesa/drivers/dri/r128/r128_screen.c +++ b/src/mesa/drivers/dri/r128/r128_screen.c @@ -262,7 +262,7 @@ r128DestroyScreen( __DRIscreen *sPriv ) static GLboolean r128CreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap ) { r128ScreenPtr screen = (r128ScreenPtr) driScrnPriv->private; @@ -400,7 +400,7 @@ r128FillInModes( __DRIscreen *psp, unsigned stencil_bits, GLboolean have_back_buffer ) { __DRIconfig **configs; - __GLcontextModes * m; + struct gl_config * m; unsigned depth_buffer_factor; unsigned back_buffer_factor; GLenum fb_format; @@ -473,7 +473,7 @@ r128FillInModes( __DRIscreen *psp, * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig ** r128InitScreen(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/r128/r128_span.c b/src/mesa/drivers/dri/r128/r128_span.c index 2fbe93c5905..d9d109c17ed 100644 --- a/src/mesa/drivers/dri/r128/r128_span.c +++ b/src/mesa/drivers/dri/r128/r128_span.c @@ -429,7 +429,7 @@ void r128DDInitSpanFuncs( GLcontext *ctx ) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -r128SetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +r128SetSpanFunctions(driRenderbuffer *drb, const struct gl_config *vis) { if (drb->Base.Format == MESA_FORMAT_RGB565) { r128InitPointers_RGB565(&drb->Base); diff --git a/src/mesa/drivers/dri/r128/r128_span.h b/src/mesa/drivers/dri/r128/r128_span.h index 9af40581290..259810ee792 100644 --- a/src/mesa/drivers/dri/r128/r128_span.h +++ b/src/mesa/drivers/dri/r128/r128_span.h @@ -40,6 +40,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. extern void r128DDInitSpanFuncs( GLcontext *ctx ); extern void -r128SetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); +r128SetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); #endif diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 3b85e84d903..2a35e2d6e44 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -271,7 +271,7 @@ static void r200_init_vtbl(radeonContextPtr radeon) /* Create the device specific rendering context. */ GLboolean r200CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/r200/r200_context.h b/src/mesa/drivers/dri/r200/r200_context.h index 305958f5d76..657902fcaa7 100644 --- a/src/mesa/drivers/dri/r200/r200_context.h +++ b/src/mesa/drivers/dri/r200/r200_context.h @@ -638,7 +638,7 @@ struct r200_context { extern void r200DestroyContext( __DRIcontext *driContextPriv ); extern GLboolean r200CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate); extern GLboolean r200MakeCurrent( __DRIcontext *driContextPriv, diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index ef495aabb91..f3f1a59e6a9 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -477,7 +477,7 @@ static void r300InitIoctlFuncs(struct dd_function_table *functions) /* Create the device specific rendering context. */ GLboolean r300CreateContext(gl_api api, - const __GLcontextModes * glVisual, + const struct gl_config * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 99540e3354f..90933e0af64 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -544,7 +544,7 @@ struct r300_context { extern void r300DestroyContext(__DRIcontext * driContextPriv); extern GLboolean r300CreateContext(gl_api api, - const __GLcontextModes * glVisual, + const struct gl_config * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index cd34e6208d8..103f33d39e3 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -380,7 +380,7 @@ static void r600InitGLExtensions(GLcontext *ctx) /* Create the device specific rendering context. */ GLboolean r600CreateContext(gl_api api, - const __GLcontextModes * glVisual, + const struct gl_config * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/r600/r600_context.h b/src/mesa/drivers/dri/r600/r600_context.h index 6a831966487..1954d3429a7 100644 --- a/src/mesa/drivers/dri/r600/r600_context.h +++ b/src/mesa/drivers/dri/r600/r600_context.h @@ -193,7 +193,7 @@ struct r600_context { #define GET_EVERGREEN_CHIP(context) ((EVERGREEN_CHIP_CONTEXT*)(context->pChip)) extern GLboolean r600CreateContext(gl_api api, - const __GLcontextModes * glVisual, + const struct gl_config * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index 8804b9ce0f7..68aacd7f166 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -180,7 +180,7 @@ static void radeonInitDriverFuncs(struct dd_function_table *functions) */ GLboolean radeonInitContext(radeonContextPtr radeon, struct dd_function_table* functions, - const __GLcontextModes * glVisual, + const struct gl_config * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.h b/src/mesa/drivers/dri/radeon/radeon_common_context.h index 024e31f8ec7..5c3299f5975 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.h @@ -611,7 +611,7 @@ static INLINE uint32_t radeonPackFloat24(float f) GLboolean radeonInitContext(radeonContextPtr radeon, struct dd_function_table* functions, - const __GLcontextModes * glVisual, + const struct gl_config * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index 0b92c514660..c0b9a222c48 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -206,7 +206,7 @@ static void r100_init_vtbl(radeonContextPtr radeon) */ GLboolean r100CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/radeon/radeon_context.h b/src/mesa/drivers/dri/radeon/radeon_context.h index c4bfbfdaeb3..de71aa2c6dd 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_context.h @@ -451,7 +451,7 @@ struct r100_context { #define RADEON_OLD_PACKETS 1 extern GLboolean r100CreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index 2ea77e56c7e..f5b55ad9701 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -258,7 +258,7 @@ radeonFillInModes( __DRIscreen *psp, unsigned stencil_bits, GLboolean have_back_buffer ) { __DRIconfig **configs; - __GLcontextModes *m; + struct gl_config *m; unsigned depth_buffer_factor; unsigned back_buffer_factor; int i; @@ -1583,7 +1583,7 @@ radeonInitDriver( __DRIscreen *sPriv ) static GLboolean radeonCreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap ) { radeonScreenPtr screen = (radeonScreenPtr) driScrnPriv->private; @@ -1700,7 +1700,7 @@ radeonDestroyBuffer(__DRIdrawable *driDrawPriv) * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig ** radeonInitScreen(__DRIscreen *psp) @@ -1750,7 +1750,7 @@ radeonInitScreen(__DRIscreen *psp) * This is the driver specific part of the createNewScreen entry point. * Called when using DRI2. * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig **radeonInitScreen2(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index 45c1e56fe00..ab05fc8eb11 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -287,7 +287,7 @@ savageDestroyScreen(__DRIscreen *sPriv) static GLboolean savageCreateContext( gl_api api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { @@ -586,7 +586,7 @@ savageDestroyContext(__DRIcontext *driContextPriv) static GLboolean savageCreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap) { savageScreenPrivate *screen = (savageScreenPrivate *) driScrnPriv->private; @@ -892,7 +892,7 @@ savageFillInModes( __DRIscreen *psp, unsigned stencil_bits, GLboolean have_back_buffer ) { __DRIconfig **configs; - __GLcontextModes * m; + struct gl_config * m; unsigned depth_buffer_factor; unsigned back_buffer_factor; GLenum fb_format; @@ -968,7 +968,7 @@ savageFillInModes( __DRIscreen *psp, * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig ** savageInitScreen(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/savage/savagespan.c b/src/mesa/drivers/dri/savage/savagespan.c index 0913dd1278c..735aac50fd7 100644 --- a/src/mesa/drivers/dri/savage/savagespan.c +++ b/src/mesa/drivers/dri/savage/savagespan.c @@ -251,7 +251,7 @@ void savageDDInitSpanFuncs( GLcontext *ctx ) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -savageSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis, +savageSetSpanFunctions(driRenderbuffer *drb, const struct gl_config *vis, GLboolean float_depth) { if (drb->Base.Format == MESA_FORMAT_RGB565) { diff --git a/src/mesa/drivers/dri/savage/savagespan.h b/src/mesa/drivers/dri/savage/savagespan.h index 53a7f8b97c8..00094e255e8 100644 --- a/src/mesa/drivers/dri/savage/savagespan.h +++ b/src/mesa/drivers/dri/savage/savagespan.h @@ -31,7 +31,7 @@ extern void savageDDInitSpanFuncs( GLcontext *ctx ); extern void -savageSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis, +savageSetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis, GLboolean float_depth); diff --git a/src/mesa/drivers/dri/sis/sis_context.c b/src/mesa/drivers/dri/sis/sis_context.c index 85f26a08b7f..f460e89a561 100644 --- a/src/mesa/drivers/dri/sis/sis_context.c +++ b/src/mesa/drivers/dri/sis/sis_context.c @@ -159,7 +159,7 @@ void sisReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer, GLboolean sisCreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/sis/sis_context.h b/src/mesa/drivers/dri/sis/sis_context.h index 132cee33ee3..2ccfe1b54bd 100644 --- a/src/mesa/drivers/dri/sis/sis_context.h +++ b/src/mesa/drivers/dri/sis/sis_context.h @@ -439,7 +439,7 @@ enum _sis_verbose { }; extern GLboolean sisCreateContext( gl_api api, - const __GLcontextModes *glVisual, + const struct gl_config *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ); extern void sisDestroyContext( __DRIcontext * ); diff --git a/src/mesa/drivers/dri/sis/sis_screen.c b/src/mesa/drivers/dri/sis/sis_screen.c index 80fb455ec75..1ce52a2d674 100644 --- a/src/mesa/drivers/dri/sis/sis_screen.c +++ b/src/mesa/drivers/dri/sis/sis_screen.c @@ -193,7 +193,7 @@ sisDestroyScreen( __DRIscreen *sPriv ) static GLboolean sisCreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap ) { /*sisScreenPtr screen = (sisScreenPtr) driScrnPriv->private;*/ @@ -280,7 +280,7 @@ sisSwapBuffers(__DRIdrawable *dPriv) * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig ** sisInitScreen(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/sis/sis_span.c b/src/mesa/drivers/dri/sis/sis_span.c index 008b00160e8..ba7f6d0932e 100644 --- a/src/mesa/drivers/dri/sis/sis_span.c +++ b/src/mesa/drivers/dri/sis/sis_span.c @@ -174,7 +174,7 @@ sisDDInitSpanFuncs( GLcontext *ctx ) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -sisSetSpanFunctions(struct sis_renderbuffer *srb, const GLvisual *vis) +sisSetSpanFunctions(struct sis_renderbuffer *srb, const struct gl_config *vis) { if (srb->Base.Format == MESA_FORMAT_RGB565) { sisInitPointers_RGB565( &srb->Base ); diff --git a/src/mesa/drivers/dri/sis/sis_span.h b/src/mesa/drivers/dri/sis/sis_span.h index a1f817c44c2..eca72027d52 100644 --- a/src/mesa/drivers/dri/sis/sis_span.h +++ b/src/mesa/drivers/dri/sis/sis_span.h @@ -40,6 +40,6 @@ extern void sisSpanRenderFinish( GLcontext *ctx ); extern void sisDDInitSpanFuncs( GLcontext *ctx ); extern void -sisSetSpanFunctions(struct sis_renderbuffer *srb, const GLvisual *vis); +sisSetSpanFunctions(struct sis_renderbuffer *srb, const struct gl_config *vis); #endif diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index ff53ffd0deb..8585250eb05 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -225,7 +225,7 @@ dri_destroy_screen(__DRIscreen * sPriv) */ static GLuint -choose_pixel_format(const GLvisual *v) +choose_pixel_format(const struct gl_config *v) { int depth = v->rgbBits; @@ -307,7 +307,7 @@ swrast_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb, } static struct swrast_renderbuffer * -swrast_new_renderbuffer(const GLvisual *visual, GLboolean front) +swrast_new_renderbuffer(const struct gl_config *visual, GLboolean front) { struct swrast_renderbuffer *xrb = calloc(1, sizeof *xrb); GLuint pixel_format; @@ -370,7 +370,7 @@ swrast_new_renderbuffer(const GLvisual *visual, GLboolean front) static GLboolean dri_create_buffer(__DRIscreen * sPriv, __DRIdrawable * dPriv, - const __GLcontextModes * visual, GLboolean isPixmap) + const struct gl_config * visual, GLboolean isPixmap) { struct dri_drawable *drawable = NULL; GLframebuffer *fb; @@ -570,7 +570,7 @@ swrast_init_driver_functions(struct dd_function_table *driver) static GLboolean dri_create_context(gl_api api, - const __GLcontextModes * visual, + const struct gl_config * visual, __DRIcontext * cPriv, void *sharedContextPrivate) { struct dri_context *ctx = NULL; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.c b/src/mesa/drivers/dri/tdfx/tdfx_context.c index 6f1e8bfc498..18c626c454e 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.c @@ -163,7 +163,7 @@ static const struct dri_debug_control debug_control[] = }; GLboolean tdfxCreateContext( gl_api api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.h b/src/mesa/drivers/dri/tdfx/tdfx_context.h index 29b0876f9f9..2b2807903be 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.h @@ -938,7 +938,7 @@ struct tdfx_context { extern GLboolean tdfxCreateContext( gl_api api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_dd.c b/src/mesa/drivers/dri/tdfx/tdfx_dd.c index 2cbbeb81141..101b6da6878 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_dd.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_dd.c @@ -157,7 +157,7 @@ tdfxEndQuery(GLcontext *ctx, struct gl_query_object *q) (vis->blueBits == b) && \ (vis->alphaBits == a)) -void tdfxDDInitDriverFuncs( const __GLcontextModes *visual, +void tdfxDDInitDriverFuncs( const struct gl_config *visual, struct dd_function_table *functions ) { if ( MESA_VERBOSE & VERBOSE_DRIVER ) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_dd.h b/src/mesa/drivers/dri/tdfx/tdfx_dd.h index f419c8426af..d68e1ece1bd 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_dd.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_dd.h @@ -38,7 +38,7 @@ #include "main/context.h" -extern void tdfxDDInitDriverFuncs( const __GLcontextModes *visual, +extern void tdfxDDInitDriverFuncs( const struct gl_config *visual, struct dd_function_table *functions ); #endif diff --git a/src/mesa/drivers/dri/tdfx/tdfx_screen.c b/src/mesa/drivers/dri/tdfx/tdfx_screen.c index 26de09503ad..c9ca4fc6378 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_screen.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_screen.c @@ -155,7 +155,7 @@ tdfxInitDriver( __DRIscreen *sPriv ) static GLboolean tdfxCreateBuffer( __DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap ) { tdfxScreenPrivate *screen = (tdfxScreenPrivate *) driScrnPriv->private; @@ -394,7 +394,7 @@ tdfxFillInModes(__DRIscreen *psp, * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig ** tdfxInitScreen(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/tdfx/tdfx_span.c b/src/mesa/drivers/dri/tdfx/tdfx_span.c index 3879d506ee1..5af4a4602e3 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_span.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_span.c @@ -1348,7 +1348,7 @@ void tdfxDDInitSpanFuncs( GLcontext *ctx ) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -tdfxSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +tdfxSetSpanFunctions(driRenderbuffer *drb, const struct gl_config *vis) { if (drb->Base.InternalFormat == GL_RGBA) { if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_span.h b/src/mesa/drivers/dri/tdfx/tdfx_span.h index 6973f8d1407..cd391919599 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_span.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_span.h @@ -43,6 +43,6 @@ extern void tdfxDDInitSpanFuncs( GLcontext *ctx ); extern void -tdfxSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); +tdfxSetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); #endif diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 4298c948551..3305e934a57 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -457,7 +457,7 @@ FreeBuffer(struct via_context *vmesa) GLboolean viaCreateContext(gl_api api, - const __GLcontextModes *visual, + const struct gl_config *visual, __DRIcontext *driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/unichrome/via_screen.c b/src/mesa/drivers/dri/unichrome/via_screen.c index 4b3e9d5a38f..e6aa7b6b839 100644 --- a/src/mesa/drivers/dri/unichrome/via_screen.c +++ b/src/mesa/drivers/dri/unichrome/via_screen.c @@ -200,7 +200,7 @@ viaDestroyScreen(__DRIscreen *sPriv) static GLboolean viaCreateBuffer(__DRIscreen *driScrnPriv, __DRIdrawable *driDrawPriv, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, GLboolean isPixmap) { #if 0 @@ -369,7 +369,7 @@ viaFillInModes( __DRIscreen *psp, * * \todo maybe fold this into intelInitDriver * - * \return the __GLcontextModes supported by this driver + * \return the struct gl_config supported by this driver */ static const __DRIconfig ** viaInitScreen(__DRIscreen *psp) diff --git a/src/mesa/drivers/dri/unichrome/via_screen.h b/src/mesa/drivers/dri/unichrome/via_screen.h index 51df0ce4eb4..292646dabde 100644 --- a/src/mesa/drivers/dri/unichrome/via_screen.h +++ b/src/mesa/drivers/dri/unichrome/via_screen.h @@ -77,7 +77,7 @@ typedef struct { extern GLboolean viaCreateContext(gl_api api, - const __GLcontextModes *mesaVis, + const struct gl_config *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/unichrome/via_span.c b/src/mesa/drivers/dri/unichrome/via_span.c index fa3cbf7a79e..31f794ffc85 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.c +++ b/src/mesa/drivers/dri/unichrome/via_span.c @@ -176,7 +176,7 @@ void viaInitSpanFuncs(GLcontext *ctx) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -viaSetSpanFunctions(struct via_renderbuffer *vrb, const GLvisual *vis) +viaSetSpanFunctions(struct via_renderbuffer *vrb, const struct gl_config *vis) { if (vrb->Base.Format == MESA_FORMAT_RGB565) { viaInitPointers_565(&vrb->Base); diff --git a/src/mesa/drivers/dri/unichrome/via_span.h b/src/mesa/drivers/dri/unichrome/via_span.h index 3dca0d56619..8830075bff5 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.h +++ b/src/mesa/drivers/dri/unichrome/via_span.h @@ -30,6 +30,6 @@ extern void viaSpanRenderStart( GLcontext *ctx ); extern void viaSpanRenderFinish( GLcontext *ctx ); extern void -viaSetSpanFunctions(struct via_renderbuffer *vrb, const GLvisual *vis); +viaSetSpanFunctions(struct via_renderbuffer *vrb, const struct gl_config *vis); #endif diff --git a/src/mesa/drivers/fbdev/glfbdev.c b/src/mesa/drivers/fbdev/glfbdev.c index 2ad52d89fc0..b3bb71525eb 100644 --- a/src/mesa/drivers/fbdev/glfbdev.c +++ b/src/mesa/drivers/fbdev/glfbdev.c @@ -73,10 +73,10 @@ /** - * Derived from Mesa's GLvisual class. + * Derived from Mesa's struct gl_config class. */ struct GLFBDevVisualRec { - GLvisual glvisual; /* base class */ + struct gl_config glvisual; /* base class */ struct fb_fix_screeninfo fix; struct fb_var_screeninfo var; int pixelFormat; diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index 93d0e8568a1..a04dc6d8a9b 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -62,7 +62,7 @@ struct osmesa_context { GLcontext mesa; /*< Base class - this must be first */ - GLvisual *gl_visual; /*< Describes the buffers */ + struct gl_config *gl_visual; /*< Describes the buffers */ struct gl_renderbuffer *rb; /*< The user's colorbuffer */ GLframebuffer *gl_buffer; /*< The framebuffer, containing user's rb */ GLenum format; /*< User-specified context format */ diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index 22b0c46b4f7..1a71ef45596 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -30,7 +30,7 @@ static WMesaFramebuffer FirstFramebuffer = NULL; * given HDC (Window handle). */ WMesaFramebuffer -wmesa_new_framebuffer(HDC hdc, GLvisual *visual) +wmesa_new_framebuffer(HDC hdc, struct gl_config *visual) { WMesaFramebuffer pwfb = (WMesaFramebuffer) malloc(sizeof(struct wmesa_framebuffer)); @@ -1404,7 +1404,7 @@ WMesaContext WMesaCreateContext(HDC hDC, struct dd_function_table functions; GLint red_bits, green_bits, blue_bits, alpha_bits; GLcontext *ctx; - GLvisual *visual; + struct gl_config *visual; (void) Pal; @@ -1586,7 +1586,7 @@ void WMesaMakeCurrent(WMesaContext c, HDC hdc) /* Lazy creation of framebuffers */ if (c && !pwfb && hdc) { struct gl_renderbuffer *rb; - GLvisual *visual = &c->gl_ctx.Visual; + struct gl_config *visual = &c->gl_ctx.Visual; GLuint width, height; get_window_size(hdc, &width, &height); diff --git a/src/mesa/drivers/windows/gldirect/dglcontext.h b/src/mesa/drivers/windows/gldirect/dglcontext.h index 5c433b857ef..c92169bd9fb 100644 --- a/src/mesa/drivers/windows/gldirect/dglcontext.h +++ b/src/mesa/drivers/windows/gldirect/dglcontext.h @@ -88,7 +88,7 @@ typedef struct { // Mesa vars: GLcontext *glCtx; // The core Mesa context - GLvisual *glVis; // Describes the color buffer + struct gl_config *glVis; // Describes the color buffer GLframebuffer *glBuffer; // Ancillary buffers GLuint ClearIndex; @@ -136,7 +136,7 @@ typedef struct { // Mesa context vars: // GLcontext *glCtx; // The core Mesa context - GLvisual *glVis; // Describes the color buffer + struct gl_config *glVis; // Describes the color buffer GLframebuffer *glBuffer; // Ancillary buffers GLuint ClearIndex; diff --git a/src/mesa/drivers/x11/xm_buffer.c b/src/mesa/drivers/x11/xm_buffer.c index e47949750ab..3a696f7106a 100644 --- a/src/mesa/drivers/x11/xm_buffer.c +++ b/src/mesa/drivers/x11/xm_buffer.c @@ -323,7 +323,7 @@ xmesa_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb, struct xmesa_renderbuffer * -xmesa_new_renderbuffer(GLcontext *ctx, GLuint name, const GLvisual *visual, +xmesa_new_renderbuffer(GLcontext *ctx, GLuint name, const struct gl_config *visual, GLboolean backBuffer) { struct xmesa_renderbuffer *xrb = CALLOC_STRUCT(xmesa_renderbuffer); diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 939b7a7c509..8b75f99e8d2 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -80,11 +80,11 @@ enum pixel_format { /** - * Visual inforation, derived from GLvisual. + * Visual inforation, derived from struct gl_config. * Basically corresponds to an XVisualInfo. */ struct xmesa_visual { - GLvisual mesa_visual; /* Device independent visual parameters */ + struct gl_config mesa_visual; /* Device independent visual parameters */ XMesaDisplay *display; /* The X11 display */ int screen, visualID; #ifdef XFree86Server @@ -495,7 +495,7 @@ extern const int xmesa_kernel1[16]; */ extern struct xmesa_renderbuffer * -xmesa_new_renderbuffer(GLcontext *ctx, GLuint name, const GLvisual *visual, +xmesa_new_renderbuffer(GLcontext *ctx, GLuint name, const struct gl_config *visual, GLboolean backBuffer); extern void diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index a3479f1f7dc..f8ffdc25dbb 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -180,7 +180,7 @@ _mesa_notifySwapBuffers(GLcontext *ctx) /*@{*/ /** - * Allocates a GLvisual structure and initializes it via + * Allocates a struct gl_config structure and initializes it via * _mesa_initialize_visual(). * * \param dbFlag double buffering @@ -198,12 +198,12 @@ _mesa_notifySwapBuffers(GLcontext *ctx) * \param alphaBits same as above. * \param numSamples not really used. * - * \return pointer to new GLvisual or NULL if requested parameters can't be + * \return pointer to new struct gl_config or NULL if requested parameters can't be * met. * * \note Need to add params for level and numAuxBuffers (at least) */ -GLvisual * +struct gl_config * _mesa_create_visual( GLboolean dbFlag, GLboolean stereoFlag, GLint redBits, @@ -218,7 +218,7 @@ _mesa_create_visual( GLboolean dbFlag, GLint accumAlphaBits, GLint numSamples ) { - GLvisual *vis = (GLvisual *) calloc(1, sizeof(GLvisual)); + struct gl_config *vis = (struct gl_config *) calloc(1, sizeof(struct gl_config)); if (vis) { if (!_mesa_initialize_visual(vis, dbFlag, stereoFlag, redBits, greenBits, blueBits, alphaBits, @@ -235,15 +235,15 @@ _mesa_create_visual( GLboolean dbFlag, /** * Makes some sanity checks and fills in the fields of the - * GLvisual object with the given parameters. If the caller needs - * to set additional fields, he should just probably init the whole GLvisual + * struct gl_config object with the given parameters. If the caller needs + * to set additional fields, he should just probably init the whole struct gl_config * object himself. * \return GL_TRUE on success, or GL_FALSE on failure. * * \sa _mesa_create_visual() above for the parameter description. */ GLboolean -_mesa_initialize_visual( GLvisual *vis, +_mesa_initialize_visual( struct gl_config *vis, GLboolean dbFlag, GLboolean stereoFlag, GLint redBits, @@ -311,7 +311,7 @@ _mesa_initialize_visual( GLvisual *vis, * Frees the visual structure. */ void -_mesa_destroy_visual( GLvisual *vis ) +_mesa_destroy_visual( struct gl_config *vis ) { free(vis); } @@ -856,7 +856,7 @@ _mesa_alloc_dispatch_table(int size) GLboolean _mesa_initialize_context_for_api(GLcontext *ctx, gl_api api, - const GLvisual *visual, + const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext) @@ -994,7 +994,7 @@ _mesa_initialize_context_for_api(GLcontext *ctx, GLboolean _mesa_initialize_context(GLcontext *ctx, - const GLvisual *visual, + const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext) @@ -1014,7 +1014,7 @@ _mesa_initialize_context(GLcontext *ctx, * the rendering context. * * \param api the GL API type to create the context for - * \param visual a GLvisual pointer (we copy the struct contents) + * \param visual a struct gl_config pointer (we copy the struct contents) * \param share_list another context to share display lists with or NULL * \param driverFunctions points to the dd_function_table into which the * driver has plugged in all its special functions. @@ -1024,7 +1024,7 @@ _mesa_initialize_context(GLcontext *ctx, */ GLcontext * _mesa_create_context_for_api(gl_api api, - const GLvisual *visual, + const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext) @@ -1049,7 +1049,7 @@ _mesa_create_context_for_api(gl_api api, } GLcontext * -_mesa_create_context(const GLvisual *visual, +_mesa_create_context(const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext) @@ -1293,8 +1293,8 @@ _mesa_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask ) static GLboolean check_compatible(const GLcontext *ctx, const GLframebuffer *buffer) { - const GLvisual *ctxvis = &ctx->Visual; - const GLvisual *bufvis = &buffer->Visual; + const struct gl_config *ctxvis = &ctx->Visual; + const struct gl_config *bufvis = &buffer->Visual; if (ctxvis == bufvis) return GL_TRUE; diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index b130bbb066f..969c07e53c0 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -30,7 +30,7 @@ * There are three large Mesa data types/classes which are meant to be * used by device drivers: * - GLcontext: this contains the Mesa rendering state - * - GLvisual: this describes the color buffer (RGB vs. ci), whether or not + * - struct gl_config: this describes the color buffer (RGB vs. ci), whether or not * there's a depth buffer, stencil buffer, etc. * - GLframebuffer: contains pointers to the depth buffer, stencil buffer, * accum buffer and alpha buffers. @@ -38,7 +38,7 @@ * These types should be encapsulated by corresponding device driver * data types. See xmesa.h and xmesaP.h for an example. * - * In OOP terms, GLcontext, GLvisual, and GLframebuffer are base classes + * In OOP terms, GLcontext, struct gl_config, and GLframebuffer are base classes * which the device driver must derive from. * * The following functions create and destroy these data types. @@ -59,7 +59,7 @@ struct _glapi_table; /** \name Visual-related functions */ /*@{*/ -extern GLvisual * +extern struct gl_config * _mesa_create_visual( GLboolean dbFlag, GLboolean stereoFlag, GLint redBits, @@ -75,7 +75,7 @@ _mesa_create_visual( GLboolean dbFlag, GLint numSamples ); extern GLboolean -_mesa_initialize_visual( GLvisual *v, +_mesa_initialize_visual( struct gl_config *v, GLboolean dbFlag, GLboolean stereoFlag, GLint redBits, @@ -91,7 +91,7 @@ _mesa_initialize_visual( GLvisual *v, GLint numSamples ); extern void -_mesa_destroy_visual( GLvisual *vis ); +_mesa_destroy_visual( struct gl_config *vis ); /*@}*/ @@ -100,21 +100,21 @@ _mesa_destroy_visual( GLvisual *vis ); /*@{*/ extern GLcontext * -_mesa_create_context( const GLvisual *visual, +_mesa_create_context( const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext ); extern GLboolean _mesa_initialize_context( GLcontext *ctx, - const GLvisual *visual, + const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext ); extern GLcontext * _mesa_create_context_for_api(gl_api api, - const GLvisual *visual, + const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext); @@ -122,7 +122,7 @@ _mesa_create_context_for_api(gl_api api, extern GLboolean _mesa_initialize_context_for_api(GLcontext *ctx, gl_api api, - const GLvisual *visual, + const struct gl_config *visual, GLcontext *share_list, const struct dd_function_table *driverFunctions, void *driverContext); diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index a98c09cfbf3..64da8ba84f9 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -83,7 +83,7 @@ compute_depth_max(struct gl_framebuffer *fb) * \sa _mesa_new_framebuffer */ struct gl_framebuffer * -_mesa_create_framebuffer(const GLvisual *visual) +_mesa_create_framebuffer(const struct gl_config *visual) { struct gl_framebuffer *fb = CALLOC_STRUCT(gl_framebuffer); assert(visual); @@ -122,7 +122,7 @@ _mesa_new_framebuffer(GLcontext *ctx, GLuint name) */ void _mesa_initialize_window_framebuffer(struct gl_framebuffer *fb, - const GLvisual *visual) + const struct gl_config *visual) { assert(fb); assert(visual); diff --git a/src/mesa/main/framebuffer.h b/src/mesa/main/framebuffer.h index 2e9844282f8..0cf28424cf9 100644 --- a/src/mesa/main/framebuffer.h +++ b/src/mesa/main/framebuffer.h @@ -29,14 +29,14 @@ #include "mtypes.h" extern struct gl_framebuffer * -_mesa_create_framebuffer(const GLvisual *visual); +_mesa_create_framebuffer(const struct gl_config *visual); extern struct gl_framebuffer * _mesa_new_framebuffer(GLcontext *ctx, GLuint name); extern void _mesa_initialize_window_framebuffer(struct gl_framebuffer *fb, - const GLvisual *visual); + const struct gl_config *visual); extern void _mesa_initialize_user_framebuffer(struct gl_framebuffer *fb, GLuint name); diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h index 0c9013de66e..08ad5f32018 100644 --- a/src/mesa/main/glheader.h +++ b/src/mesa/main/glheader.h @@ -139,7 +139,7 @@ typedef void *GLeglImageOES; */ #define MESA_GEOMETRY_PROGRAM 0x8c26 -/* Several fields of __GLcontextModes can take these as values. Since +/* Several fields of struct gl_config can take these as values. Since * GLX header files may not be available everywhere they need to be used, * redefine them here. */ diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 8eae64b62aa..901607adcc1 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -125,7 +125,6 @@ struct gl_texture_image; struct gl_texture_object; struct st_context; typedef struct __GLcontextRec GLcontext; -typedef struct __GLcontextModesRec GLvisual; typedef struct gl_framebuffer GLframebuffer; /*@}*/ @@ -549,19 +548,7 @@ struct gl_shine_tab GLuint refcount; }; -/** - * Mode and limit information for a context. This information is - * kept around in the context so that values can be used during - * command execution, and for returning information about the - * context to the application. - * - * Instances of this structure are shared by the driver and the loader. To - * maintain binary compatability, new fields \b must be added only to the - * end of the structure. - * - * \sa _gl_context_modes_create - */ -typedef struct __GLcontextModesRec { +struct gl_config { GLboolean rgbMode; GLboolean floatMode; GLboolean colorIndexMode; @@ -614,7 +601,7 @@ typedef struct __GLcontextModesRec { GLint bindToMipmapTexture; GLint bindToTextureTargets; GLint yInverted; -} __GLcontextModes; +}; /** * Light source state. @@ -2453,7 +2440,7 @@ struct gl_framebuffer * The framebuffer's visual. Immutable if this is a window system buffer. * Computed from attachments if user-made FBO. */ - GLvisual Visual; + struct gl_config Visual; GLboolean Initialized; @@ -3074,7 +3061,7 @@ struct __GLcontextRec struct _glapi_table *CurrentDispatch; /**< == Save or Exec !! */ /*@}*/ - GLvisual Visual; + struct gl_config Visual; GLframebuffer *DrawBuffer; /**< buffer for writing */ GLframebuffer *ReadBuffer; /**< buffer for reading */ GLframebuffer *WinSysDrawBuffer; /**< set with MakeCurrent */ diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 3b046962efe..b0ec198e240 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -163,7 +163,7 @@ st_create_context_priv( GLcontext *ctx, struct pipe_context *pipe ) struct st_context *st_create_context(gl_api api, struct pipe_context *pipe, - const __GLcontextModes *visual, + const struct gl_config *visual, struct st_context *share) { GLcontext *ctx; diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index 991feee3001..ef2338817c6 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -260,7 +260,7 @@ st_get_msaa(void); extern struct st_context * st_create_context(gl_api api, struct pipe_context *pipe, - const __GLcontextModes *visual, + const struct gl_config *visual, struct st_context *share); extern void diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index cd418a03661..0592dd111d9 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -296,11 +296,11 @@ st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb, } /** - * Intialize a __GLcontextModes from a visual. + * Intialize a struct gl_config from a visual. */ static void st_visual_to_context_mode(const struct st_visual *visual, - __GLcontextModes *mode) + struct gl_config *mode) { memset(mode, 0, sizeof(*mode)); @@ -420,7 +420,7 @@ static struct st_framebuffer * st_framebuffer_create(struct st_framebuffer_iface *stfbi) { struct st_framebuffer *stfb; - __GLcontextModes mode; + struct gl_config mode; gl_buffer_index idx; stfb = CALLOC_STRUCT(st_framebuffer); @@ -625,7 +625,7 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi, struct st_context *shared_ctx = (struct st_context *) shared_stctxi; struct st_context *st; struct pipe_context *pipe; - __GLcontextModes mode; + struct gl_config mode; gl_api api; if (!(stapi->profile_mask & (1 << attribs->profile))) -- cgit v1.2.3 From 31aca27c08d6a385c595d34fe4ee06390bf5b0e8 Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Tue, 12 Oct 2010 12:02:01 -0400 Subject: Drop GLframebuffer typedef and just use struct gl_framebuffer --- src/gallium/state_trackers/glx/xlib/xm_api.c | 2 +- src/mesa/drivers/beos/GLView.cpp | 16 ++++++++-------- src/mesa/drivers/dri/common/utils.c | 2 +- src/mesa/drivers/dri/common/utils.h | 2 +- src/mesa/drivers/dri/i810/i810context.c | 6 +++--- src/mesa/drivers/dri/i810/i810context.h | 2 +- src/mesa/drivers/dri/i810/i810screen.c | 2 +- src/mesa/drivers/dri/mach64/mach64_context.c | 4 ++-- src/mesa/drivers/dri/mach64/mach64_dd.c | 2 +- src/mesa/drivers/dri/mach64/mach64_screen.c | 2 +- src/mesa/drivers/dri/mga/mga_xmesa.c | 6 +++--- src/mesa/drivers/dri/mga/mgapixel.c | 2 +- src/mesa/drivers/dri/r128/r128_context.c | 4 ++-- src/mesa/drivers/dri/r128/r128_dd.c | 2 +- src/mesa/drivers/dri/r128/r128_screen.c | 2 +- src/mesa/drivers/dri/radeon/radeon_screen.c | 2 +- src/mesa/drivers/dri/savage/savage_xmesa.c | 6 +++--- src/mesa/drivers/dri/savage/savagecontext.h | 2 +- src/mesa/drivers/dri/sis/sis_context.c | 6 +++--- src/mesa/drivers/dri/sis/sis_context.h | 2 +- src/mesa/drivers/dri/sis/sis_dd.c | 2 +- src/mesa/drivers/dri/sis/sis_screen.c | 2 +- src/mesa/drivers/dri/swrast/swrast.c | 18 +++++++++--------- src/mesa/drivers/dri/swrast/swrast_priv.h | 4 ++-- src/mesa/drivers/dri/tdfx/tdfx_context.c | 8 ++++---- src/mesa/drivers/dri/tdfx/tdfx_screen.c | 6 +++--- src/mesa/drivers/dri/unichrome/via_context.c | 6 +++--- src/mesa/drivers/dri/unichrome/via_context.h | 2 +- src/mesa/drivers/dri/unichrome/via_screen.c | 2 +- src/mesa/drivers/fbdev/glfbdev.c | 8 ++++---- src/mesa/drivers/osmesa/osmesa.c | 2 +- src/mesa/drivers/windows/gdi/wmesa.c | 8 ++++---- src/mesa/drivers/windows/gldirect/dglcontext.h | 4 ++-- src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c | 6 +++--- src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h | 2 +- src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c | 6 +++--- src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h | 2 +- src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c | 6 +++--- src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h | 2 +- .../drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c | 4 ++-- src/mesa/drivers/x11/xm_api.c | 4 ++-- src/mesa/drivers/x11/xmesaP.h | 6 +++--- src/mesa/main/context.c | 8 ++++---- src/mesa/main/context.h | 8 ++++---- src/mesa/main/dd.h | 4 ++-- src/mesa/main/framebuffer.c | 4 ++-- src/mesa/main/image.c | 4 ++-- src/mesa/main/mtypes.h | 9 ++++----- src/mesa/state_tracker/st_cb_fbo.c | 4 ++-- src/mesa/state_tracker/st_cb_flush.c | 4 ++-- src/mesa/state_tracker/st_cb_viewport.c | 6 +++--- src/mesa/state_tracker/st_context.h | 4 ++-- src/mesa/state_tracker/st_manager.c | 14 +++++++------- src/mesa/state_tracker/st_manager.h | 2 +- 54 files changed, 127 insertions(+), 128 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index 6ce386008a7..7206188a062 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -423,7 +423,7 @@ static XMesaBuffer XMesaBufferList = NULL; /** * Allocate a new XMesaBuffer object which corresponds to the given drawable. - * Note that XMesaBuffer is derived from GLframebuffer. + * Note that XMesaBuffer is derived from struct gl_framebuffer. * The new XMesaBuffer will not have any size (Width=Height=0). * * \param d the corresponding X drawable (window or pixmap) diff --git a/src/mesa/drivers/beos/GLView.cpp b/src/mesa/drivers/beos/GLView.cpp index 44082e47cf4..8ccb93d56b5 100644 --- a/src/mesa/drivers/beos/GLView.cpp +++ b/src/mesa/drivers/beos/GLView.cpp @@ -105,7 +105,7 @@ public: MesaDriver(); ~MesaDriver(); - void Init(BGLView * bglview, GLcontext * c, struct gl_config * v, GLframebuffer * b); + void Init(BGLView * bglview, GLcontext * c, struct gl_config * v, struct gl_framebuffer * b); void LockGL(); void UnlockGL(); @@ -122,7 +122,7 @@ private: GLcontext * m_glcontext; struct gl_config * m_glvisual; - GLframebuffer * m_glframebuffer; + struct gl_framebuffer * m_glframebuffer; BGLView * m_bglview; BBitmap * m_bitmap; @@ -147,9 +147,9 @@ private: static void Index(GLcontext *ctx, GLuint index); static void Color(GLcontext *ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a); - static void SetBuffer(GLcontext *ctx, GLframebuffer *colorBuffer, + static void SetBuffer(GLcontext *ctx, struct gl_framebuffer *colorBuffer, GLenum mode); - static void GetBufferSize(GLframebuffer * framebuffer, GLuint *width, + static void GetBufferSize(struct gl_framebuffer * framebuffer, GLuint *width, GLuint *height); static void Error(GLcontext *ctx); static const GLubyte * GetString(GLcontext *ctx, GLenum name); @@ -332,7 +332,7 @@ BGLView::BGLView(BRect rect, char *name, // create core framebuffer - GLframebuffer * buffer = _mesa_create_framebuffer(visual, + struct gl_framebuffer * buffer = _mesa_create_framebuffer(visual, depth > 0 ? GL_TRUE : GL_FALSE, stencil > 0 ? GL_TRUE: GL_FALSE, accum > 0 ? GL_TRUE : GL_FALSE, @@ -668,7 +668,7 @@ MesaDriver::~MesaDriver() } -void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, struct gl_config * visual, GLframebuffer * framebuffer) +void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, struct gl_config * visual, struct gl_framebuffer * framebuffer) { m_bglview = bglview; m_glcontext = ctx; @@ -984,7 +984,7 @@ void MesaDriver::ClearBack(GLcontext *ctx, } -void MesaDriver::SetBuffer(GLcontext *ctx, GLframebuffer *buffer, +void MesaDriver::SetBuffer(GLcontext *ctx, struct gl_framebuffer *buffer, GLenum mode) { /* TODO */ @@ -993,7 +993,7 @@ void MesaDriver::SetBuffer(GLcontext *ctx, GLframebuffer *buffer, (void) mode; } -void MesaDriver::GetBufferSize(GLframebuffer * framebuffer, GLuint *width, +void MesaDriver::GetBufferSize(struct gl_framebuffer * framebuffer, GLuint *width, GLuint *height) { GET_CURRENT_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 3cc496c671f..bb7f07d8f41 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -337,7 +337,7 @@ driCheckDriDdxDrmVersions2(const char * driver_name, drmActual, drmExpected); } -GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, +GLboolean driClipRectToFramebuffer( const struct gl_framebuffer *buffer, GLint *x, GLint *y, GLsizei *width, GLsizei *height ) { diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h index 01930d784ee..40344a1874b 100644 --- a/src/mesa/drivers/dri/common/utils.h +++ b/src/mesa/drivers/dri/common/utils.h @@ -94,7 +94,7 @@ extern GLboolean driCheckDriDdxDrmVersions3(const char * driver_name, const __DRIversion * ddxActual, const __DRIutilversion2 * ddxExpected, const __DRIversion * drmActual, const __DRIversion * drmExpected); -extern GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, +extern GLboolean driClipRectToFramebuffer( const struct gl_framebuffer *buffer, GLint *x, GLint *y, GLsizei *width, GLsizei *height ); diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index aaa97f017ad..35a4898aac6 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -96,7 +96,7 @@ static const GLubyte *i810GetString( GLcontext *ctx, GLenum name ) } } -static void i810BufferSize(GLframebuffer *buffer, GLuint *width, GLuint *height) +static void i810BufferSize(struct gl_framebuffer *buffer, GLuint *width, GLuint *height) { GET_CURRENT_CONTEXT(ctx); i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -453,8 +453,8 @@ i810MakeCurrent(__DRIcontext *driContextPriv, imesa->driDrawable = driDrawPriv; _mesa_make_current(imesa->glCtx, - (GLframebuffer *) driDrawPriv->driverPrivate, - (GLframebuffer *) driReadPriv->driverPrivate); + (struct gl_framebuffer *) driDrawPriv->driverPrivate, + (struct gl_framebuffer *) driReadPriv->driverPrivate); /* Are these necessary? */ diff --git a/src/mesa/drivers/dri/i810/i810context.h b/src/mesa/drivers/dri/i810/i810context.h index 19529db0200..2a09cf88f59 100644 --- a/src/mesa/drivers/dri/i810/i810context.h +++ b/src/mesa/drivers/dri/i810/i810context.h @@ -146,7 +146,7 @@ struct i810_context_t { /* DRI stuff */ GLuint needClip; - GLframebuffer *glBuffer; + struct gl_framebuffer *glBuffer; GLboolean doPageFlip; /* These refer to the current draw (front vs. back) buffer: diff --git a/src/mesa/drivers/dri/i810/i810screen.c b/src/mesa/drivers/dri/i810/i810screen.c index 098d027771f..fc56b61b4e6 100644 --- a/src/mesa/drivers/dri/i810/i810screen.c +++ b/src/mesa/drivers/dri/i810/i810screen.c @@ -333,7 +333,7 @@ i810CreateBuffer( __DRIscreen *driScrnPriv, static void i810DestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } const struct __DriverAPIRec driDriverAPI = { diff --git a/src/mesa/drivers/dri/mach64/mach64_context.c b/src/mesa/drivers/dri/mach64/mach64_context.c index 9d89cb8a486..0d4f895dd4a 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.c +++ b/src/mesa/drivers/dri/mach64/mach64_context.c @@ -334,8 +334,8 @@ mach64MakeCurrent( __DRIcontext *driContextPriv, } _mesa_make_current( newMach64Ctx->glCtx, - (GLframebuffer *) driDrawPriv->driverPrivate, - (GLframebuffer *) driReadPriv->driverPrivate ); + (struct gl_framebuffer *) driDrawPriv->driverPrivate, + (struct gl_framebuffer *) driReadPriv->driverPrivate ); newMach64Ctx->new_state |= MACH64_NEW_CLIP; diff --git a/src/mesa/drivers/dri/mach64/mach64_dd.c b/src/mesa/drivers/dri/mach64/mach64_dd.c index ca713e2de5e..d464f6c5189 100644 --- a/src/mesa/drivers/dri/mach64/mach64_dd.c +++ b/src/mesa/drivers/dri/mach64/mach64_dd.c @@ -41,7 +41,7 @@ /* Return the current color buffer size. */ -static void mach64DDGetBufferSize( GLframebuffer *buffer, +static void mach64DDGetBufferSize( struct gl_framebuffer *buffer, GLuint *width, GLuint *height ) { GET_CURRENT_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/mach64/mach64_screen.c b/src/mesa/drivers/dri/mach64/mach64_screen.c index 762ffe5e430..b5ed03910c9 100644 --- a/src/mesa/drivers/dri/mach64/mach64_screen.c +++ b/src/mesa/drivers/dri/mach64/mach64_screen.c @@ -369,7 +369,7 @@ mach64CreateBuffer( __DRIscreen *driScrnPriv, static void mach64DestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c index 6daeb6a6bf7..7e923963701 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.c +++ b/src/mesa/drivers/dri/mga/mga_xmesa.c @@ -812,7 +812,7 @@ mgaCreateBuffer( __DRIscreen *driScrnPriv, static void mgaDestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } static void @@ -875,8 +875,8 @@ mgaMakeCurrent(__DRIcontext *driContextPriv, mmesa->driReadable = driReadPriv; _mesa_make_current(mmesa->glCtx, - (GLframebuffer *) driDrawPriv->driverPrivate, - (GLframebuffer *) driReadPriv->driverPrivate); + (struct gl_framebuffer *) driDrawPriv->driverPrivate, + (struct gl_framebuffer *) driReadPriv->driverPrivate); } else { _mesa_make_current(NULL, NULL, NULL); diff --git a/src/mesa/drivers/dri/mga/mgapixel.c b/src/mesa/drivers/dri/mga/mgapixel.c index 9cbdbe02c94..1b6fb7d6b35 100644 --- a/src/mesa/drivers/dri/mga/mgapixel.c +++ b/src/mesa/drivers/dri/mga/mgapixel.c @@ -170,7 +170,7 @@ check_stencil_per_fragment_ops( const GLcontext *ctx ) static GLboolean clip_pixelrect( const GLcontext *ctx, - const GLframebuffer *buffer, + const struct gl_framebuffer *buffer, GLint *x, GLint *y, GLsizei *width, GLsizei *height, GLint *skipPixels, GLint *skipRows, diff --git a/src/mesa/drivers/dri/r128/r128_context.c b/src/mesa/drivers/dri/r128/r128_context.c index bc25d7e8ca9..accd9a5ddbe 100644 --- a/src/mesa/drivers/dri/r128/r128_context.c +++ b/src/mesa/drivers/dri/r128/r128_context.c @@ -348,8 +348,8 @@ r128MakeCurrent( __DRIcontext *driContextPriv, newR128Ctx->driDrawable = driDrawPriv; _mesa_make_current( newR128Ctx->glCtx, - (GLframebuffer *) driDrawPriv->driverPrivate, - (GLframebuffer *) driReadPriv->driverPrivate ); + (struct gl_framebuffer *) driDrawPriv->driverPrivate, + (struct gl_framebuffer *) driReadPriv->driverPrivate ); newR128Ctx->new_state |= R128_NEW_WINDOW | R128_NEW_CLIP; } else { diff --git a/src/mesa/drivers/dri/r128/r128_dd.c b/src/mesa/drivers/dri/r128/r128_dd.c index 64dec70cdd5..7dcfa3b2854 100644 --- a/src/mesa/drivers/dri/r128/r128_dd.c +++ b/src/mesa/drivers/dri/r128/r128_dd.c @@ -45,7 +45,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. /* Return the width and height of the current color buffer. */ -static void r128GetBufferSize( GLframebuffer *buffer, +static void r128GetBufferSize( struct gl_framebuffer *buffer, GLuint *width, GLuint *height ) { GET_CURRENT_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r128/r128_screen.c b/src/mesa/drivers/dri/r128/r128_screen.c index 29a4f74156e..43ab0fc64dd 100644 --- a/src/mesa/drivers/dri/r128/r128_screen.c +++ b/src/mesa/drivers/dri/r128/r128_screen.c @@ -349,7 +349,7 @@ r128CreateBuffer( __DRIscreen *driScrnPriv, static void r128DestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index f5b55ad9701..43ebc810939 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -1691,7 +1691,7 @@ radeonDestroyBuffer(__DRIdrawable *driDrawPriv) if (!rfb) return; radeon_cleanup_renderbuffers(rfb); - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index ab05fc8eb11..a8ba0334111 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -681,7 +681,7 @@ savageCreateBuffer( __DRIscreen *driScrnPriv, static void savageDestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } #if 0 @@ -789,9 +789,9 @@ savageMakeCurrent(__DRIcontext *driContextPriv, savageContextPtr imesa = (savageContextPtr) driContextPriv->driverPrivate; struct gl_framebuffer *drawBuffer - = (GLframebuffer *) driDrawPriv->driverPrivate; + = (struct gl_framebuffer *) driDrawPriv->driverPrivate; struct gl_framebuffer *readBuffer - = (GLframebuffer *) driReadPriv->driverPrivate; + = (struct gl_framebuffer *) driReadPriv->driverPrivate; driRenderbuffer *frontRb = (driRenderbuffer *) drawBuffer->Attachment[BUFFER_FRONT_LEFT].Renderbuffer; driRenderbuffer *backRb = (driRenderbuffer *) diff --git a/src/mesa/drivers/dri/savage/savagecontext.h b/src/mesa/drivers/dri/savage/savagecontext.h index ba1e6e1e1ad..6723456ec98 100644 --- a/src/mesa/drivers/dri/savage/savagecontext.h +++ b/src/mesa/drivers/dri/savage/savagecontext.h @@ -226,7 +226,7 @@ struct savage_context_t { /* DRI stuff */ GLuint bufferSize; - GLframebuffer *glBuffer; + struct gl_framebuffer *glBuffer; /* Two flags to keep track of fallbacks. */ GLuint Fallback; diff --git a/src/mesa/drivers/dri/sis/sis_context.c b/src/mesa/drivers/dri/sis/sis_context.c index f460e89a561..07b363826dd 100644 --- a/src/mesa/drivers/dri/sis/sis_context.c +++ b/src/mesa/drivers/dri/sis/sis_context.c @@ -147,7 +147,7 @@ WaitingFor3dIdle(sisContextPtr smesa, int wLen) } } -void sisReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer, +void sisReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -381,8 +381,8 @@ sisMakeCurrent( __DRIcontext *driContextPriv, newSisCtx->driDrawable = driDrawPriv; - drawBuffer = (GLframebuffer *)driDrawPriv->driverPrivate; - readBuffer = (GLframebuffer *)driReadPriv->driverPrivate; + drawBuffer = (struct gl_framebuffer *)driDrawPriv->driverPrivate; + readBuffer = (struct gl_framebuffer *)driReadPriv->driverPrivate; _mesa_make_current( newSisCtx->glCtx, drawBuffer, readBuffer ); diff --git a/src/mesa/drivers/dri/sis/sis_context.h b/src/mesa/drivers/dri/sis/sis_context.h index 2ccfe1b54bd..54e98fd00a8 100644 --- a/src/mesa/drivers/dri/sis/sis_context.h +++ b/src/mesa/drivers/dri/sis/sis_context.h @@ -444,7 +444,7 @@ extern GLboolean sisCreateContext( gl_api api, void *sharedContextPrivate ); extern void sisDestroyContext( __DRIcontext * ); -void sisReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer, +void sisReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height); extern GLboolean sisMakeCurrent( __DRIcontext *driContextPriv, diff --git a/src/mesa/drivers/dri/sis/sis_dd.c b/src/mesa/drivers/dri/sis/sis_dd.c index fe4ade85920..af1d9ee0ad0 100644 --- a/src/mesa/drivers/dri/sis/sis_dd.c +++ b/src/mesa/drivers/dri/sis/sis_dd.c @@ -50,7 +50,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. /* Return the width and height of the given buffer. */ static void -sisGetBufferSize( GLframebuffer *buffer, +sisGetBufferSize( struct gl_framebuffer *buffer, GLuint *width, GLuint *height ) { GET_CURRENT_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/sis/sis_screen.c b/src/mesa/drivers/dri/sis/sis_screen.c index 1ce52a2d674..7ca5031846d 100644 --- a/src/mesa/drivers/dri/sis/sis_screen.c +++ b/src/mesa/drivers/dri/sis/sis_screen.c @@ -220,7 +220,7 @@ sisCreateBuffer( __DRIscreen *driScrnPriv, static void sisDestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } static void sisCopyBuffer( __DRIdrawable *dPriv ) diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 8585250eb05..5b521356270 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -373,7 +373,7 @@ dri_create_buffer(__DRIscreen * sPriv, const struct gl_config * visual, GLboolean isPixmap) { struct dri_drawable *drawable = NULL; - GLframebuffer *fb; + struct gl_framebuffer *fb; struct swrast_renderbuffer *frontrb, *backrb; TRACE; @@ -432,7 +432,7 @@ dri_destroy_buffer(__DRIdrawable * dPriv) if (dPriv) { struct dri_drawable *drawable = dri_drawable(dPriv); - GLframebuffer *fb; + struct gl_framebuffer *fb; free(drawable->row); @@ -451,7 +451,7 @@ dri_swap_buffers(__DRIdrawable * dPriv) GET_CURRENT_CONTEXT(ctx); struct dri_drawable *drawable = dri_drawable(dPriv); - GLframebuffer *fb; + struct gl_framebuffer *fb; struct swrast_renderbuffer *frontrb, *backrb; TRACE; @@ -487,7 +487,7 @@ dri_swap_buffers(__DRIdrawable * dPriv) */ static void -get_window_size( GLframebuffer *fb, GLsizei *w, GLsizei *h ) +get_window_size( struct gl_framebuffer *fb, GLsizei *w, GLsizei *h ) { __DRIdrawable *dPriv = swrast_drawable(fb)->dPriv; __DRIscreen *sPriv = dPriv->driScreenPriv; @@ -499,7 +499,7 @@ get_window_size( GLframebuffer *fb, GLsizei *w, GLsizei *h ) } static void -swrast_check_and_update_window_size( GLcontext *ctx, GLframebuffer *fb ) +swrast_check_and_update_window_size( GLcontext *ctx, struct gl_framebuffer *fb ) { GLsizei width, height; @@ -536,8 +536,8 @@ update_state( GLcontext *ctx, GLuint new_state ) static void viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { - GLframebuffer *draw = ctx->WinSysDrawBuffer; - GLframebuffer *read = ctx->WinSysReadBuffer; + struct gl_framebuffer *draw = ctx->WinSysDrawBuffer; + struct gl_framebuffer *read = ctx->WinSysReadBuffer; swrast_check_and_update_window_size(ctx, draw); swrast_check_and_update_window_size(ctx, read); @@ -665,8 +665,8 @@ dri_make_current(__DRIcontext * cPriv, __DRIdrawable * driReadPriv) { GLcontext *mesaCtx; - GLframebuffer *mesaDraw; - GLframebuffer *mesaRead; + struct gl_framebuffer *mesaDraw; + struct gl_framebuffer *mesaRead; TRACE; if (cPriv) { diff --git a/src/mesa/drivers/dri/swrast/swrast_priv.h b/src/mesa/drivers/dri/swrast/swrast_priv.h index 6679061a983..054bdba27b6 100644 --- a/src/mesa/drivers/dri/swrast/swrast_priv.h +++ b/src/mesa/drivers/dri/swrast/swrast_priv.h @@ -79,7 +79,7 @@ swrast_context(GLcontext *ctx) struct dri_drawable { /* mesa, base class, must be first */ - GLframebuffer Base; + struct gl_framebuffer Base; /* dri */ __DRIdrawable *dPriv; @@ -95,7 +95,7 @@ dri_drawable(__DRIdrawable * driDrawPriv) } static INLINE struct dri_drawable * -swrast_drawable(GLframebuffer *fb) +swrast_drawable(struct gl_framebuffer *fb) { return (struct dri_drawable *) fb; } diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.c b/src/mesa/drivers/dri/tdfx/tdfx_context.c index 18c626c454e..adefc1472a7 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.c @@ -651,8 +651,8 @@ tdfxMakeCurrent( __DRIcontext *driContextPriv, * dispatch is set correctly. */ _mesa_make_current( newCtx, - (GLframebuffer *) driDrawPriv->driverPrivate, - (GLframebuffer *) driReadPriv->driverPrivate ); + (struct gl_framebuffer *) driDrawPriv->driverPrivate, + (struct gl_framebuffer *) driReadPriv->driverPrivate ); return GL_TRUE; } /* [dBorca] tunnel2 requires this */ @@ -689,8 +689,8 @@ tdfxMakeCurrent( __DRIcontext *driContextPriv, } _mesa_make_current( newCtx, - (GLframebuffer *) driDrawPriv->driverPrivate, - (GLframebuffer *) driReadPriv->driverPrivate ); + (struct gl_framebuffer *) driDrawPriv->driverPrivate, + (struct gl_framebuffer *) driReadPriv->driverPrivate ); } else { _mesa_make_current( NULL, NULL, NULL ); } diff --git a/src/mesa/drivers/dri/tdfx/tdfx_screen.c b/src/mesa/drivers/dri/tdfx/tdfx_screen.c index c9ca4fc6378..084560ff87d 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_screen.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_screen.c @@ -227,7 +227,7 @@ tdfxCreateBuffer( __DRIscreen *driScrnPriv, static void tdfxDestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } @@ -237,13 +237,13 @@ tdfxSwapBuffers( __DRIdrawable *driDrawPriv ) { GET_CURRENT_CONTEXT(ctx); tdfxContextPtr fxMesa = 0; - GLframebuffer *mesaBuffer; + struct gl_framebuffer *mesaBuffer; if ( TDFX_DEBUG & DEBUG_VERBOSE_DRI ) { fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *)driDrawPriv ); } - mesaBuffer = (GLframebuffer *) driDrawPriv->driverPrivate; + mesaBuffer = (struct gl_framebuffer *) driDrawPriv->driverPrivate; if ( !mesaBuffer->Visual.doubleBufferMode ) return; /* can't swap a single-buffered window */ diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 3305e934a57..5e6e271b458 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -352,7 +352,7 @@ calculate_buffer_parameters(struct via_context *vmesa, } -void viaReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer, +void viaReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -833,8 +833,8 @@ viaMakeCurrent(__DRIcontext *driContextPriv, GLcontext *ctx = vmesa->glCtx; struct gl_framebuffer *drawBuffer, *readBuffer; - drawBuffer = (GLframebuffer *)driDrawPriv->driverPrivate; - readBuffer = (GLframebuffer *)driReadPriv->driverPrivate; + drawBuffer = (struct gl_framebuffer *)driDrawPriv->driverPrivate; + readBuffer = (struct gl_framebuffer *)driReadPriv->driverPrivate; if ((vmesa->driDrawable != driDrawPriv) || (vmesa->driReadable != driReadPriv)) { diff --git a/src/mesa/drivers/dri/unichrome/via_context.h b/src/mesa/drivers/dri/unichrome/via_context.h index 4e1ab3a6ca7..4e3bed342dd 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.h +++ b/src/mesa/drivers/dri/unichrome/via_context.h @@ -394,7 +394,7 @@ extern void viaEmitHwStateLocked(struct via_context *vmesa); extern void viaEmitScissorValues(struct via_context *vmesa, int box_nr, int emit); extern void viaXMesaSetBackClipRects(struct via_context *vmesa); extern void viaXMesaSetFrontClipRects(struct via_context *vmesa); -extern void viaReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer, GLuint width, GLuint height); +extern void viaReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height); extern void viaXMesaWindowMoved(struct via_context *vmesa); extern GLboolean viaTexCombineState(struct via_context *vmesa, diff --git a/src/mesa/drivers/dri/unichrome/via_screen.c b/src/mesa/drivers/dri/unichrome/via_screen.c index e6aa7b6b839..9ea656cf023 100644 --- a/src/mesa/drivers/dri/unichrome/via_screen.c +++ b/src/mesa/drivers/dri/unichrome/via_screen.c @@ -311,7 +311,7 @@ viaCreateBuffer(__DRIscreen *driScrnPriv, static void viaDestroyBuffer(__DRIdrawable *driDrawPriv) { - _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); + _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL); } static const __DRIconfig ** diff --git a/src/mesa/drivers/fbdev/glfbdev.c b/src/mesa/drivers/fbdev/glfbdev.c index b3bb71525eb..fd3432a9832 100644 --- a/src/mesa/drivers/fbdev/glfbdev.c +++ b/src/mesa/drivers/fbdev/glfbdev.c @@ -83,10 +83,10 @@ struct GLFBDevVisualRec { }; /** - * Derived from Mesa's GLframebuffer class. + * Derived from Mesa's struct gl_framebuffer class. */ struct GLFBDevBufferRec { - GLframebuffer glframebuffer; /* base class */ + struct gl_framebuffer glframebuffer; /* base class */ GLFBDevVisualPtr visual; struct fb_fix_screeninfo fix; struct fb_var_screeninfo var; @@ -146,7 +146,7 @@ update_state( GLcontext *ctx, GLuint new_state ) static void -get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height ) +get_buffer_size( struct gl_framebuffer *buffer, GLuint *width, GLuint *height ) { const GLFBDevBufferPtr fbdevbuffer = (GLFBDevBufferPtr) buffer; *width = fbdevbuffer->var.xres; @@ -162,7 +162,7 @@ static void viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { GLuint newWidth, newHeight; - GLframebuffer *buffer; + struct gl_framebuffer *buffer; buffer = ctx->WinSysDrawBuffer; get_buffer_size( buffer, &newWidth, &newHeight ); diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index a04dc6d8a9b..4b264539cb6 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -64,7 +64,7 @@ struct osmesa_context GLcontext mesa; /*< Base class - this must be first */ struct gl_config *gl_visual; /*< Describes the buffers */ struct gl_renderbuffer *rb; /*< The user's colorbuffer */ - GLframebuffer *gl_buffer; /*< The framebuffer, containing user's rb */ + struct gl_framebuffer *gl_buffer; /*< The framebuffer, containing user's rb */ GLenum format; /*< User-specified context format */ GLint userRowLength; /*< user-specified number of pixels per row */ GLint rInd, gInd, bInd, aInd;/*< index offsets for RGBA formats */ diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index 1a71ef45596..39d27044175 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -83,9 +83,9 @@ wmesa_lookup_framebuffer(HDC hdc) /** - * Given a GLframebuffer, return the corresponding WMesaFramebuffer. + * Given a struct gl_framebuffer, return the corresponding WMesaFramebuffer. */ -static WMesaFramebuffer wmesa_framebuffer(GLframebuffer *fb) +static WMesaFramebuffer wmesa_framebuffer(struct gl_framebuffer *fb) { return (WMesaFramebuffer) fb; } @@ -217,7 +217,7 @@ get_window_size(HDC hdc, GLuint *width, GLuint *height) static void -wmesa_get_buffer_size(GLframebuffer *buffer, GLuint *width, GLuint *height) +wmesa_get_buffer_size(struct gl_framebuffer *buffer, GLuint *width, GLuint *height) { WMesaFramebuffer pwfb = wmesa_framebuffer(buffer); get_window_size(pwfb->hDC, width, height); @@ -1320,7 +1320,7 @@ void wmesa_set_renderbuffer_funcs(struct gl_renderbuffer *rb, int pixelformat, * Resize the front/back colorbuffers to match the latest window size. */ static void -wmesa_resize_buffers(GLcontext *ctx, GLframebuffer *buffer, +wmesa_resize_buffers(GLcontext *ctx, struct gl_framebuffer *buffer, GLuint width, GLuint height) { WMesaContext pwc = wmesa_context(ctx); diff --git a/src/mesa/drivers/windows/gldirect/dglcontext.h b/src/mesa/drivers/windows/gldirect/dglcontext.h index c92169bd9fb..f46d83eab0f 100644 --- a/src/mesa/drivers/windows/gldirect/dglcontext.h +++ b/src/mesa/drivers/windows/gldirect/dglcontext.h @@ -89,7 +89,7 @@ typedef struct { // Mesa vars: GLcontext *glCtx; // The core Mesa context struct gl_config *glVis; // Describes the color buffer - GLframebuffer *glBuffer; // Ancillary buffers + struct gl_framebuffer *glBuffer; // Ancillary buffers GLuint ClearIndex; GLuint CurrentIndex; @@ -137,7 +137,7 @@ typedef struct { // GLcontext *glCtx; // The core Mesa context struct gl_config *glVis; // Describes the color buffer - GLframebuffer *glBuffer; // Ancillary buffers + struct gl_framebuffer *glBuffer; // Ancillary buffers GLuint ClearIndex; GLuint CurrentIndex; diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c index 7b202dfda70..4a38b35adf3 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c @@ -238,7 +238,7 @@ static GLboolean gld_set_draw_buffer_DX7( static void gld_set_read_buffer_DX7( GLcontext *ctx, - GLframebuffer *buffer, + struct gl_framebuffer *buffer, GLenum mode) { /* separate read buffer not supported */ @@ -343,7 +343,7 @@ void gld_Clear_DX7( // Mesa 5: Parameter change static void gld_buffer_size_DX7( // GLcontext *ctx, - GLframebuffer *fb, + struct gl_framebuffer *fb, GLuint *width, GLuint *height) { @@ -1058,7 +1058,7 @@ extern BOOL dglWglResizeBuffers(GLcontext *ctx, BOOL bDefaultDriver); // Mesa 5: Parameter change void gldResizeBuffers_DX7( // GLcontext *ctx) - GLframebuffer *fb) + struct gl_framebuffer *fb) { GET_CURRENT_CONTEXT(ctx); dglWglResizeBuffers(ctx, TRUE); diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h b/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h index b5a491e41b1..6f549c9d196 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h @@ -228,7 +228,7 @@ PROC gldGetProcAddress_DX7(LPCSTR a); void gldEnableExtensions_DX7(GLcontext *ctx); void gldInstallPipeline_DX7(GLcontext *ctx); void gldSetupDriverPointers_DX7(GLcontext *ctx); -void gldResizeBuffers_DX7(GLframebuffer *fb); +void gldResizeBuffers_DX7(struct gl_framebuffer *fb); // Texture functions diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c index 7eeb9db2d15..e2793ba557a 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c @@ -238,7 +238,7 @@ static GLboolean gld_set_draw_buffer_DX8( static void gld_set_read_buffer_DX8( GLcontext *ctx, - GLframebuffer *buffer, + struct gl_framebuffer *buffer, GLenum mode) { /* separate read buffer not supported */ @@ -343,7 +343,7 @@ void gld_Clear_DX8( // Mesa 5: Parameter change static void gld_buffer_size_DX8( // GLcontext *ctx, - GLframebuffer *fb, + struct gl_framebuffer *fb, GLuint *width, GLuint *height) { @@ -1038,7 +1038,7 @@ extern BOOL dglWglResizeBuffers(GLcontext *ctx, BOOL bDefaultDriver); // Mesa 5: Parameter change void gldResizeBuffers_DX8( // GLcontext *ctx) - GLframebuffer *fb) + struct gl_framebuffer *fb) { GET_CURRENT_CONTEXT(ctx); dglWglResizeBuffers(ctx, TRUE); diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h b/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h index 7efec7cae80..2446d906360 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h @@ -260,7 +260,7 @@ void gldEnableExtensions_DX8(GLcontext *ctx); void gldInstallPipeline_DX8(GLcontext *ctx); void gldSetupDriverPointers_DX8(GLcontext *ctx); //void gldResizeBuffers_DX8(GLcontext *ctx); -void gldResizeBuffers_DX8(GLframebuffer *fb); +void gldResizeBuffers_DX8(struct gl_framebuffer *fb); // Texture functions diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c index 0558462dea0..0186b268324 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c @@ -238,7 +238,7 @@ static GLboolean gld_set_draw_buffer_DX9( static void gld_set_read_buffer_DX9( GLcontext *ctx, - GLframebuffer *buffer, + struct gl_framebuffer *buffer, GLenum mode) { /* separate read buffer not supported */ @@ -341,7 +341,7 @@ void gld_Clear_DX9( // Mesa 5: Parameter change static void gld_buffer_size_DX9( // GLcontext *ctx, - GLframebuffer *fb, + struct gl_framebuffer *fb, GLuint *width, GLuint *height) { @@ -1068,7 +1068,7 @@ extern BOOL dglWglResizeBuffers(GLcontext *ctx, BOOL bDefaultDriver); // Mesa 5: Parameter change void gldResizeBuffers_DX9( // GLcontext *ctx) - GLframebuffer *fb) + struct gl_framebuffer *fb) { GET_CURRENT_CONTEXT(ctx); dglWglResizeBuffers(ctx, TRUE); diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h b/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h index aec40ac9dd1..201595f7247 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h @@ -263,7 +263,7 @@ void gldEnableExtensions_DX9(GLcontext *ctx); void gldInstallPipeline_DX9(GLcontext *ctx); void gldSetupDriverPointers_DX9(GLcontext *ctx); //void gldResizeBuffers_DX9(GLcontext *ctx); -void gldResizeBuffers_DX9(GLframebuffer *fb); +void gldResizeBuffers_DX9(struct gl_framebuffer *fb); // Texture functions diff --git a/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c b/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c index f927abfa115..b3c2026475d 100644 --- a/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c +++ b/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c @@ -828,7 +828,7 @@ static GLboolean set_draw_buffer( GLcontext* ctx, GLenum mode ) //--------------------------------------------------------------------------- -static void set_read_buffer(GLcontext *ctx, GLframebuffer *colorBuffer, +static void set_read_buffer(GLcontext *ctx, struct gl_framebuffer *colorBuffer, GLenum buffer ) { /* XXX todo */ @@ -843,7 +843,7 @@ static void set_read_buffer(GLcontext *ctx, GLframebuffer *colorBuffer, //static void buffer_size( GLcontext* ctx, GLuint *width, GLuint *height ) // Altered for Mesa 5.x. KeithH static void buffer_size( - GLframebuffer *buffer, + struct gl_framebuffer *buffer, GLuint *width, GLuint *height) { diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 984caa4f0a1..f091c38bc41 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -349,7 +349,7 @@ XMesaBuffer XMesaBufferList = NULL; /** * Allocate a new XMesaBuffer object which corresponds to the given drawable. - * Note that XMesaBuffer is derived from GLframebuffer. + * Note that XMesaBuffer is derived from struct gl_framebuffer. * The new XMesaBuffer will not have any size (Width=Height=0). * * \param d the corresponding X drawable (window or pixmap) @@ -1788,7 +1788,7 @@ XMesaDestroyBuffer(XMesaBuffer b) /** - * Query the current window size and update the corresponding GLframebuffer + * Query the current window size and update the corresponding struct gl_framebuffer * and all attached renderbuffers. * Called when: * 1. the first time a buffer is bound to a context. diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 8b75f99e8d2..37b7a587dee 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -205,7 +205,7 @@ struct xmesa_renderbuffer * Basically corresponds to a GLXDrawable. */ struct xmesa_buffer { - GLframebuffer mesa_buffer; /* depth, stencil, accum, etc buffers */ + struct gl_framebuffer mesa_buffer; /* depth, stencil, accum, etc buffers */ /* This MUST BE FIRST! */ GLboolean wasCurrent; /* was ever the current buffer? */ XMesaVisual xm_visual; /* the X/Mesa visual */ @@ -553,11 +553,11 @@ XMESA_CONTEXT(GLcontext *ctx) /** - * Return pointer to XMesaBuffer corresponding to a Mesa GLframebuffer. + * Return pointer to XMesaBuffer corresponding to a Mesa struct gl_framebuffer. * Since we're using structure containment, it's just a cast!. */ static INLINE XMesaBuffer -XMESA_BUFFER(GLframebuffer *b) +XMESA_BUFFER(struct gl_framebuffer *b) { return (XMesaBuffer) b; } diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index f8ffdc25dbb..0ecbea2c514 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1291,7 +1291,7 @@ _mesa_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask ) * \return GL_TRUE if compatible, GL_FALSE otherwise. */ static GLboolean -check_compatible(const GLcontext *ctx, const GLframebuffer *buffer) +check_compatible(const GLcontext *ctx, const struct gl_framebuffer *buffer) { const struct gl_config *ctxvis = &ctx->Visual; const struct gl_config *bufvis = &buffer->Visual; @@ -1340,7 +1340,7 @@ check_compatible(const GLcontext *ctx, const GLframebuffer *buffer) * Really, the device driver should totally take care of this. */ static void -initialize_framebuffer_size(GLcontext *ctx, GLframebuffer *fb) +initialize_framebuffer_size(GLcontext *ctx, struct gl_framebuffer *fb) { GLuint width, height; if (ctx->Driver.GetBufferSize) { @@ -1385,8 +1385,8 @@ _mesa_check_init_viewport(GLcontext *ctx, GLuint width, GLuint height) * \param readBuffer the reading framebuffer */ GLboolean -_mesa_make_current( GLcontext *newCtx, GLframebuffer *drawBuffer, - GLframebuffer *readBuffer ) +_mesa_make_current( GLcontext *newCtx, struct gl_framebuffer *drawBuffer, + struct gl_framebuffer *readBuffer ) { if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(newCtx, "_mesa_make_current()\n"); diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index 969c07e53c0..d89ae36a5c3 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -32,13 +32,13 @@ * - GLcontext: this contains the Mesa rendering state * - struct gl_config: this describes the color buffer (RGB vs. ci), whether or not * there's a depth buffer, stencil buffer, etc. - * - GLframebuffer: contains pointers to the depth buffer, stencil buffer, + * - struct gl_framebuffer: contains pointers to the depth buffer, stencil buffer, * accum buffer and alpha buffers. * * These types should be encapsulated by corresponding device driver * data types. See xmesa.h and xmesaP.h for an example. * - * In OOP terms, GLcontext, struct gl_config, and GLframebuffer are base classes + * In OOP terms, GLcontext, struct gl_config, and struct gl_framebuffer are base classes * which the device driver must derive from. * * The following functions create and destroy these data types. @@ -142,8 +142,8 @@ extern void _mesa_check_init_viewport(GLcontext *ctx, GLuint width, GLuint height); extern GLboolean -_mesa_make_current( GLcontext *ctx, GLframebuffer *drawBuffer, - GLframebuffer *readBuffer ); +_mesa_make_current( GLcontext *ctx, struct gl_framebuffer *drawBuffer, + struct gl_framebuffer *readBuffer ); extern GLboolean _mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare); diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 46d26cf901d..01ad2903df7 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -86,14 +86,14 @@ struct dd_function_table { * Mesa uses this to determine when the driver's window size has changed. * XXX OBSOLETE: this function will be removed in the future. */ - void (*GetBufferSize)( GLframebuffer *buffer, + void (*GetBufferSize)( struct gl_framebuffer *buffer, GLuint *width, GLuint *height ); /** * Resize the given framebuffer to the given size. * XXX OBSOLETE: this function will be removed in the future. */ - void (*ResizeBuffers)( GLcontext *ctx, GLframebuffer *fb, + void (*ResizeBuffers)( GLcontext *ctx, struct gl_framebuffer *fb, GLuint width, GLuint height); /** diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index 64da8ba84f9..0e9e6def9b6 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -372,7 +372,7 @@ _mesa_resizebuffers( GLcontext *ctx ) if (ctx->WinSysDrawBuffer) { GLuint newWidth, newHeight; - GLframebuffer *buffer = ctx->WinSysDrawBuffer; + struct gl_framebuffer *buffer = ctx->WinSysDrawBuffer; assert(buffer->Name == 0); @@ -389,7 +389,7 @@ _mesa_resizebuffers( GLcontext *ctx ) if (ctx->WinSysReadBuffer && ctx->WinSysReadBuffer != ctx->WinSysDrawBuffer) { GLuint newWidth, newHeight; - GLframebuffer *buffer = ctx->WinSysReadBuffer; + struct gl_framebuffer *buffer = ctx->WinSysReadBuffer; assert(buffer->Name == 0); diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index ce10b3b1f85..f83fcc725d8 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -5678,7 +5678,7 @@ _mesa_clip_drawpixels(const GLcontext *ctx, GLsizei *width, GLsizei *height, struct gl_pixelstore_attrib *unpack) { - const GLframebuffer *buffer = ctx->DrawBuffer; + const struct gl_framebuffer *buffer = ctx->DrawBuffer; if (unpack->RowLength == 0) { unpack->RowLength = *width; @@ -5749,7 +5749,7 @@ _mesa_clip_readpixels(const GLcontext *ctx, GLsizei *width, GLsizei *height, struct gl_pixelstore_attrib *pack) { - const GLframebuffer *buffer = ctx->ReadBuffer; + const struct gl_framebuffer *buffer = ctx->ReadBuffer; if (pack->RowLength == 0) { pack->RowLength = *width; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 901607adcc1..806a19d02a6 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -125,7 +125,6 @@ struct gl_texture_image; struct gl_texture_object; struct st_context; typedef struct __GLcontextRec GLcontext; -typedef struct gl_framebuffer GLframebuffer; /*@}*/ @@ -3062,10 +3061,10 @@ struct __GLcontextRec /*@}*/ struct gl_config Visual; - GLframebuffer *DrawBuffer; /**< buffer for writing */ - GLframebuffer *ReadBuffer; /**< buffer for reading */ - GLframebuffer *WinSysDrawBuffer; /**< set with MakeCurrent */ - GLframebuffer *WinSysReadBuffer; /**< set with MakeCurrent */ + struct gl_framebuffer *DrawBuffer; /**< buffer for writing */ + struct gl_framebuffer *ReadBuffer; /**< buffer for reading */ + struct gl_framebuffer *WinSysDrawBuffer; /**< set with MakeCurrent */ + struct gl_framebuffer *WinSysReadBuffer; /**< set with MakeCurrent */ /** * Device driver function pointer table diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index ac1f6812b85..dd4e92e3c0e 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -547,7 +547,7 @@ static void st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers) { struct st_context *st = st_context(ctx); - GLframebuffer *fb = ctx->DrawBuffer; + struct gl_framebuffer *fb = ctx->DrawBuffer; GLuint i; (void) count; @@ -568,7 +568,7 @@ static void st_ReadBuffer(GLcontext *ctx, GLenum buffer) { struct st_context *st = st_context(ctx); - GLframebuffer *fb = ctx->ReadBuffer; + struct gl_framebuffer *fb = ctx->ReadBuffer; (void) buffer; diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c index 8c9959f9544..7b247e0a32b 100644 --- a/src/mesa/state_tracker/st_cb_flush.c +++ b/src/mesa/state_tracker/st_cb_flush.c @@ -51,7 +51,7 @@ static INLINE GLboolean is_front_buffer_dirty(struct st_context *st) { - GLframebuffer *fb = st->ctx->DrawBuffer; + struct gl_framebuffer *fb = st->ctx->DrawBuffer; struct st_renderbuffer *strb = st_renderbuffer(fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer); return strb && strb->defined; @@ -64,7 +64,7 @@ is_front_buffer_dirty(struct st_context *st) static void display_front_buffer(struct st_context *st) { - GLframebuffer *fb = st->ctx->DrawBuffer; + struct gl_framebuffer *fb = st->ctx->DrawBuffer; struct st_renderbuffer *strb = st_renderbuffer(fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer); diff --git a/src/mesa/state_tracker/st_cb_viewport.c b/src/mesa/state_tracker/st_cb_viewport.c index a1fe45cac46..c4076b665cc 100644 --- a/src/mesa/state_tracker/st_cb_viewport.c +++ b/src/mesa/state_tracker/st_cb_viewport.c @@ -34,13 +34,13 @@ #include "util/u_atomic.h" /** - * Cast wrapper to convert a GLframebuffer to an st_framebuffer. - * Return NULL if the GLframebuffer is a user-created framebuffer. + * Cast wrapper to convert a struct gl_framebuffer to an st_framebuffer. + * Return NULL if the struct gl_framebuffer is a user-created framebuffer. * We'll only return non-null for window system framebuffers. * Note that this function may fail. */ static INLINE struct st_framebuffer * -st_ws_framebuffer(GLframebuffer *fb) +st_ws_framebuffer(struct gl_framebuffer *fb) { /* FBO cannot be casted. See st_new_framebuffer */ return (struct st_framebuffer *) ((fb && !fb->Name) ? fb : NULL); diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index ef2338817c6..ef75c2c4b15 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -202,12 +202,12 @@ static INLINE struct st_context *st_context(GLcontext *ctx) /** - * Wrapper for GLframebuffer. + * Wrapper for struct gl_framebuffer. * This is an opaque type to the outside world. */ struct st_framebuffer { - GLframebuffer Base; + struct gl_framebuffer Base; void *Private; struct st_framebuffer_iface *iface; diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index 0592dd111d9..a307bb9dc16 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -54,13 +54,13 @@ #include "st_manager.h" /** - * Cast wrapper to convert a GLframebuffer to an st_framebuffer. - * Return NULL if the GLframebuffer is a user-created framebuffer. + * Cast wrapper to convert a struct gl_framebuffer to an st_framebuffer. + * Return NULL if the struct gl_framebuffer is a user-created framebuffer. * We'll only return non-null for window system framebuffers. * Note that this function may fail. */ static INLINE struct st_framebuffer * -st_ws_framebuffer(GLframebuffer *fb) +st_ws_framebuffer(struct gl_framebuffer *fb) { /* FBO cannot be casted. See st_new_framebuffer */ return (struct st_framebuffer *) ((fb && !fb->Name) ? fb : NULL); @@ -429,7 +429,7 @@ st_framebuffer_create(struct st_framebuffer_iface *stfbi) /* for FBO-only context */ if (!stfbi) { - GLframebuffer *base = _mesa_get_incomplete_framebuffer(); + struct gl_framebuffer *base = _mesa_get_incomplete_framebuffer(); stfb->Base = *base; @@ -471,8 +471,8 @@ static void st_framebuffer_reference(struct st_framebuffer **ptr, struct st_framebuffer *stfb) { - GLframebuffer *fb = &stfb->Base; - _mesa_reference_framebuffer((GLframebuffer **) ptr, fb); + struct gl_framebuffer *fb = &stfb->Base; + _mesa_reference_framebuffer((struct gl_framebuffer **) ptr, fb); } static void @@ -832,7 +832,7 @@ st_manager_validate_framebuffers(struct st_context *st) * Add a color renderbuffer on demand. */ boolean -st_manager_add_color_renderbuffer(struct st_context *st, GLframebuffer *fb, +st_manager_add_color_renderbuffer(struct st_context *st, struct gl_framebuffer *fb, gl_buffer_index idx) { struct st_framebuffer *stfb = st_ws_framebuffer(fb); diff --git a/src/mesa/state_tracker/st_manager.h b/src/mesa/state_tracker/st_manager.h index 48a9d4d99a6..6a94978390a 100644 --- a/src/mesa/state_tracker/st_manager.h +++ b/src/mesa/state_tracker/st_manager.h @@ -46,7 +46,7 @@ void st_manager_validate_framebuffers(struct st_context *st); boolean -st_manager_add_color_renderbuffer(struct st_context *st, GLframebuffer *fb, +st_manager_add_color_renderbuffer(struct st_context *st, struct gl_framebuffer *fb, gl_buffer_index idx); #endif /* ST_MANAGER_H */ -- cgit v1.2.3 From f9995b30756140724f41daf963fa06167912be7f Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Tue, 12 Oct 2010 12:26:10 -0400 Subject: Drop GLcontext typedef and use struct gl_context instead --- src/gallium/state_trackers/glx/xlib/xm_api.c | 2 +- src/glsl/builtin_function.cpp | 4 +- src/glsl/builtins/tools/generate_builtins.py | 4 +- src/glsl/glsl_parser_extras.cpp | 4 +- src/glsl/glsl_parser_extras.h | 4 +- src/glsl/linker.cpp | 4 +- src/glsl/main.cpp | 12 +- src/glsl/program.h | 2 +- src/mapi/glapi/glapi.h | 6 +- src/mesa/drivers/beos/GLView.cpp | 164 +++++----- src/mesa/drivers/common/driverfuncs.c | 2 +- src/mesa/drivers/common/driverfuncs.h | 2 +- src/mesa/drivers/common/meta.c | 60 ++-- src/mesa/drivers/common/meta.h | 36 +-- src/mesa/drivers/dri/common/depthtmp.h | 12 +- src/mesa/drivers/dri/common/dri_metaops.c | 16 +- src/mesa/drivers/dri/common/dri_metaops.h | 4 +- src/mesa/drivers/dri/common/drirenderbuffer.c | 4 +- src/mesa/drivers/dri/common/drirenderbuffer.h | 2 +- src/mesa/drivers/dri/common/spantmp.h | 14 +- src/mesa/drivers/dri/common/spantmp2.h | 20 +- src/mesa/drivers/dri/common/stenciltmp.h | 12 +- src/mesa/drivers/dri/common/texmem.c | 4 +- src/mesa/drivers/dri/common/texmem.h | 4 +- src/mesa/drivers/dri/common/utils.c | 4 +- src/mesa/drivers/dri/common/utils.h | 4 +- src/mesa/drivers/dri/i810/i810context.c | 10 +- src/mesa/drivers/dri/i810/i810context.h | 2 +- src/mesa/drivers/dri/i810/i810ioctl.c | 6 +- src/mesa/drivers/dri/i810/i810render.c | 2 +- src/mesa/drivers/dri/i810/i810span.c | 6 +- src/mesa/drivers/dri/i810/i810span.h | 6 +- src/mesa/drivers/dri/i810/i810state.c | 54 ++-- src/mesa/drivers/dri/i810/i810state.h | 6 +- src/mesa/drivers/dri/i810/i810tex.c | 22 +- src/mesa/drivers/dri/i810/i810tex.h | 2 +- src/mesa/drivers/dri/i810/i810texstate.c | 14 +- src/mesa/drivers/dri/i810/i810tris.c | 30 +- src/mesa/drivers/dri/i810/i810tris.h | 4 +- src/mesa/drivers/dri/i810/i810vb.c | 16 +- src/mesa/drivers/dri/i810/i810vb.h | 14 +- src/mesa/drivers/dri/i915/i830_context.c | 2 +- src/mesa/drivers/dri/i915/i830_context.h | 4 +- src/mesa/drivers/dri/i915/i830_state.c | 54 ++-- src/mesa/drivers/dri/i915/i830_texblend.c | 2 +- src/mesa/drivers/dri/i915/i830_texstate.c | 2 +- src/mesa/drivers/dri/i915/i830_vtbl.c | 4 +- src/mesa/drivers/dri/i915/i915_context.c | 4 +- src/mesa/drivers/dri/i915/i915_context.h | 10 +- src/mesa/drivers/dri/i915/i915_fragprog.c | 14 +- src/mesa/drivers/dri/i915/i915_program.c | 2 +- src/mesa/drivers/dri/i915/i915_program.h | 2 +- src/mesa/drivers/dri/i915/i915_state.c | 64 ++-- src/mesa/drivers/dri/i915/i915_texstate.c | 2 +- src/mesa/drivers/dri/i915/i915_vtbl.c | 2 +- src/mesa/drivers/dri/i915/intel_render.c | 2 +- src/mesa/drivers/dri/i915/intel_tris.c | 34 +-- src/mesa/drivers/dri/i915/intel_tris.h | 4 +- src/mesa/drivers/dri/i965/brw_cc.c | 4 +- src/mesa/drivers/dri/i965/brw_clip.c | 2 +- src/mesa/drivers/dri/i965/brw_clip_state.c | 2 +- src/mesa/drivers/dri/i965/brw_context.c | 2 +- src/mesa/drivers/dri/i965/brw_context.h | 6 +- src/mesa/drivers/dri/i965/brw_curbe.c | 4 +- src/mesa/drivers/dri/i965/brw_draw.c | 10 +- src/mesa/drivers/dri/i965/brw_draw.h | 6 +- src/mesa/drivers/dri/i965/brw_draw_upload.c | 6 +- src/mesa/drivers/dri/i965/brw_fallback.c | 2 +- src/mesa/drivers/dri/i965/brw_fallback.h | 8 +- src/mesa/drivers/dri/i965/brw_fs.cpp | 10 +- src/mesa/drivers/dri/i965/brw_fs.h | 2 +- src/mesa/drivers/dri/i965/brw_gs.c | 2 +- src/mesa/drivers/dri/i965/brw_misc_state.c | 10 +- src/mesa/drivers/dri/i965/brw_program.c | 12 +- src/mesa/drivers/dri/i965/brw_queryobj.c | 12 +- src/mesa/drivers/dri/i965/brw_sf.c | 2 +- src/mesa/drivers/dri/i965/brw_sf_state.c | 4 +- src/mesa/drivers/dri/i965/brw_state.c | 4 +- src/mesa/drivers/dri/i965/brw_state_upload.c | 2 +- src/mesa/drivers/dri/i965/brw_tex.c | 2 +- src/mesa/drivers/dri/i965/brw_vs.c | 4 +- src/mesa/drivers/dri/i965/brw_vs_constval.c | 2 +- src/mesa/drivers/dri/i965/brw_vs_state.c | 2 +- src/mesa/drivers/dri/i965/brw_vs_surface_state.c | 6 +- src/mesa/drivers/dri/i965/brw_wm.c | 2 +- src/mesa/drivers/dri/i965/brw_wm.h | 8 +- src/mesa/drivers/dri/i965/brw_wm_sampler_state.c | 4 +- src/mesa/drivers/dri/i965/brw_wm_state.c | 2 +- src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 10 +- src/mesa/drivers/dri/i965/gen6_cc.c | 4 +- src/mesa/drivers/dri/i965/gen6_clip_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_depthstencil.c | 2 +- src/mesa/drivers/dri/i965/gen6_scissor_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_sf_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_viewport_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_vs_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_wm_state.c | 4 +- src/mesa/drivers/dri/intel/intel_blit.c | 2 +- src/mesa/drivers/dri/intel/intel_blit.h | 2 +- src/mesa/drivers/dri/intel/intel_buffer_objects.c | 38 +-- src/mesa/drivers/dri/intel/intel_buffers.c | 6 +- src/mesa/drivers/dri/intel/intel_buffers.h | 4 +- src/mesa/drivers/dri/intel/intel_clear.c | 2 +- src/mesa/drivers/dri/intel/intel_context.c | 20 +- src/mesa/drivers/dri/intel/intel_context.h | 12 +- src/mesa/drivers/dri/intel/intel_extensions.c | 2 +- src/mesa/drivers/dri/intel/intel_extensions.h | 4 +- src/mesa/drivers/dri/intel/intel_extensions_es2.c | 2 +- src/mesa/drivers/dri/intel/intel_fbo.c | 30 +- src/mesa/drivers/dri/intel/intel_pixel.c | 2 +- src/mesa/drivers/dri/intel/intel_pixel.h | 10 +- src/mesa/drivers/dri/intel/intel_pixel_bitmap.c | 6 +- src/mesa/drivers/dri/intel/intel_pixel_copy.c | 6 +- src/mesa/drivers/dri/intel/intel_pixel_draw.c | 2 +- src/mesa/drivers/dri/intel/intel_pixel_read.c | 4 +- src/mesa/drivers/dri/intel/intel_span.c | 10 +- src/mesa/drivers/dri/intel/intel_span.h | 10 +- src/mesa/drivers/dri/intel/intel_state.c | 2 +- src/mesa/drivers/dri/intel/intel_syncobj.c | 12 +- src/mesa/drivers/dri/intel/intel_tex.c | 10 +- src/mesa/drivers/dri/intel/intel_tex.h | 2 +- src/mesa/drivers/dri/intel/intel_tex_copy.c | 10 +- src/mesa/drivers/dri/intel/intel_tex_format.c | 2 +- src/mesa/drivers/dri/intel/intel_tex_image.c | 20 +- src/mesa/drivers/dri/intel/intel_tex_subimage.c | 10 +- src/mesa/drivers/dri/mach64/mach64_context.c | 2 +- src/mesa/drivers/dri/mach64/mach64_context.h | 2 +- src/mesa/drivers/dri/mach64/mach64_dd.c | 6 +- src/mesa/drivers/dri/mach64/mach64_ioctl.c | 2 +- src/mesa/drivers/dri/mach64/mach64_native_vb.c | 8 +- src/mesa/drivers/dri/mach64/mach64_native_vbtmp.h | 8 +- src/mesa/drivers/dri/mach64/mach64_screen.c | 2 +- src/mesa/drivers/dri/mach64/mach64_span.c | 6 +- src/mesa/drivers/dri/mach64/mach64_span.h | 2 +- src/mesa/drivers/dri/mach64/mach64_state.c | 66 ++--- src/mesa/drivers/dri/mach64/mach64_state.h | 10 +- src/mesa/drivers/dri/mach64/mach64_tex.c | 20 +- src/mesa/drivers/dri/mach64/mach64_tex.h | 2 +- src/mesa/drivers/dri/mach64/mach64_texstate.c | 6 +- src/mesa/drivers/dri/mach64/mach64_tris.c | 42 +-- src/mesa/drivers/dri/mach64/mach64_tris.h | 4 +- src/mesa/drivers/dri/mach64/mach64_vb.c | 16 +- src/mesa/drivers/dri/mach64/mach64_vb.h | 18 +- src/mesa/drivers/dri/mach64/mach64_vbtmp.h | 12 +- src/mesa/drivers/dri/mga/mga_texcombine.c | 2 +- src/mesa/drivers/dri/mga/mga_texstate.c | 16 +- src/mesa/drivers/dri/mga/mga_xmesa.c | 4 +- src/mesa/drivers/dri/mga/mgacontext.h | 2 +- src/mesa/drivers/dri/mga/mgadd.c | 2 +- src/mesa/drivers/dri/mga/mgaioctl.c | 6 +- src/mesa/drivers/dri/mga/mgapixel.c | 26 +- src/mesa/drivers/dri/mga/mgapixel.h | 2 +- src/mesa/drivers/dri/mga/mgarender.c | 4 +- src/mesa/drivers/dri/mga/mgaspan.c | 6 +- src/mesa/drivers/dri/mga/mgaspan.h | 2 +- src/mesa/drivers/dri/mga/mgastate.c | 68 ++--- src/mesa/drivers/dri/mga/mgastate.h | 8 +- src/mesa/drivers/dri/mga/mgatex.c | 16 +- src/mesa/drivers/dri/mga/mgatex.h | 4 +- src/mesa/drivers/dri/mga/mgatris.c | 26 +- src/mesa/drivers/dri/mga/mgatris.h | 8 +- src/mesa/drivers/dri/mga/mgavb.c | 16 +- src/mesa/drivers/dri/mga/mgavb.h | 16 +- src/mesa/drivers/dri/nouveau/nouveau_bo_state.c | 8 +- src/mesa/drivers/dri/nouveau/nouveau_bo_state.h | 8 +- src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c | 16 +- src/mesa/drivers/dri/nouveau/nouveau_context.c | 22 +- src/mesa/drivers/dri/nouveau/nouveau_context.h | 12 +- src/mesa/drivers/dri/nouveau/nouveau_driver.c | 8 +- src/mesa/drivers/dri/nouveau/nouveau_driver.h | 14 +- src/mesa/drivers/dri/nouveau/nouveau_fbo.c | 16 +- src/mesa/drivers/dri/nouveau/nouveau_render.h | 4 +- src/mesa/drivers/dri/nouveau/nouveau_render_t.c | 24 +- src/mesa/drivers/dri/nouveau/nouveau_span.c | 10 +- src/mesa/drivers/dri/nouveau/nouveau_state.c | 80 ++--- src/mesa/drivers/dri/nouveau/nouveau_state.h | 10 +- src/mesa/drivers/dri/nouveau/nouveau_surface.c | 2 +- src/mesa/drivers/dri/nouveau/nouveau_surface.h | 2 +- src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c | 30 +- src/mesa/drivers/dri/nouveau/nouveau_texture.c | 52 ++-- src/mesa/drivers/dri/nouveau/nouveau_texture.h | 4 +- src/mesa/drivers/dri/nouveau/nouveau_util.h | 4 +- src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c | 26 +- src/mesa/drivers/dri/nouveau/nv04_context.c | 16 +- src/mesa/drivers/dri/nouveau/nv04_context.h | 2 +- src/mesa/drivers/dri/nouveau/nv04_driver.h | 28 +- src/mesa/drivers/dri/nouveau/nv04_render.c | 26 +- src/mesa/drivers/dri/nouveau/nv04_state_fb.c | 4 +- src/mesa/drivers/dri/nouveau/nv04_state_frag.c | 4 +- src/mesa/drivers/dri/nouveau/nv04_state_raster.c | 8 +- src/mesa/drivers/dri/nouveau/nv04_state_tex.c | 2 +- src/mesa/drivers/dri/nouveau/nv04_surface.c | 14 +- src/mesa/drivers/dri/nouveau/nv10_context.c | 22 +- src/mesa/drivers/dri/nouveau/nv10_driver.h | 100 +++---- src/mesa/drivers/dri/nouveau/nv10_render.c | 6 +- src/mesa/drivers/dri/nouveau/nv10_state_fb.c | 12 +- src/mesa/drivers/dri/nouveau/nv10_state_frag.c | 10 +- src/mesa/drivers/dri/nouveau/nv10_state_polygon.c | 16 +- src/mesa/drivers/dri/nouveau/nv10_state_raster.c | 24 +- src/mesa/drivers/dri/nouveau/nv10_state_tex.c | 6 +- src/mesa/drivers/dri/nouveau/nv10_state_tnl.c | 28 +- src/mesa/drivers/dri/nouveau/nv20_context.c | 10 +- src/mesa/drivers/dri/nouveau/nv20_driver.h | 46 +-- src/mesa/drivers/dri/nouveau/nv20_render.c | 6 +- src/mesa/drivers/dri/nouveau/nv20_state_fb.c | 4 +- src/mesa/drivers/dri/nouveau/nv20_state_frag.c | 4 +- src/mesa/drivers/dri/nouveau/nv20_state_polygon.c | 2 +- src/mesa/drivers/dri/nouveau/nv20_state_raster.c | 2 +- src/mesa/drivers/dri/nouveau/nv20_state_tex.c | 8 +- src/mesa/drivers/dri/nouveau/nv20_state_tnl.c | 22 +- src/mesa/drivers/dri/r128/r128_context.c | 2 +- src/mesa/drivers/dri/r128/r128_context.h | 2 +- src/mesa/drivers/dri/r128/r128_dd.c | 6 +- src/mesa/drivers/dri/r128/r128_ioctl.c | 2 +- src/mesa/drivers/dri/r128/r128_screen.c | 2 +- src/mesa/drivers/dri/r128/r128_span.c | 6 +- src/mesa/drivers/dri/r128/r128_span.h | 2 +- src/mesa/drivers/dri/r128/r128_state.c | 76 ++--- src/mesa/drivers/dri/r128/r128_state.h | 6 +- src/mesa/drivers/dri/r128/r128_tex.c | 20 +- src/mesa/drivers/dri/r128/r128_tex.h | 2 +- src/mesa/drivers/dri/r128/r128_texstate.c | 12 +- src/mesa/drivers/dri/r128/r128_tris.c | 28 +- src/mesa/drivers/dri/r128/r128_tris.h | 6 +- src/mesa/drivers/dri/r200/r200_blit.c | 2 +- src/mesa/drivers/dri/r200/r200_blit.h | 2 +- src/mesa/drivers/dri/r200/r200_cmdbuf.c | 2 +- src/mesa/drivers/dri/r200/r200_context.c | 4 +- src/mesa/drivers/dri/r200/r200_fragshader.c | 8 +- src/mesa/drivers/dri/r200/r200_ioctl.c | 4 +- src/mesa/drivers/dri/r200/r200_ioctl.h | 2 +- src/mesa/drivers/dri/r200/r200_maos.h | 2 +- src/mesa/drivers/dri/r200/r200_maos_arrays.c | 4 +- src/mesa/drivers/dri/r200/r200_state.c | 104 +++---- src/mesa/drivers/dri/r200/r200_state.h | 18 +- src/mesa/drivers/dri/r200/r200_state_init.c | 52 ++-- src/mesa/drivers/dri/r200/r200_swtcl.c | 32 +- src/mesa/drivers/dri/r200/r200_swtcl.h | 22 +- src/mesa/drivers/dri/r200/r200_tcl.c | 20 +- src/mesa/drivers/dri/r200/r200_tcl.h | 10 +- src/mesa/drivers/dri/r200/r200_tex.c | 10 +- src/mesa/drivers/dri/r200/r200_tex.h | 6 +- src/mesa/drivers/dri/r200/r200_texstate.c | 14 +- src/mesa/drivers/dri/r200/r200_vertprog.c | 16 +- src/mesa/drivers/dri/r200/r200_vertprog.h | 2 +- src/mesa/drivers/dri/r300/r300_blit.c | 2 +- src/mesa/drivers/dri/r300/r300_blit.h | 2 +- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 36 +-- src/mesa/drivers/dri/r300/r300_cmdbuf.h | 2 +- src/mesa/drivers/dri/r300/r300_context.c | 8 +- src/mesa/drivers/dri/r300/r300_context.h | 8 +- src/mesa/drivers/dri/r300/r300_draw.c | 24 +- src/mesa/drivers/dri/r300/r300_emit.c | 8 +- src/mesa/drivers/dri/r300/r300_emit.h | 8 +- src/mesa/drivers/dri/r300/r300_fragprog_common.c | 4 +- src/mesa/drivers/dri/r300/r300_fragprog_common.h | 2 +- src/mesa/drivers/dri/r300/r300_render.c | 4 +- src/mesa/drivers/dri/r300/r300_render.h | 4 +- src/mesa/drivers/dri/r300/r300_shader.c | 12 +- src/mesa/drivers/dri/r300/r300_state.c | 106 +++---- src/mesa/drivers/dri/r300/r300_state.h | 6 +- src/mesa/drivers/dri/r300/r300_swtcl.c | 24 +- src/mesa/drivers/dri/r300/r300_swtcl.h | 16 +- src/mesa/drivers/dri/r300/r300_tex.c | 6 +- src/mesa/drivers/dri/r300/r300_tex.h | 2 +- src/mesa/drivers/dri/r300/r300_texstate.c | 4 +- src/mesa/drivers/dri/r300/r300_vertprog.c | 8 +- src/mesa/drivers/dri/r300/r300_vertprog.h | 2 +- src/mesa/drivers/dri/r300/radeon_context.h | 2 +- src/mesa/drivers/dri/r600/evergreen_blit.c | 4 +- src/mesa/drivers/dri/r600/evergreen_blit.h | 2 +- src/mesa/drivers/dri/r600/evergreen_chip.c | 38 +-- src/mesa/drivers/dri/r600/evergreen_context.c | 2 +- src/mesa/drivers/dri/r600/evergreen_fragprog.c | 16 +- src/mesa/drivers/dri/r600/evergreen_fragprog.h | 16 +- src/mesa/drivers/dri/r600/evergreen_ioctl.c | 2 +- src/mesa/drivers/dri/r600/evergreen_ioctl.h | 2 +- src/mesa/drivers/dri/r600/evergreen_oglprog.c | 10 +- src/mesa/drivers/dri/r600/evergreen_render.c | 26 +- src/mesa/drivers/dri/r600/evergreen_state.c | 94 +++--- src/mesa/drivers/dri/r600/evergreen_state.h | 12 +- src/mesa/drivers/dri/r600/evergreen_tex.c | 14 +- src/mesa/drivers/dri/r600/evergreen_tex.h | 4 +- src/mesa/drivers/dri/r600/evergreen_vertprog.c | 20 +- src/mesa/drivers/dri/r600/evergreen_vertprog.h | 18 +- src/mesa/drivers/dri/r600/r600_blit.c | 4 +- src/mesa/drivers/dri/r600/r600_blit.h | 2 +- src/mesa/drivers/dri/r600/r600_context.c | 8 +- src/mesa/drivers/dri/r600/r600_context.h | 6 +- src/mesa/drivers/dri/r600/r600_emit.c | 8 +- src/mesa/drivers/dri/r600/r600_emit.h | 8 +- src/mesa/drivers/dri/r600/r600_tex.c | 6 +- src/mesa/drivers/dri/r600/r600_tex.h | 2 +- src/mesa/drivers/dri/r600/r600_texstate.c | 10 +- src/mesa/drivers/dri/r600/r700_chip.c | 82 ++--- src/mesa/drivers/dri/r600/r700_clear.c | 2 +- src/mesa/drivers/dri/r600/r700_clear.h | 2 +- src/mesa/drivers/dri/r600/r700_fragprog.c | 14 +- src/mesa/drivers/dri/r600/r700_fragprog.h | 14 +- src/mesa/drivers/dri/r600/r700_oglprog.c | 10 +- src/mesa/drivers/dri/r600/r700_render.c | 26 +- src/mesa/drivers/dri/r600/r700_shader.c | 2 +- src/mesa/drivers/dri/r600/r700_shader.h | 2 +- src/mesa/drivers/dri/r600/r700_state.c | 104 +++---- src/mesa/drivers/dri/r600/r700_state.h | 10 +- src/mesa/drivers/dri/r600/r700_vertprog.c | 18 +- src/mesa/drivers/dri/r600/r700_vertprog.h | 16 +- src/mesa/drivers/dri/radeon/radeon_blit.c | 2 +- src/mesa/drivers/dri/radeon/radeon_blit.h | 2 +- .../drivers/dri/radeon/radeon_buffer_objects.c | 14 +- src/mesa/drivers/dri/radeon/radeon_common.c | 28 +- src/mesa/drivers/dri/radeon/radeon_common.h | 24 +- .../drivers/dri/radeon/radeon_common_context.c | 6 +- .../drivers/dri/radeon/radeon_common_context.h | 20 +- src/mesa/drivers/dri/radeon/radeon_context.c | 4 +- src/mesa/drivers/dri/radeon/radeon_dma.c | 6 +- src/mesa/drivers/dri/radeon/radeon_dma.h | 6 +- src/mesa/drivers/dri/radeon/radeon_fbo.c | 28 +- src/mesa/drivers/dri/radeon/radeon_ioctl.c | 8 +- src/mesa/drivers/dri/radeon/radeon_ioctl.h | 8 +- src/mesa/drivers/dri/radeon/radeon_maos.h | 2 +- src/mesa/drivers/dri/radeon/radeon_maos_arrays.c | 6 +- src/mesa/drivers/dri/radeon/radeon_maos_vbtmp.h | 2 +- src/mesa/drivers/dri/radeon/radeon_maos_verts.c | 4 +- src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 2 +- src/mesa/drivers/dri/radeon/radeon_pixel_read.c | 4 +- src/mesa/drivers/dri/radeon/radeon_queryobj.c | 20 +- src/mesa/drivers/dri/radeon/radeon_queryobj.h | 8 +- src/mesa/drivers/dri/radeon/radeon_span.c | 8 +- src/mesa/drivers/dri/radeon/radeon_span.h | 2 +- src/mesa/drivers/dri/radeon/radeon_state.c | 98 +++--- src/mesa/drivers/dri/radeon/radeon_state.h | 14 +- src/mesa/drivers/dri/radeon/radeon_state_init.c | 26 +- src/mesa/drivers/dri/radeon/radeon_swtcl.c | 30 +- src/mesa/drivers/dri/radeon/radeon_swtcl.h | 18 +- src/mesa/drivers/dri/radeon/radeon_tcl.c | 20 +- src/mesa/drivers/dri/radeon/radeon_tcl.h | 10 +- src/mesa/drivers/dri/radeon/radeon_tex.c | 10 +- src/mesa/drivers/dri/radeon/radeon_tex.h | 2 +- src/mesa/drivers/dri/radeon/radeon_tex_copy.c | 6 +- src/mesa/drivers/dri/radeon/radeon_tex_getimage.c | 6 +- src/mesa/drivers/dri/radeon/radeon_texstate.c | 10 +- src/mesa/drivers/dri/radeon/radeon_texture.c | 44 +-- src/mesa/drivers/dri/radeon/radeon_texture.h | 40 +-- src/mesa/drivers/dri/savage/savage_xmesa.c | 2 +- src/mesa/drivers/dri/savage/savagecontext.h | 2 +- src/mesa/drivers/dri/savage/savagedd.c | 6 +- src/mesa/drivers/dri/savage/savagedd.h | 2 +- src/mesa/drivers/dri/savage/savageioctl.c | 10 +- src/mesa/drivers/dri/savage/savageioctl.h | 2 +- src/mesa/drivers/dri/savage/savagerender.c | 8 +- src/mesa/drivers/dri/savage/savagespan.c | 10 +- src/mesa/drivers/dri/savage/savagespan.h | 2 +- src/mesa/drivers/dri/savage/savagestate.c | 82 ++--- src/mesa/drivers/dri/savage/savagestate.h | 10 +- src/mesa/drivers/dri/savage/savagetex.c | 36 +-- src/mesa/drivers/dri/savage/savagetex.h | 2 +- src/mesa/drivers/dri/savage/savagetris.c | 38 +-- src/mesa/drivers/dri/savage/savagetris.h | 4 +- src/mesa/drivers/dri/sis/sis6326_clear.c | 18 +- src/mesa/drivers/dri/sis/sis6326_state.c | 48 +-- src/mesa/drivers/dri/sis/sis_clear.c | 20 +- src/mesa/drivers/dri/sis/sis_context.c | 4 +- src/mesa/drivers/dri/sis/sis_context.h | 4 +- src/mesa/drivers/dri/sis/sis_dd.c | 8 +- src/mesa/drivers/dri/sis/sis_fog.c | 2 +- src/mesa/drivers/dri/sis/sis_screen.c | 2 +- src/mesa/drivers/dri/sis/sis_span.c | 6 +- src/mesa/drivers/dri/sis/sis_span.h | 6 +- src/mesa/drivers/dri/sis/sis_state.c | 46 +-- src/mesa/drivers/dri/sis/sis_state.h | 34 +-- src/mesa/drivers/dri/sis/sis_stencil.c | 8 +- src/mesa/drivers/dri/sis/sis_stencil.h | 2 +- src/mesa/drivers/dri/sis/sis_tex.c | 22 +- src/mesa/drivers/dri/sis/sis_tex.h | 2 +- src/mesa/drivers/dri/sis/sis_texstate.c | 12 +- src/mesa/drivers/dri/sis/sis_tris.c | 28 +- src/mesa/drivers/dri/sis/sis_tris.h | 4 +- src/mesa/drivers/dri/swrast/swrast.c | 22 +- src/mesa/drivers/dri/swrast/swrast_priv.h | 4 +- src/mesa/drivers/dri/swrast/swrast_spantemp.h | 22 +- src/mesa/drivers/dri/tdfx/tdfx_context.c | 6 +- src/mesa/drivers/dri/tdfx/tdfx_context.h | 6 +- src/mesa/drivers/dri/tdfx/tdfx_dd.c | 10 +- src/mesa/drivers/dri/tdfx/tdfx_pixels.c | 10 +- src/mesa/drivers/dri/tdfx/tdfx_pixels.h | 10 +- src/mesa/drivers/dri/tdfx/tdfx_render.c | 8 +- src/mesa/drivers/dri/tdfx/tdfx_span.c | 26 +- src/mesa/drivers/dri/tdfx/tdfx_span.h | 2 +- src/mesa/drivers/dri/tdfx/tdfx_state.c | 78 ++--- src/mesa/drivers/dri/tdfx/tdfx_state.h | 14 +- src/mesa/drivers/dri/tdfx/tdfx_tex.c | 40 +-- src/mesa/drivers/dri/tdfx/tdfx_tex.h | 18 +- src/mesa/drivers/dri/tdfx/tdfx_texman.c | 4 +- src/mesa/drivers/dri/tdfx/tdfx_texman.h | 2 +- src/mesa/drivers/dri/tdfx/tdfx_texstate.c | 20 +- src/mesa/drivers/dri/tdfx/tdfx_texstate.h | 4 +- src/mesa/drivers/dri/tdfx/tdfx_tris.c | 62 ++-- src/mesa/drivers/dri/tdfx/tdfx_tris.h | 2 +- src/mesa/drivers/dri/tdfx/tdfx_vb.c | 20 +- src/mesa/drivers/dri/tdfx/tdfx_vb.h | 12 +- src/mesa/drivers/dri/tdfx/tdfx_vbtmp.h | 6 +- src/mesa/drivers/dri/unichrome/via_context.c | 12 +- src/mesa/drivers/dri/unichrome/via_context.h | 6 +- src/mesa/drivers/dri/unichrome/via_ioctl.c | 10 +- src/mesa/drivers/dri/unichrome/via_ioctl.h | 2 +- src/mesa/drivers/dri/unichrome/via_render.c | 2 +- src/mesa/drivers/dri/unichrome/via_span.c | 6 +- src/mesa/drivers/dri/unichrome/via_span.h | 6 +- src/mesa/drivers/dri/unichrome/via_state.c | 50 ++-- src/mesa/drivers/dri/unichrome/via_state.h | 8 +- src/mesa/drivers/dri/unichrome/via_tex.c | 24 +- src/mesa/drivers/dri/unichrome/via_tex.h | 2 +- src/mesa/drivers/dri/unichrome/via_tris.c | 34 +-- src/mesa/drivers/dri/unichrome/via_tris.h | 6 +- src/mesa/drivers/fbdev/glfbdev.c | 18 +- src/mesa/drivers/osmesa/osmesa.c | 28 +- src/mesa/drivers/windows/gdi/wmesa.c | 80 ++--- src/mesa/drivers/windows/gdi/wmesadef.h | 4 +- src/mesa/drivers/windows/gldirect/dglcontext.c | 4 +- src/mesa/drivers/windows/gldirect/dglcontext.h | 4 +- src/mesa/drivers/windows/gldirect/dglwgl.c | 6 +- src/mesa/drivers/windows/gldirect/dglwgl.h | 2 +- .../drivers/windows/gldirect/dx7/gld_driver_dx7.c | 56 ++-- src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h | 92 +++--- .../drivers/windows/gldirect/dx7/gld_ext_dx7.c | 4 +- .../windows/gldirect/dx7/gld_pipeline_dx7.c | 2 +- .../windows/gldirect/dx7/gld_primitive_dx7.c | 54 ++-- .../drivers/windows/gldirect/dx7/gld_texture_dx7.c | 42 +-- .../windows/gldirect/dx7/gld_vb_d3d_render_dx7.c | 4 +- .../windows/gldirect/dx7/gld_vb_mesa_render_dx7.c | 8 +- .../drivers/windows/gldirect/dx7/gld_wgl_dx7.c | 6 +- .../drivers/windows/gldirect/dx8/gld_driver_dx8.c | 56 ++-- src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h | 94 +++--- .../drivers/windows/gldirect/dx8/gld_ext_dx8.c | 4 +- .../windows/gldirect/dx8/gld_pipeline_dx8.c | 2 +- .../windows/gldirect/dx8/gld_primitive_dx8.c | 54 ++-- .../drivers/windows/gldirect/dx8/gld_texture_dx8.c | 42 +-- .../windows/gldirect/dx8/gld_vb_d3d_render_dx8.c | 4 +- .../windows/gldirect/dx8/gld_vb_mesa_render_dx8.c | 8 +- .../drivers/windows/gldirect/dx8/gld_wgl_dx8.c | 6 +- .../drivers/windows/gldirect/dx9/gld_driver_dx9.c | 58 ++-- src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h | 94 +++--- .../drivers/windows/gldirect/dx9/gld_ext_dx9.c | 4 +- .../windows/gldirect/dx9/gld_pipeline_dx9.c | 2 +- .../windows/gldirect/dx9/gld_primitive_dx9.c | 54 ++-- .../drivers/windows/gldirect/dx9/gld_texture_dx9.c | 42 +-- .../windows/gldirect/dx9/gld_vb_d3d_render_dx9.c | 6 +- .../windows/gldirect/dx9/gld_vb_mesa_render_dx9.c | 8 +- .../drivers/windows/gldirect/dx9/gld_wgl_dx9.c | 6 +- src/mesa/drivers/windows/gldirect/gld_driver.c | 2 +- src/mesa/drivers/windows/gldirect/gld_driver.h | 2 +- .../windows/gldirect/mesasw/gld_wgl_mesasw.c | 60 ++-- src/mesa/drivers/x11/xm_api.c | 14 +- src/mesa/drivers/x11/xm_buffer.c | 6 +- src/mesa/drivers/x11/xm_dd.c | 58 ++-- src/mesa/drivers/x11/xm_line.c | 10 +- src/mesa/drivers/x11/xm_span.c | 20 +- src/mesa/drivers/x11/xm_tri.c | 4 +- src/mesa/drivers/x11/xmesaP.h | 24 +- src/mesa/main/accum.c | 2 +- src/mesa/main/accum.h | 2 +- src/mesa/main/api_arrayelt.c | 12 +- src/mesa/main/api_arrayelt.h | 16 +- src/mesa/main/api_validate.c | 16 +- src/mesa/main/api_validate.h | 12 +- src/mesa/main/arrayobj.c | 24 +- src/mesa/main/arrayobj.h | 10 +- src/mesa/main/atifragshader.c | 4 +- src/mesa/main/atifragshader.h | 8 +- src/mesa/main/attrib.c | 10 +- src/mesa/main/attrib.h | 4 +- src/mesa/main/blend.c | 6 +- src/mesa/main/blend.h | 2 +- src/mesa/main/bufferobj.c | 70 ++--- src/mesa/main/bufferobj.h | 22 +- src/mesa/main/buffers.c | 6 +- src/mesa/main/buffers.h | 4 +- src/mesa/main/clear.c | 4 +- src/mesa/main/colortab.c | 2 +- src/mesa/main/condrender.c | 2 +- src/mesa/main/condrender.h | 2 +- src/mesa/main/context.c | 80 ++--- src/mesa/main/context.h | 54 ++-- src/mesa/main/dd.h | 330 ++++++++++----------- src/mesa/main/debug.c | 4 +- src/mesa/main/debug.h | 4 +- src/mesa/main/depth.c | 2 +- src/mesa/main/depth.h | 2 +- src/mesa/main/depthstencil.c | 38 +-- src/mesa/main/depthstencil.h | 10 +- src/mesa/main/dlist.c | 50 ++-- src/mesa/main/dlist.h | 20 +- src/mesa/main/drawpix.c | 2 +- src/mesa/main/drawtex.c | 2 +- src/mesa/main/enable.c | 12 +- src/mesa/main/enable.h | 4 +- src/mesa/main/eval.c | 8 +- src/mesa/main/eval.h | 6 +- src/mesa/main/extensions.c | 44 +-- src/mesa/main/extensions.h | 28 +- src/mesa/main/fbobject.c | 32 +- src/mesa/main/fbobject.h | 20 +- src/mesa/main/feedback.c | 22 +- src/mesa/main/feedback.h | 14 +- src/mesa/main/ffvertex_prog.c | 6 +- src/mesa/main/ffvertex_prog.h | 2 +- src/mesa/main/fog.c | 2 +- src/mesa/main/fog.h | 2 +- src/mesa/main/framebuffer.c | 30 +- src/mesa/main/framebuffer.h | 22 +- src/mesa/main/get.c | 32 +- src/mesa/main/getstring.c | 4 +- src/mesa/main/hash.c | 4 +- src/mesa/main/hint.c | 2 +- src/mesa/main/hint.h | 2 +- src/mesa/main/image.c | 52 ++-- src/mesa/main/image.h | 50 ++-- src/mesa/main/imports.c | 10 +- src/mesa/main/imports.h | 10 +- src/mesa/main/light.c | 28 +- src/mesa/main/light.h | 22 +- src/mesa/main/lines.c | 6 +- src/mesa/main/lines.h | 2 +- src/mesa/main/matrix.c | 40 +-- src/mesa/main/matrix.h | 8 +- src/mesa/main/mipmap.c | 2 +- src/mesa/main/mipmap.h | 2 +- src/mesa/main/mtypes.h | 88 +++--- src/mesa/main/multisample.c | 2 +- src/mesa/main/multisample.h | 2 +- src/mesa/main/nvprogram.c | 4 +- src/mesa/main/nvprogram.h | 4 +- src/mesa/main/pixel.c | 12 +- src/mesa/main/pixel.h | 6 +- src/mesa/main/pixelstore.c | 2 +- src/mesa/main/pixelstore.h | 2 +- src/mesa/main/points.c | 6 +- src/mesa/main/points.h | 2 +- src/mesa/main/polygon.c | 6 +- src/mesa/main/polygon.h | 4 +- src/mesa/main/queryobj.c | 20 +- src/mesa/main/queryobj.h | 8 +- src/mesa/main/rastpos.c | 4 +- src/mesa/main/rastpos.h | 2 +- src/mesa/main/readpix.c | 2 +- src/mesa/main/readpix.h | 2 +- src/mesa/main/renderbuffer.c | 132 ++++----- src/mesa/main/renderbuffer.h | 22 +- src/mesa/main/scissor.c | 6 +- src/mesa/main/scissor.h | 4 +- src/mesa/main/shaderapi.c | 54 ++-- src/mesa/main/shaderapi.h | 2 +- src/mesa/main/shaderobj.c | 28 +- src/mesa/main/shaderobj.h | 30 +- src/mesa/main/shared.c | 20 +- src/mesa/main/shared.h | 4 +- src/mesa/main/state.c | 32 +- src/mesa/main/state.h | 8 +- src/mesa/main/stencil.c | 16 +- src/mesa/main/stencil.h | 4 +- src/mesa/main/syncobj.c | 18 +- src/mesa/main/syncobj.h | 16 +- src/mesa/main/texcompress.c | 4 +- src/mesa/main/texcompress.h | 4 +- src/mesa/main/texcompress_s3tc.c | 2 +- src/mesa/main/texcompress_s3tc.h | 4 +- src/mesa/main/texenv.c | 14 +- src/mesa/main/texenvprogram.c | 14 +- src/mesa/main/texenvprogram.h | 2 +- src/mesa/main/texformat.c | 2 +- src/mesa/main/texformat.h | 2 +- src/mesa/main/texgetimage.c | 24 +- src/mesa/main/texgetimage.h | 4 +- src/mesa/main/teximage.c | 62 ++-- src/mesa/main/teximage.h | 32 +- src/mesa/main/texobj.c | 24 +- src/mesa/main/texobj.h | 18 +- src/mesa/main/texparam.c | 10 +- src/mesa/main/texrender.c | 22 +- src/mesa/main/texrender.h | 4 +- src/mesa/main/texstate.c | 22 +- src/mesa/main/texstate.h | 14 +- src/mesa/main/texstore.c | 38 +-- src/mesa/main/texstore.h | 34 +-- src/mesa/main/transformfeedback.c | 36 +-- src/mesa/main/transformfeedback.h | 12 +- src/mesa/main/uniforms.c | 18 +- src/mesa/main/uniforms.h | 6 +- src/mesa/main/varray.c | 14 +- src/mesa/main/varray.h | 8 +- src/mesa/main/version.c | 8 +- src/mesa/main/version.h | 2 +- src/mesa/main/viewport.c | 6 +- src/mesa/main/viewport.h | 6 +- src/mesa/main/vtxfmt.c | 8 +- src/mesa/main/vtxfmt.h | 16 +- src/mesa/program/arbprogparse.c | 4 +- src/mesa/program/arbprogparse.h | 4 +- src/mesa/program/ir_to_mesa.cpp | 16 +- src/mesa/program/ir_to_mesa.h | 8 +- src/mesa/program/nvfragparse.c | 4 +- src/mesa/program/nvfragparse.h | 2 +- src/mesa/program/nvvertparse.c | 4 +- src/mesa/program/nvvertparse.h | 2 +- src/mesa/program/prog_cache.c | 6 +- src/mesa/program/prog_cache.h | 4 +- src/mesa/program/prog_execute.c | 6 +- src/mesa/program/prog_execute.h | 8 +- src/mesa/program/prog_optimize.c | 4 +- src/mesa/program/prog_optimize.h | 2 +- src/mesa/program/prog_print.c | 4 +- src/mesa/program/prog_print.h | 2 +- src/mesa/program/prog_statevars.c | 6 +- src/mesa/program/prog_statevars.h | 4 +- src/mesa/program/program.c | 30 +- src/mesa/program/program.h | 40 +-- src/mesa/program/program_parse.tab.c | 2 +- src/mesa/program/program_parse.y | 2 +- src/mesa/program/program_parser.h | 9 +- src/mesa/program/programopt.c | 12 +- src/mesa/program/programopt.h | 8 +- src/mesa/state_tracker/st_atom.c | 2 +- src/mesa/state_tracker/st_atom_blend.c | 4 +- src/mesa/state_tracker/st_atom_depth.c | 2 +- src/mesa/state_tracker/st_atom_pixeltransfer.c | 10 +- src/mesa/state_tracker/st_atom_rasterizer.c | 2 +- src/mesa/state_tracker/st_atom_viewport.c | 2 +- src/mesa/state_tracker/st_cb_accum.c | 8 +- src/mesa/state_tracker/st_cb_accum.h | 4 +- src/mesa/state_tracker/st_cb_bitmap.c | 10 +- src/mesa/state_tracker/st_cb_blit.c | 2 +- src/mesa/state_tracker/st_cb_bufferobjects.c | 20 +- src/mesa/state_tracker/st_cb_clear.c | 12 +- src/mesa/state_tracker/st_cb_condrender.c | 4 +- src/mesa/state_tracker/st_cb_drawpixels.c | 18 +- src/mesa/state_tracker/st_cb_drawtex.c | 2 +- src/mesa/state_tracker/st_cb_eglimage.c | 6 +- src/mesa/state_tracker/st_cb_fbo.c | 22 +- src/mesa/state_tracker/st_cb_feedback.c | 10 +- src/mesa/state_tracker/st_cb_flush.c | 4 +- src/mesa/state_tracker/st_cb_program.c | 12 +- src/mesa/state_tracker/st_cb_program.h | 2 +- src/mesa/state_tracker/st_cb_queryobj.c | 12 +- src/mesa/state_tracker/st_cb_rasterpos.c | 10 +- src/mesa/state_tracker/st_cb_readpixels.c | 8 +- src/mesa/state_tracker/st_cb_readpixels.h | 4 +- src/mesa/state_tracker/st_cb_strings.c | 2 +- src/mesa/state_tracker/st_cb_texture.c | 60 ++-- src/mesa/state_tracker/st_cb_texture.h | 2 +- src/mesa/state_tracker/st_cb_viewport.c | 2 +- src/mesa/state_tracker/st_cb_xformfb.c | 14 +- src/mesa/state_tracker/st_context.c | 10 +- src/mesa/state_tracker/st_context.h | 6 +- src/mesa/state_tracker/st_draw.c | 14 +- src/mesa/state_tracker/st_draw.h | 4 +- src/mesa/state_tracker/st_draw_feedback.c | 4 +- src/mesa/state_tracker/st_extensions.c | 2 +- src/mesa/state_tracker/st_format.c | 4 +- src/mesa/state_tracker/st_format.h | 4 +- src/mesa/state_tracker/st_gen_mipmap.c | 6 +- src/mesa/state_tracker/st_gen_mipmap.h | 2 +- src/mesa/state_tracker/st_manager.c | 2 +- src/mesa/state_tracker/st_mesa_to_tgsi.c | 2 +- src/mesa/state_tracker/st_mesa_to_tgsi.h | 2 +- src/mesa/state_tracker/st_program.c | 2 +- src/mesa/state_tracker/st_program.h | 2 +- src/mesa/swrast/NOTES | 12 +- src/mesa/swrast/s_aaline.c | 6 +- src/mesa/swrast/s_aaline.h | 2 +- src/mesa/swrast/s_aalinetemp.h | 4 +- src/mesa/swrast/s_aatriangle.c | 6 +- src/mesa/swrast/s_aatriangle.h | 2 +- src/mesa/swrast/s_aatritemp.h | 2 +- src/mesa/swrast/s_accum.c | 16 +- src/mesa/swrast/s_accum.h | 2 +- src/mesa/swrast/s_alpha.c | 2 +- src/mesa/swrast/s_alpha.h | 2 +- src/mesa/swrast/s_atifragshader.c | 10 +- src/mesa/swrast/s_atifragshader.h | 2 +- src/mesa/swrast/s_bitmap.c | 4 +- src/mesa/swrast/s_blend.c | 26 +- src/mesa/swrast/s_blend.h | 4 +- src/mesa/swrast/s_blit.c | 8 +- src/mesa/swrast/s_clear.c | 8 +- src/mesa/swrast/s_context.c | 72 ++--- src/mesa/swrast/s_context.h | 34 +-- src/mesa/swrast/s_copypix.c | 14 +- src/mesa/swrast/s_depth.c | 24 +- src/mesa/swrast/s_depth.h | 12 +- src/mesa/swrast/s_drawpix.c | 12 +- src/mesa/swrast/s_feedback.c | 14 +- src/mesa/swrast/s_feedback.h | 12 +- src/mesa/swrast/s_fog.c | 4 +- src/mesa/swrast/s_fog.h | 4 +- src/mesa/swrast/s_fragprog.c | 10 +- src/mesa/swrast/s_fragprog.h | 2 +- src/mesa/swrast/s_lines.c | 8 +- src/mesa/swrast/s_lines.h | 4 +- src/mesa/swrast/s_linetemp.h | 2 +- src/mesa/swrast/s_logic.c | 8 +- src/mesa/swrast/s_logic.h | 2 +- src/mesa/swrast/s_masking.c | 2 +- src/mesa/swrast/s_masking.h | 2 +- src/mesa/swrast/s_points.c | 14 +- src/mesa/swrast/s_points.h | 4 +- src/mesa/swrast/s_readpix.c | 12 +- src/mesa/swrast/s_span.c | 32 +- src/mesa/swrast/s_span.h | 16 +- src/mesa/swrast/s_spantemp.h | 14 +- src/mesa/swrast/s_stencil.c | 20 +- src/mesa/swrast/s_stencil.h | 8 +- src/mesa/swrast/s_texcombine.c | 4 +- src/mesa/swrast/s_texcombine.h | 2 +- src/mesa/swrast/s_texfilter.c | 124 ++++---- src/mesa/swrast/s_texfilter.h | 2 +- src/mesa/swrast/s_triangle.c | 12 +- src/mesa/swrast/s_triangle.h | 6 +- src/mesa/swrast/s_tritemp.h | 2 +- src/mesa/swrast/s_zoom.c | 14 +- src/mesa/swrast/s_zoom.h | 10 +- src/mesa/swrast/swrast.h | 54 ++-- src/mesa/swrast_setup/NOTES | 12 +- src/mesa/swrast_setup/ss_context.c | 18 +- src/mesa/swrast_setup/ss_triangle.c | 16 +- src/mesa/swrast_setup/ss_triangle.h | 4 +- src/mesa/swrast_setup/ss_tritmp.h | 4 +- src/mesa/swrast_setup/ss_vb.h | 4 +- src/mesa/swrast_setup/swrast_setup.h | 10 +- src/mesa/tnl/NOTES | 18 +- src/mesa/tnl/t_context.c | 14 +- src/mesa/tnl/t_context.h | 46 +-- src/mesa/tnl/t_draw.c | 20 +- src/mesa/tnl/t_pipeline.c | 10 +- src/mesa/tnl/t_pipeline.h | 10 +- src/mesa/tnl/t_rasterpos.c | 8 +- src/mesa/tnl/t_vb_cliptmp.h | 6 +- src/mesa/tnl/t_vb_fog.c | 6 +- src/mesa/tnl/t_vb_light.c | 12 +- src/mesa/tnl/t_vb_lighttmp.h | 8 +- src/mesa/tnl/t_vb_normals.c | 6 +- src/mesa/tnl/t_vb_points.c | 4 +- src/mesa/tnl/t_vb_program.c | 20 +- src/mesa/tnl/t_vb_render.c | 8 +- src/mesa/tnl/t_vb_rendertmp.h | 24 +- src/mesa/tnl/t_vb_texgen.c | 16 +- src/mesa/tnl/t_vb_texmat.c | 4 +- src/mesa/tnl/t_vb_vertex.c | 10 +- src/mesa/tnl/t_vertex.c | 40 +-- src/mesa/tnl/t_vertex.h | 42 +-- src/mesa/tnl/t_vertex_generic.c | 14 +- src/mesa/tnl/t_vertex_sse.c | 8 +- src/mesa/tnl/t_vp_build.c | 2 +- src/mesa/tnl/t_vp_build.h | 2 +- src/mesa/tnl/tnl.h | 24 +- src/mesa/tnl_dd/imm/t_dd_imm_primtmp.h | 112 +++---- src/mesa/tnl_dd/imm/t_dd_imm_vb.c | 8 +- src/mesa/tnl_dd/imm/t_dd_imm_vbtmp.h | 6 +- src/mesa/tnl_dd/t_dd.c | 6 +- src/mesa/tnl_dd/t_dd_dmatmp.h | 48 +-- src/mesa/tnl_dd/t_dd_dmatmp2.h | 46 +-- src/mesa/tnl_dd/t_dd_rendertmp.h | 24 +- src/mesa/tnl_dd/t_dd_triemit.h | 2 +- src/mesa/tnl_dd/t_dd_tritmp.h | 10 +- src/mesa/tnl_dd/t_dd_unfilled.h | 4 +- src/mesa/tnl_dd/t_dd_vb.c | 16 +- src/mesa/tnl_dd/t_dd_vbtmp.h | 10 +- src/mesa/vbo/vbo.h | 18 +- src/mesa/vbo/vbo_context.c | 14 +- src/mesa/vbo/vbo_context.h | 4 +- src/mesa/vbo/vbo_exec.c | 6 +- src/mesa/vbo/vbo_exec.h | 14 +- src/mesa/vbo/vbo_exec_api.c | 20 +- src/mesa/vbo/vbo_exec_array.c | 24 +- src/mesa/vbo/vbo_exec_draw.c | 8 +- src/mesa/vbo/vbo_exec_eval.c | 2 +- src/mesa/vbo/vbo_rebase.c | 2 +- src/mesa/vbo/vbo_save.c | 8 +- src/mesa/vbo/vbo_save.h | 28 +- src/mesa/vbo/vbo_save_api.c | 54 ++-- src/mesa/vbo/vbo_save_draw.c | 8 +- src/mesa/vbo/vbo_save_loopback.c | 16 +- src/mesa/vbo/vbo_split.c | 2 +- src/mesa/vbo/vbo_split.h | 4 +- src/mesa/vbo/vbo_split_copy.c | 10 +- src/mesa/vbo/vbo_split_inplace.c | 4 +- src/mesa/x86/gen_matypes.c | 26 +- src/mesa/x86/mmx.h | 10 +- src/mesa/x86/mmx_blendtmp.h | 2 +- 789 files changed, 5698 insertions(+), 5701 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index 7206188a062..8332633f01b 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -854,7 +854,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) if (!xmdpy) return NULL; - /* Note: the XMesaContext contains a Mesa GLcontext struct (inheritance) */ + /* Note: the XMesaContext contains a Mesa struct gl_context struct (inheritance) */ c = (XMesaContext) CALLOC_STRUCT(xmesa_context); if (!c) return NULL; diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp index 5f9bbec2f01..50720040a6c 100644 --- a/src/glsl/builtin_function.cpp +++ b/src/glsl/builtin_function.cpp @@ -30,12 +30,12 @@ #include "ast.h" extern "C" struct gl_shader * -_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type); +_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type); gl_shader * read_builtins(GLenum target, const char *protos, const char **functions, unsigned count) { - GLcontext fakeCtx; + struct gl_context fakeCtx; fakeCtx.API = API_OPENGL; gl_shader *sh = _mesa_new_shader(NULL, 0, target); struct _mesa_glsl_parse_state *st = diff --git a/src/glsl/builtins/tools/generate_builtins.py b/src/glsl/builtins/tools/generate_builtins.py index 691a318c1cb..e8191ee9fdc 100755 --- a/src/glsl/builtins/tools/generate_builtins.py +++ b/src/glsl/builtins/tools/generate_builtins.py @@ -123,12 +123,12 @@ if __name__ == "__main__": #include "ast.h" extern "C" struct gl_shader * -_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type); +_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type); gl_shader * read_builtins(GLenum target, const char *protos, const char **functions, unsigned count) { - GLcontext fakeCtx; + struct gl_context fakeCtx; fakeCtx.API = API_OPENGL; gl_shader *sh = _mesa_new_shader(NULL, 0, target); struct _mesa_glsl_parse_state *st = diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index 1337bed2b48..3b9877ec0e5 100644 --- a/src/glsl/glsl_parser_extras.cpp +++ b/src/glsl/glsl_parser_extras.cpp @@ -27,7 +27,7 @@ extern "C" { #include -#include "main/core.h" /* for struct __GLcontextRec */ +#include "main/core.h" /* for struct gl_context */ } #include "ast.h" @@ -36,7 +36,7 @@ extern "C" { #include "ir_optimization.h" #include "loop_analysis.h" -_mesa_glsl_parse_state::_mesa_glsl_parse_state(struct __GLcontextRec *ctx, +_mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *ctx, GLenum target, void *mem_ctx) { switch (target) { diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h index fe71c7a9901..1f039e9f1b2 100644 --- a/src/glsl/glsl_parser_extras.h +++ b/src/glsl/glsl_parser_extras.h @@ -41,10 +41,10 @@ enum _mesa_glsl_parser_targets { ir_shader }; -struct __GLcontextRec; +struct gl_context; struct _mesa_glsl_parse_state { - _mesa_glsl_parse_state(struct __GLcontextRec *ctx, GLenum target, + _mesa_glsl_parse_state(struct gl_context *ctx, GLenum target, void *mem_ctx); /* Callers of this talloc-based new need not call delete. It's diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index c612fe54663..2cbfd78ba0c 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -719,7 +719,7 @@ get_main_function_signature(gl_shader *sh) * shader is returned. */ static struct gl_shader * -link_intrastage_shaders(GLcontext *ctx, +link_intrastage_shaders(struct gl_context *ctx, struct gl_shader_program *prog, struct gl_shader **shader_list, unsigned num_shaders) @@ -1386,7 +1386,7 @@ assign_varying_locations(struct gl_shader_program *prog, void -link_shaders(GLcontext *ctx, struct gl_shader_program *prog) +link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) { prog->LinkStatus = false; prog->Validated = false; diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp index 94c14a58a7b..9350592196d 100644 --- a/src/glsl/main.cpp +++ b/src/glsl/main.cpp @@ -38,12 +38,12 @@ #include "loop_analysis.h" extern "C" struct gl_shader * -_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type); +_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type); /* Copied from shader_api.c for the stand-alone compiler. */ struct gl_shader * -_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type) +_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type) { struct gl_shader *shader; @@ -60,7 +60,7 @@ _mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type) } static void -initialize_context(GLcontext *ctx, gl_api api) +initialize_context(struct gl_context *ctx, gl_api api) { memset(ctx, 0, sizeof(*ctx)); @@ -160,7 +160,7 @@ const struct option compiler_opts[] = { }; void -compile_shader(GLcontext *ctx, struct gl_shader *shader) +compile_shader(struct gl_context *ctx, struct gl_shader *shader) { struct _mesa_glsl_parse_state *state = new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader); @@ -252,8 +252,8 @@ int main(int argc, char **argv) { int status = EXIT_SUCCESS; - GLcontext local_ctx; - GLcontext *ctx = &local_ctx; + struct gl_context local_ctx; + struct gl_context *ctx = &local_ctx; int c; int idx = 0; diff --git a/src/glsl/program.h b/src/glsl/program.h index 893169b6cc2..db602fa9ec2 100644 --- a/src/glsl/program.h +++ b/src/glsl/program.h @@ -24,4 +24,4 @@ #include "main/core.h" extern void -link_shaders(GLcontext *ctx, struct gl_shader_program *prog); +link_shaders(struct gl_context *ctx, struct gl_shader_program *prog); diff --git a/src/mapi/glapi/glapi.h b/src/mapi/glapi/glapi.h index a0bb0781063..8cca50487c4 100644 --- a/src/mapi/glapi/glapi.h +++ b/src/mapi/glapi/glapi.h @@ -95,7 +95,7 @@ _GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch; _GLAPI_EXPORT extern const void *_glapi_Context; # define GET_DISPATCH() _glapi_tls_Dispatch -# define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_tls_Context +# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_tls_Context #else @@ -107,13 +107,13 @@ _GLAPI_EXPORT extern void *_glapi_Context; # define GET_DISPATCH() \ (likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch()) -# define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) \ +# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) \ (likely(_glapi_Context) ? _glapi_Context : _glapi_get_context()) # else # define GET_DISPATCH() _glapi_Dispatch -# define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_Context +# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_Context # endif diff --git a/src/mesa/drivers/beos/GLView.cpp b/src/mesa/drivers/beos/GLView.cpp index 8ccb93d56b5..ee3415b3d1a 100644 --- a/src/mesa/drivers/beos/GLView.cpp +++ b/src/mesa/drivers/beos/GLView.cpp @@ -105,7 +105,7 @@ public: MesaDriver(); ~MesaDriver(); - void Init(BGLView * bglview, GLcontext * c, struct gl_config * v, struct gl_framebuffer * b); + void Init(BGLView * bglview, struct gl_context * c, struct gl_config * v, struct gl_framebuffer * b); void LockGL(); void UnlockGL(); @@ -120,7 +120,7 @@ private: MesaDriver(const MesaDriver &rhs); // copy constructor illegal MesaDriver &operator=(const MesaDriver &rhs); // assignment oper. illegal - GLcontext * m_glcontext; + struct gl_context * m_glcontext; struct gl_config * m_glvisual; struct gl_framebuffer * m_glframebuffer; @@ -134,119 +134,119 @@ private: GLuint m_height; // Mesa Device Driver callback functions - static void UpdateState(GLcontext *ctx, GLuint new_state); - static void ClearIndex(GLcontext *ctx, GLuint index); - static void ClearColor(GLcontext *ctx, const GLfloat color[4]); - static void Clear(GLcontext *ctx, GLbitfield mask, + static void UpdateState(struct gl_context *ctx, GLuint new_state); + static void ClearIndex(struct gl_context *ctx, GLuint index); + static void ClearColor(struct gl_context *ctx, const GLfloat color[4]); + static void Clear(struct gl_context *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height); - static void ClearFront(GLcontext *ctx, GLboolean all, GLint x, GLint y, + static void ClearFront(struct gl_context *ctx, GLboolean all, GLint x, GLint y, GLint width, GLint height); - static void ClearBack(GLcontext *ctx, GLboolean all, GLint x, GLint y, + static void ClearBack(struct gl_context *ctx, GLboolean all, GLint x, GLint y, GLint width, GLint height); - static void Index(GLcontext *ctx, GLuint index); - static void Color(GLcontext *ctx, GLubyte r, GLubyte g, + static void Index(struct gl_context *ctx, GLuint index); + static void Color(struct gl_context *ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a); - static void SetBuffer(GLcontext *ctx, struct gl_framebuffer *colorBuffer, + static void SetBuffer(struct gl_context *ctx, struct gl_framebuffer *colorBuffer, GLenum mode); static void GetBufferSize(struct gl_framebuffer * framebuffer, GLuint *width, GLuint *height); - static void Error(GLcontext *ctx); - static const GLubyte * GetString(GLcontext *ctx, GLenum name); - static void Viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); + static void Error(struct gl_context *ctx); + static const GLubyte * GetString(struct gl_context *ctx, GLenum name); + static void Viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h); // Front-buffer functions - static void WriteRGBASpanFront(const GLcontext *ctx, GLuint n, + static void WriteRGBASpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgba[][4], const GLubyte mask[]); - static void WriteRGBSpanFront(const GLcontext *ctx, GLuint n, + static void WriteRGBSpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgba[][3], const GLubyte mask[]); - static void WriteMonoRGBASpanFront(const GLcontext *ctx, GLuint n, + static void WriteMonoRGBASpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]); - static void WriteRGBAPixelsFront(const GLcontext *ctx, GLuint n, + static void WriteRGBAPixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], CONST GLubyte rgba[][4], const GLubyte mask[]); - static void WriteMonoRGBAPixelsFront(const GLcontext *ctx, GLuint n, + static void WriteMonoRGBAPixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLchan color[4], const GLubyte mask[]); - static void WriteCI32SpanFront(const GLcontext *ctx, GLuint n, + static void WriteCI32SpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[]); - static void WriteCI8SpanFront(const GLcontext *ctx, GLuint n, + static void WriteCI8SpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLubyte index[], const GLubyte mask[]); - static void WriteMonoCISpanFront(const GLcontext *ctx, GLuint n, + static void WriteMonoCISpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint colorIndex, const GLubyte mask[]); - static void WriteCI32PixelsFront(const GLcontext *ctx, + static void WriteCI32PixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[]); - static void WriteMonoCIPixelsFront(const GLcontext *ctx, GLuint n, + static void WriteMonoCIPixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint colorIndex, const GLubyte mask[]); - static void ReadCI32SpanFront(const GLcontext *ctx, + static void ReadCI32SpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint index[]); - static void ReadRGBASpanFront(const GLcontext *ctx, GLuint n, + static void ReadRGBASpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4]); - static void ReadCI32PixelsFront(const GLcontext *ctx, + static void ReadCI32PixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint indx[], const GLubyte mask[]); - static void ReadRGBAPixelsFront(const GLcontext *ctx, + static void ReadRGBAPixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[]); // Back buffer functions - static void WriteRGBASpanBack(const GLcontext *ctx, GLuint n, + static void WriteRGBASpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgba[][4], const GLubyte mask[]); - static void WriteRGBSpanBack(const GLcontext *ctx, GLuint n, + static void WriteRGBSpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgba[][3], const GLubyte mask[]); - static void WriteMonoRGBASpanBack(const GLcontext *ctx, GLuint n, + static void WriteMonoRGBASpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]); - static void WriteRGBAPixelsBack(const GLcontext *ctx, GLuint n, + static void WriteRGBAPixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], CONST GLubyte rgba[][4], const GLubyte mask[]); - static void WriteMonoRGBAPixelsBack(const GLcontext *ctx, GLuint n, + static void WriteMonoRGBAPixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLchan color[4], const GLubyte mask[]); - static void WriteCI32SpanBack(const GLcontext *ctx, GLuint n, + static void WriteCI32SpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[]); - static void WriteCI8SpanBack(const GLcontext *ctx, GLuint n, GLint x, GLint y, + static void WriteCI8SpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLubyte index[], const GLubyte mask[]); - static void WriteMonoCISpanBack(const GLcontext *ctx, GLuint n, + static void WriteMonoCISpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint colorIndex, const GLubyte mask[]); - static void WriteCI32PixelsBack(const GLcontext *ctx, + static void WriteCI32PixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[]); - static void WriteMonoCIPixelsBack(const GLcontext *ctx, + static void WriteMonoCIPixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint colorIndex, const GLubyte mask[]); - static void ReadCI32SpanBack(const GLcontext *ctx, + static void ReadCI32SpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint index[]); - static void ReadRGBASpanBack(const GLcontext *ctx, GLuint n, + static void ReadRGBASpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4]); - static void ReadCI32PixelsBack(const GLcontext *ctx, + static void ReadCI32PixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint indx[], const GLubyte mask[]); - static void ReadRGBAPixelsBack(const GLcontext *ctx, + static void ReadRGBAPixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[]); @@ -319,7 +319,7 @@ BGLView::BGLView(BRect rect, char *name, functions.Viewport = md->Viewport; // create core context - GLcontext *ctx = _mesa_create_context(visual, NULL, &functions, md); + struct gl_context *ctx = _mesa_create_context(visual, NULL, &functions, md); if (! ctx) { _mesa_destroy_visual(visual); delete md; @@ -668,7 +668,7 @@ MesaDriver::~MesaDriver() } -void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, struct gl_config * visual, struct gl_framebuffer * framebuffer) +void MesaDriver::Init(BGLView * bglview, struct gl_context * ctx, struct gl_config * visual, struct gl_framebuffer * framebuffer) { m_bglview = bglview; m_glcontext = ctx; @@ -815,14 +815,14 @@ void MesaDriver::Draw(BRect updateRect) const } -void MesaDriver::Error(GLcontext *ctx) +void MesaDriver::Error(struct gl_context *ctx) { MesaDriver *md = (MesaDriver *) ctx->DriverCtx; if (md && md->m_bglview) md->m_bglview->ErrorCallback((unsigned long) ctx->ErrorValue); } -void MesaDriver::UpdateState( GLcontext *ctx, GLuint new_state ) +void MesaDriver::UpdateState( struct gl_context *ctx, GLuint new_state ) { struct swrast_device_driver * swdd = _swrast_GetDeviceDriverReference( ctx ); @@ -868,14 +868,14 @@ void MesaDriver::UpdateState( GLcontext *ctx, GLuint new_state ) } -void MesaDriver::ClearIndex(GLcontext *ctx, GLuint index) +void MesaDriver::ClearIndex(struct gl_context *ctx, GLuint index) { MesaDriver *md = (MesaDriver *) ctx->DriverCtx; md->m_clear_index = index; } -void MesaDriver::ClearColor(GLcontext *ctx, const GLfloat color[4]) +void MesaDriver::ClearColor(struct gl_context *ctx, const GLfloat color[4]) { MesaDriver *md = (MesaDriver *) ctx->DriverCtx; CLAMPED_FLOAT_TO_CHAN(md->m_clear_color[BE_RCOMP], color[0]); @@ -886,7 +886,7 @@ void MesaDriver::ClearColor(GLcontext *ctx, const GLfloat color[4]) } -void MesaDriver::Clear(GLcontext *ctx, GLbitfield mask, +void MesaDriver::Clear(struct gl_context *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height) { @@ -903,7 +903,7 @@ void MesaDriver::Clear(GLcontext *ctx, GLbitfield mask, } -void MesaDriver::ClearFront(GLcontext *ctx, +void MesaDriver::ClearFront(struct gl_context *ctx, GLboolean all, GLint x, GLint y, GLint width, GLint height) { @@ -947,7 +947,7 @@ void MesaDriver::ClearFront(GLcontext *ctx, } -void MesaDriver::ClearBack(GLcontext *ctx, +void MesaDriver::ClearBack(struct gl_context *ctx, GLboolean all, GLint x, GLint y, GLint width, GLint height) { @@ -984,7 +984,7 @@ void MesaDriver::ClearBack(GLcontext *ctx, } -void MesaDriver::SetBuffer(GLcontext *ctx, struct gl_framebuffer *buffer, +void MesaDriver::SetBuffer(struct gl_context *ctx, struct gl_framebuffer *buffer, GLenum mode) { /* TODO */ @@ -1028,14 +1028,14 @@ void MesaDriver::GetBufferSize(struct gl_framebuffer * framebuffer, GLuint *widt } -void MesaDriver::Viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) +void MesaDriver::Viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { /* poll for window size change and realloc software Z/stencil/etc if needed */ _mesa_ResizeBuffersMESA(); } -const GLubyte *MesaDriver::GetString(GLcontext *ctx, GLenum name) +const GLubyte *MesaDriver::GetString(struct gl_context *ctx, GLenum name) { switch (name) { case GL_RENDERER: @@ -1057,7 +1057,7 @@ inline void Plot(BGLView *bglview, int x, int y) } -void MesaDriver::WriteRGBASpanFront(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteRGBASpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgba[][4], const GLubyte mask[]) @@ -1082,7 +1082,7 @@ void MesaDriver::WriteRGBASpanFront(const GLcontext *ctx, GLuint n, } } -void MesaDriver::WriteRGBSpanFront(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteRGBSpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgba[][3], const GLubyte mask[]) @@ -1107,7 +1107,7 @@ void MesaDriver::WriteRGBSpanFront(const GLcontext *ctx, GLuint n, } } -void MesaDriver::WriteMonoRGBASpanFront(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoRGBASpanFront(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]) @@ -1131,7 +1131,7 @@ void MesaDriver::WriteMonoRGBASpanFront(const GLcontext *ctx, GLuint n, } } -void MesaDriver::WriteRGBAPixelsFront(const GLcontext *ctx, +void MesaDriver::WriteRGBAPixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], CONST GLubyte rgba[][4], const GLubyte mask[] ) @@ -1156,7 +1156,7 @@ void MesaDriver::WriteRGBAPixelsFront(const GLcontext *ctx, } -void MesaDriver::WriteMonoRGBAPixelsFront(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoRGBAPixelsFront(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLchan color[4], const GLubyte mask[]) @@ -1181,21 +1181,21 @@ void MesaDriver::WriteMonoRGBAPixelsFront(const GLcontext *ctx, GLuint n, } -void MesaDriver::WriteCI32SpanFront( const GLcontext *ctx, GLuint n, GLint x, GLint y, +void MesaDriver::WriteCI32SpanFront( const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[] ) { printf("WriteCI32SpanFront() not implemented yet!\n"); // TODO } -void MesaDriver::WriteCI8SpanFront( const GLcontext *ctx, GLuint n, GLint x, GLint y, +void MesaDriver::WriteCI8SpanFront( const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLubyte index[], const GLubyte mask[] ) { printf("WriteCI8SpanFront() not implemented yet!\n"); // TODO } -void MesaDriver::WriteMonoCISpanFront( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoCISpanFront( const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint colorIndex, const GLubyte mask[] ) { @@ -1204,7 +1204,7 @@ void MesaDriver::WriteMonoCISpanFront( const GLcontext *ctx, GLuint n, } -void MesaDriver::WriteCI32PixelsFront( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteCI32PixelsFront( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[] ) { @@ -1212,7 +1212,7 @@ void MesaDriver::WriteCI32PixelsFront( const GLcontext *ctx, GLuint n, // TODO } -void MesaDriver::WriteMonoCIPixelsFront( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoCIPixelsFront( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint colorIndex, const GLubyte mask[] ) { @@ -1221,7 +1221,7 @@ void MesaDriver::WriteMonoCIPixelsFront( const GLcontext *ctx, GLuint n, } -void MesaDriver::ReadCI32SpanFront( const GLcontext *ctx, +void MesaDriver::ReadCI32SpanFront( const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint index[] ) { printf("ReadCI32SpanFront() not implemented yet!\n"); @@ -1229,7 +1229,7 @@ void MesaDriver::ReadCI32SpanFront( const GLcontext *ctx, } -void MesaDriver::ReadRGBASpanFront( const GLcontext *ctx, GLuint n, +void MesaDriver::ReadRGBASpanFront( const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ) { printf("ReadRGBASpanFront() not implemented yet!\n"); @@ -1237,7 +1237,7 @@ void MesaDriver::ReadRGBASpanFront( const GLcontext *ctx, GLuint n, } -void MesaDriver::ReadCI32PixelsFront( const GLcontext *ctx, +void MesaDriver::ReadCI32PixelsFront( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint indx[], const GLubyte mask[] ) { @@ -1246,7 +1246,7 @@ void MesaDriver::ReadCI32PixelsFront( const GLcontext *ctx, } -void MesaDriver::ReadRGBAPixelsFront( const GLcontext *ctx, +void MesaDriver::ReadRGBAPixelsFront( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] ) { @@ -1257,7 +1257,7 @@ void MesaDriver::ReadRGBAPixelsFront( const GLcontext *ctx, -void MesaDriver::WriteRGBASpanBack(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteRGBASpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgba[][4], const GLubyte mask[]) @@ -1287,7 +1287,7 @@ void MesaDriver::WriteRGBASpanBack(const GLcontext *ctx, GLuint n, } -void MesaDriver::WriteRGBSpanBack(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteRGBSpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, CONST GLubyte rgb[][3], const GLubyte mask[]) @@ -1319,7 +1319,7 @@ void MesaDriver::WriteRGBSpanBack(const GLcontext *ctx, GLuint n, -void MesaDriver::WriteMonoRGBASpanBack(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoRGBASpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]) { @@ -1347,7 +1347,7 @@ void MesaDriver::WriteMonoRGBASpanBack(const GLcontext *ctx, GLuint n, } -void MesaDriver::WriteRGBAPixelsBack(const GLcontext *ctx, +void MesaDriver::WriteRGBAPixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], CONST GLubyte rgba[][4], const GLubyte mask[] ) @@ -1394,7 +1394,7 @@ void MesaDriver::WriteRGBAPixelsBack(const GLcontext *ctx, } -void MesaDriver::WriteMonoRGBAPixelsBack(const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoRGBAPixelsBack(const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLchan color[4], const GLubyte mask[]) @@ -1437,7 +1437,7 @@ void MesaDriver::WriteMonoRGBAPixelsBack(const GLcontext *ctx, GLuint n, } -void MesaDriver::WriteCI32SpanBack( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteCI32SpanBack( const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[] ) { @@ -1445,7 +1445,7 @@ void MesaDriver::WriteCI32SpanBack( const GLcontext *ctx, GLuint n, // TODO } -void MesaDriver::WriteCI8SpanBack( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteCI8SpanBack( const struct gl_context *ctx, GLuint n, GLint x, GLint y, const GLubyte index[], const GLubyte mask[] ) { @@ -1453,7 +1453,7 @@ void MesaDriver::WriteCI8SpanBack( const GLcontext *ctx, GLuint n, // TODO } -void MesaDriver::WriteMonoCISpanBack( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoCISpanBack( const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint colorIndex, const GLubyte mask[] ) { @@ -1462,7 +1462,7 @@ void MesaDriver::WriteMonoCISpanBack( const GLcontext *ctx, GLuint n, } -void MesaDriver::WriteCI32PixelsBack( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteCI32PixelsBack( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[] ) { @@ -1470,7 +1470,7 @@ void MesaDriver::WriteCI32PixelsBack( const GLcontext *ctx, GLuint n, // TODO } -void MesaDriver::WriteMonoCIPixelsBack( const GLcontext *ctx, GLuint n, +void MesaDriver::WriteMonoCIPixelsBack( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint colorIndex, const GLubyte mask[] ) { @@ -1479,7 +1479,7 @@ void MesaDriver::WriteMonoCIPixelsBack( const GLcontext *ctx, GLuint n, } -void MesaDriver::ReadCI32SpanBack( const GLcontext *ctx, +void MesaDriver::ReadCI32SpanBack( const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLuint index[] ) { printf("ReadCI32SpanBack() not implemented yet!\n"); @@ -1487,7 +1487,7 @@ void MesaDriver::ReadCI32SpanBack( const GLcontext *ctx, } -void MesaDriver::ReadRGBASpanBack( const GLcontext *ctx, GLuint n, +void MesaDriver::ReadRGBASpanBack( const struct gl_context *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ) { MesaDriver *md = (MesaDriver *) ctx->DriverCtx; @@ -1507,7 +1507,7 @@ void MesaDriver::ReadRGBASpanBack( const GLcontext *ctx, GLuint n, } -void MesaDriver::ReadCI32PixelsBack( const GLcontext *ctx, +void MesaDriver::ReadCI32PixelsBack( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLuint indx[], const GLubyte mask[] ) { @@ -1516,7 +1516,7 @@ void MesaDriver::ReadCI32PixelsBack( const GLcontext *ctx, } -void MesaDriver::ReadRGBAPixelsBack( const GLcontext *ctx, +void MesaDriver::ReadRGBAPixelsBack( const struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] ) { diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index aee73b53bb3..fc67bee98c6 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -224,7 +224,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver) * Only the Intel drivers use this so far. */ void -_mesa_init_driver_state(GLcontext *ctx) +_mesa_init_driver_state(struct gl_context *ctx) { ctx->Driver.AlphaFunc(ctx, ctx->Color.AlphaFunc, ctx->Color.AlphaRef); diff --git a/src/mesa/drivers/common/driverfuncs.h b/src/mesa/drivers/common/driverfuncs.h index 4c90ed12f60..212f3074247 100644 --- a/src/mesa/drivers/common/driverfuncs.h +++ b/src/mesa/drivers/common/driverfuncs.h @@ -31,7 +31,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver); extern void -_mesa_init_driver_state(GLcontext *ctx); +_mesa_init_driver_state(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 16ca42f7b5e..9946bf19900 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -284,7 +284,7 @@ struct gl_meta_state * To be called once during context creation. */ void -_mesa_meta_init(GLcontext *ctx) +_mesa_meta_init(struct gl_context *ctx) { ASSERT(!ctx->Meta); @@ -297,7 +297,7 @@ _mesa_meta_init(GLcontext *ctx) * To be called once during context destruction. */ void -_mesa_meta_free(GLcontext *ctx) +_mesa_meta_free(struct gl_context *ctx) { /* Note: Any textures, VBOs, etc, that we allocate should get * freed by the normal context destruction code. But this would be @@ -316,7 +316,7 @@ _mesa_meta_free(GLcontext *ctx) * to save and reset to their defaults */ static void -_mesa_meta_begin(GLcontext *ctx, GLbitfield state) +_mesa_meta_begin(struct gl_context *ctx, GLbitfield state) { struct save_state *save = &ctx->Meta->Save; @@ -557,7 +557,7 @@ _mesa_meta_begin(GLcontext *ctx, GLbitfield state) * Leave meta state. This is like a light-weight version of glPopAttrib(). */ static void -_mesa_meta_end(GLcontext *ctx) +_mesa_meta_end(struct gl_context *ctx) { struct save_state *save = &ctx->Meta->Save; const GLbitfield state = save->SavedState; @@ -824,7 +824,7 @@ invert_z(GLfloat normZ) * Choose tex target, compute max tex size, etc. */ static void -init_temp_texture(GLcontext *ctx, struct temp_texture *tex) +init_temp_texture(struct gl_context *ctx, struct temp_texture *tex) { /* prefer texture rectangle */ if (ctx->Extensions.NV_texture_rectangle) { @@ -850,7 +850,7 @@ init_temp_texture(GLcontext *ctx, struct temp_texture *tex) * This does some one-time init if needed. */ static struct temp_texture * -get_temp_texture(GLcontext *ctx) +get_temp_texture(struct gl_context *ctx) { struct temp_texture *tex = &ctx->Meta->TempTex; @@ -868,7 +868,7 @@ get_temp_texture(GLcontext *ctx) * allocation/deallocation. */ static struct temp_texture * -get_bitmap_temp_texture(GLcontext *ctx) +get_bitmap_temp_texture(struct gl_context *ctx) { struct temp_texture *tex = &ctx->Meta->Bitmap.Tex; @@ -984,7 +984,7 @@ setup_copypix_texture(struct temp_texture *tex, * Setup/load texture for glDrawPixels. */ static void -setup_drawpix_texture(GLcontext *ctx, +setup_drawpix_texture(struct gl_context *ctx, struct temp_texture *tex, GLboolean newTex, GLenum texIntFormat, @@ -1035,7 +1035,7 @@ setup_drawpix_texture(GLcontext *ctx, * One-time init for drawing depth pixels. */ static void -init_blit_depth_pixels(GLcontext *ctx) +init_blit_depth_pixels(struct gl_context *ctx) { static const char *program = "!!ARBfp1.0\n" @@ -1072,7 +1072,7 @@ init_blit_depth_pixels(GLcontext *ctx) * normal path. */ static GLbitfield -blitframebuffer_texture(GLcontext *ctx, +blitframebuffer_texture(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) @@ -1201,7 +1201,7 @@ blitframebuffer_texture(GLcontext *ctx, * of texture mapping and polygon rendering. */ void -_mesa_meta_BlitFramebuffer(GLcontext *ctx, +_mesa_meta_BlitFramebuffer(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) @@ -1362,7 +1362,7 @@ _mesa_meta_BlitFramebuffer(GLcontext *ctx, * Meta implementation of ctx->Driver.Clear() in terms of polygon rendering. */ void -_mesa_meta_Clear(GLcontext *ctx, GLbitfield buffers) +_mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) { struct clear_state *clear = &ctx->Meta->Clear; struct vertex { @@ -1480,7 +1480,7 @@ _mesa_meta_Clear(GLcontext *ctx, GLbitfield buffers) * of texture mapping and polygon rendering. */ void -_mesa_meta_CopyPixels(GLcontext *ctx, GLint srcX, GLint srcY, +_mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY, GLsizei width, GLsizei height, GLint dstX, GLint dstY, GLenum type) { @@ -1594,7 +1594,7 @@ _mesa_meta_CopyPixels(GLcontext *ctx, GLint srcX, GLint srcY, * into tiles which fit into the max texture size. */ static void -tiled_draw_pixels(GLcontext *ctx, +tiled_draw_pixels(struct gl_context *ctx, GLint tileSize, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1630,7 +1630,7 @@ tiled_draw_pixels(GLcontext *ctx, * One-time init for drawing stencil pixels. */ static void -init_draw_stencil_pixels(GLcontext *ctx) +init_draw_stencil_pixels(struct gl_context *ctx) { /* This program is run eight times, once for each stencil bit. * The stencil values to draw are found in an 8-bit alpha texture. @@ -1694,7 +1694,7 @@ init_draw_stencil_pixels(GLcontext *ctx) * One-time init for drawing depth pixels. */ static void -init_draw_depth_pixels(GLcontext *ctx) +init_draw_depth_pixels(struct gl_context *ctx) { static const char *program = "!!ARBfp1.0\n" @@ -1729,7 +1729,7 @@ init_draw_depth_pixels(GLcontext *ctx) * of texture mapping and polygon rendering. */ void -_mesa_meta_DrawPixels(GLcontext *ctx, +_mesa_meta_DrawPixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -1962,7 +1962,7 @@ _mesa_meta_DrawPixels(GLcontext *ctx, * improve performance a lot. */ void -_mesa_meta_Bitmap(GLcontext *ctx, +_mesa_meta_Bitmap(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap1) @@ -2111,7 +2111,7 @@ _mesa_meta_Bitmap(GLcontext *ctx, * \return GL_TRUE if a fallback is needed, GL_FALSE otherwise */ GLboolean -_mesa_meta_check_generate_mipmap_fallback(GLcontext *ctx, GLenum target, +_mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { const GLuint fboSave = ctx->DrawBuffer->Name; @@ -2177,7 +2177,7 @@ _mesa_meta_check_generate_mipmap_fallback(GLcontext *ctx, GLenum target, * Note: texture borders and 3D texture support not yet complete. */ void -_mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target, +_mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { struct gen_mipmap_state *mipmap = &ctx->Meta->Mipmap; @@ -2494,7 +2494,7 @@ _mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target, * ReadPixels() and passed to Tex[Sub]Image(). */ static GLenum -get_temp_image_type(GLcontext *ctx, GLenum baseFormat) +get_temp_image_type(struct gl_context *ctx, GLenum baseFormat) { switch (baseFormat) { case GL_RGBA: @@ -2525,7 +2525,7 @@ get_temp_image_type(GLcontext *ctx, GLenum baseFormat) * Have to be careful with locking and meta state for pixel transfer. */ static void -copy_tex_image(GLcontext *ctx, GLuint dims, GLenum target, GLint level, +copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { @@ -2603,7 +2603,7 @@ copy_tex_image(GLcontext *ctx, GLuint dims, GLenum target, GLint level, void -_mesa_meta_CopyTexImage1D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexImage1D(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border) { @@ -2613,7 +2613,7 @@ _mesa_meta_CopyTexImage1D(GLcontext *ctx, GLenum target, GLint level, void -_mesa_meta_CopyTexImage2D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexImage2D(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { @@ -2628,7 +2628,7 @@ _mesa_meta_CopyTexImage2D(GLcontext *ctx, GLenum target, GLint level, * Have to be careful with locking and meta state for pixel transfer. */ static void -copy_tex_sub_image(GLcontext *ctx, GLuint dims, GLenum target, GLint level, +copy_tex_sub_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) @@ -2699,7 +2699,7 @@ copy_tex_sub_image(GLcontext *ctx, GLuint dims, GLenum target, GLint level, void -_mesa_meta_CopyTexSubImage1D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexSubImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { @@ -2709,7 +2709,7 @@ _mesa_meta_CopyTexSubImage1D(GLcontext *ctx, GLenum target, GLint level, void -_mesa_meta_CopyTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) @@ -2720,7 +2720,7 @@ _mesa_meta_CopyTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, void -_mesa_meta_CopyTexSubImage3D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexSubImage3D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) @@ -2731,7 +2731,7 @@ _mesa_meta_CopyTexSubImage3D(GLcontext *ctx, GLenum target, GLint level, void -_mesa_meta_CopyColorTable(GLcontext *ctx, +_mesa_meta_CopyColorTable(struct gl_context *ctx, GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { @@ -2759,7 +2759,7 @@ _mesa_meta_CopyColorTable(GLcontext *ctx, void -_mesa_meta_CopyColorSubTable(GLcontext *ctx,GLenum target, GLsizei start, +_mesa_meta_CopyColorSubTable(struct gl_context *ctx,GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) { GLfloat *buf; diff --git a/src/mesa/drivers/common/meta.h b/src/mesa/drivers/common/meta.h index 6225b941893..b0797d3d91a 100644 --- a/src/mesa/drivers/common/meta.h +++ b/src/mesa/drivers/common/meta.h @@ -28,89 +28,89 @@ extern void -_mesa_meta_init(GLcontext *ctx); +_mesa_meta_init(struct gl_context *ctx); extern void -_mesa_meta_free(GLcontext *ctx); +_mesa_meta_free(struct gl_context *ctx); extern void -_mesa_meta_BlitFramebuffer(GLcontext *ctx, +_mesa_meta_BlitFramebuffer(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); extern void -_mesa_meta_Clear(GLcontext *ctx, GLbitfield buffers); +_mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers); extern void -_mesa_meta_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy, +_mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type); extern void -_mesa_meta_DrawPixels(GLcontext *ctx, +_mesa_meta_DrawPixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels); extern void -_mesa_meta_Bitmap(GLcontext *ctx, +_mesa_meta_Bitmap(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap); extern GLboolean -_mesa_meta_check_generate_mipmap_fallback(GLcontext *ctx, GLenum target, +_mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj); extern void -_mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target, +_mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj); extern void -_mesa_meta_CopyTexImage1D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexImage1D(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); extern void -_mesa_meta_CopyTexImage2D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexImage2D(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); extern void -_mesa_meta_CopyTexSubImage1D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexSubImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); extern void -_mesa_meta_CopyTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); extern void -_mesa_meta_CopyTexSubImage3D(GLcontext *ctx, GLenum target, GLint level, +_mesa_meta_CopyTexSubImage3D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); extern void -_mesa_meta_CopyColorTable(GLcontext *ctx, +_mesa_meta_CopyColorTable(struct gl_context *ctx, GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); extern void -_mesa_meta_CopyColorSubTable(GLcontext *ctx,GLenum target, GLsizei start, +_mesa_meta_CopyColorSubTable(struct gl_context *ctx,GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); extern void -_mesa_meta_CopyConvolutionFilter1D(GLcontext *ctx, GLenum target, +_mesa_meta_CopyConvolutionFilter1D(struct gl_context *ctx, GLenum target, GLenum internalFormat, GLint x, GLint y, GLsizei width); extern void -_mesa_meta_CopyConvolutionFilter2D(GLcontext *ctx, GLenum target, +_mesa_meta_CopyConvolutionFilter2D(struct gl_context *ctx, GLenum target, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height); diff --git a/src/mesa/drivers/dri/common/depthtmp.h b/src/mesa/drivers/dri/common/depthtmp.h index fd2dab3b422..81bec9c5ffc 100644 --- a/src/mesa/drivers/dri/common/depthtmp.h +++ b/src/mesa/drivers/dri/common/depthtmp.h @@ -21,7 +21,7 @@ #define HAVE_HW_DEPTH_PIXELS 0 #endif -static void TAG(WriteDepthSpan)( GLcontext *ctx, +static void TAG(WriteDepthSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, @@ -72,7 +72,7 @@ static void TAG(WriteDepthSpan)( GLcontext *ctx, #if HAVE_HW_DEPTH_SPANS /* implement MonoWriteDepthSpan() in terms of WriteDepthSpan() */ static void -TAG(WriteMonoDepthSpan)( GLcontext *ctx, struct gl_renderbuffer *rb, +TAG(WriteMonoDepthSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, const GLubyte mask[] ) { @@ -84,7 +84,7 @@ TAG(WriteMonoDepthSpan)( GLcontext *ctx, struct gl_renderbuffer *rb, TAG(WriteDepthSpan)(ctx, rb, n, x, y, depths, mask); } #else -static void TAG(WriteMonoDepthSpan)( GLcontext *ctx, +static void TAG(WriteMonoDepthSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, @@ -124,7 +124,7 @@ static void TAG(WriteMonoDepthSpan)( GLcontext *ctx, #endif -static void TAG(WriteDepthPixels)( GLcontext *ctx, +static void TAG(WriteDepthPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], @@ -173,7 +173,7 @@ static void TAG(WriteDepthPixels)( GLcontext *ctx, /* Read depth spans and pixels */ -static void TAG(ReadDepthSpan)( GLcontext *ctx, +static void TAG(ReadDepthSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values ) @@ -207,7 +207,7 @@ static void TAG(ReadDepthSpan)( GLcontext *ctx, HW_READ_UNLOCK(); } -static void TAG(ReadDepthPixels)( GLcontext *ctx, +static void TAG(ReadDepthPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], diff --git a/src/mesa/drivers/dri/common/dri_metaops.c b/src/mesa/drivers/dri/common/dri_metaops.c index a2f404b616f..e0bc3b88ecd 100644 --- a/src/mesa/drivers/dri/common/dri_metaops.c +++ b/src/mesa/drivers/dri/common/dri_metaops.c @@ -41,7 +41,7 @@ void meta_set_passthrough_transform(struct dri_metaops *meta) { - GLcontext *ctx = meta->ctx; + struct gl_context *ctx = meta->ctx; meta->saved_vp_x = ctx->Viewport.X; meta->saved_vp_y = ctx->Viewport.Y; @@ -87,7 +87,7 @@ meta_restore_transform(struct dri_metaops *meta) void meta_set_passthrough_vertex_program(struct dri_metaops *meta) { - GLcontext *ctx = meta->ctx; + struct gl_context *ctx = meta->ctx; static const char *vp = "!!ARBvp1.0\n" "TEMP vertexClip;\n" @@ -133,7 +133,7 @@ meta_set_passthrough_vertex_program(struct dri_metaops *meta) void meta_restore_vertex_program(struct dri_metaops *meta) { - GLcontext *ctx = meta->ctx; + struct gl_context *ctx = meta->ctx; FLUSH_VERTICES(ctx, _NEW_PROGRAM); _mesa_reference_vertprog(ctx, &ctx->VertexProgram.Current, @@ -155,7 +155,7 @@ meta_set_fragment_program(struct dri_metaops *meta, struct gl_fragment_program **prog, const char *prog_string) { - GLcontext *ctx = meta->ctx; + struct gl_context *ctx = meta->ctx; assert(meta->saved_fp == NULL); _mesa_reference_fragprog(ctx, &meta->saved_fp, @@ -187,7 +187,7 @@ meta_set_fragment_program(struct dri_metaops *meta, void meta_restore_fragment_program(struct dri_metaops *meta) { - GLcontext *ctx = meta->ctx; + struct gl_context *ctx = meta->ctx; FLUSH_VERTICES(ctx, _NEW_PROGRAM); _mesa_reference_fragprog(ctx, &ctx->FragmentProgram.Current, @@ -208,7 +208,7 @@ static const float default_texcoords[4][2] = { { 0.0, 0.0 }, void meta_set_default_texrect(struct dri_metaops *meta) { - GLcontext *ctx = meta->ctx; + struct gl_context *ctx = meta->ctx; struct gl_client_array *old_texcoord_array; meta->saved_active_texture = ctx->Texture.CurrentUnit; @@ -249,7 +249,7 @@ meta_set_default_texrect(struct dri_metaops *meta) void meta_restore_texcoords(struct dri_metaops *meta) { - GLcontext *ctx = meta->ctx; + struct gl_context *ctx = meta->ctx; /* Restore the old TexCoordPointer */ if (meta->saved_texcoord_vbo) { @@ -280,7 +280,7 @@ meta_restore_texcoords(struct dri_metaops *meta) } -void meta_init_metaops(GLcontext *ctx, struct dri_metaops *meta) +void meta_init_metaops(struct gl_context *ctx, struct dri_metaops *meta) { meta->ctx = ctx; } diff --git a/src/mesa/drivers/dri/common/dri_metaops.h b/src/mesa/drivers/dri/common/dri_metaops.h index 2487145326b..aa7d4baa6e9 100644 --- a/src/mesa/drivers/dri/common/dri_metaops.h +++ b/src/mesa/drivers/dri/common/dri_metaops.h @@ -31,7 +31,7 @@ struct dri_metaops { - GLcontext *ctx; + struct gl_context *ctx; GLboolean internal_viewport_call; struct gl_fragment_program *bitmap_fp; struct gl_vertex_program *passthrough_vp; @@ -75,7 +75,7 @@ void meta_set_default_texrect(struct dri_metaops *meta); void meta_restore_texcoords(struct dri_metaops *meta); -void meta_init_metaops(GLcontext *ctx, struct dri_metaops *meta); +void meta_init_metaops(struct gl_context *ctx, struct dri_metaops *meta); void meta_destroy_metaops(struct dri_metaops *meta); #endif diff --git a/src/mesa/drivers/dri/common/drirenderbuffer.c b/src/mesa/drivers/dri/common/drirenderbuffer.c index c9ce6e3cb64..7ac1ab169ef 100644 --- a/src/mesa/drivers/dri/common/drirenderbuffer.c +++ b/src/mesa/drivers/dri/common/drirenderbuffer.c @@ -16,7 +16,7 @@ * be used. */ static GLboolean -driRenderbufferStorage(GLcontext *ctx, struct gl_renderbuffer *rb, +driRenderbufferStorage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { rb->Width = width; @@ -187,7 +187,7 @@ driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped) * gl_framebuffer object. */ void -driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawable *dPriv) +driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv) { struct gl_framebuffer *fb = (struct gl_framebuffer *) dPriv->driverPrivate; if (fb && (dPriv->w != fb->Width || dPriv->h != fb->Height)) { diff --git a/src/mesa/drivers/dri/common/drirenderbuffer.h b/src/mesa/drivers/dri/common/drirenderbuffer.h index 677511334d3..0cae7309df7 100644 --- a/src/mesa/drivers/dri/common/drirenderbuffer.h +++ b/src/mesa/drivers/dri/common/drirenderbuffer.h @@ -73,7 +73,7 @@ driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped); extern void -driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawable *dPriv); +driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv); #endif /* DRIRENDERBUFFER_H */ diff --git a/src/mesa/drivers/dri/common/spantmp.h b/src/mesa/drivers/dri/common/spantmp.h index cdc4f422ceb..f0af5b1c58c 100644 --- a/src/mesa/drivers/dri/common/spantmp.h +++ b/src/mesa/drivers/dri/common/spantmp.h @@ -42,7 +42,7 @@ #endif -static void TAG(WriteRGBASpan)( GLcontext *ctx, +static void TAG(WriteRGBASpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, const GLubyte mask[] ) @@ -85,7 +85,7 @@ static void TAG(WriteRGBASpan)( GLcontext *ctx, HW_WRITE_UNLOCK(); } -static void TAG(WriteRGBSpan)( GLcontext *ctx, +static void TAG(WriteRGBSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, const GLubyte mask[] ) @@ -124,7 +124,7 @@ static void TAG(WriteRGBSpan)( GLcontext *ctx, HW_WRITE_UNLOCK(); } -static void TAG(WriteRGBAPixels)( GLcontext *ctx, +static void TAG(WriteRGBAPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], const void *values, const GLubyte mask[] ) @@ -170,7 +170,7 @@ static void TAG(WriteRGBAPixels)( GLcontext *ctx, } -static void TAG(WriteMonoRGBASpan)( GLcontext *ctx, +static void TAG(WriteMonoRGBASpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, @@ -210,7 +210,7 @@ static void TAG(WriteMonoRGBASpan)( GLcontext *ctx, } -static void TAG(WriteMonoRGBAPixels)( GLcontext *ctx, +static void TAG(WriteMonoRGBAPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -252,7 +252,7 @@ static void TAG(WriteMonoRGBAPixels)( GLcontext *ctx, } -static void TAG(ReadRGBASpan)( GLcontext *ctx, +static void TAG(ReadRGBASpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) @@ -280,7 +280,7 @@ static void TAG(ReadRGBASpan)( GLcontext *ctx, } -static void TAG(ReadRGBAPixels)( GLcontext *ctx, +static void TAG(ReadRGBAPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], void *values ) diff --git a/src/mesa/drivers/dri/common/spantmp2.h b/src/mesa/drivers/dri/common/spantmp2.h index 1dab7336b9b..abd79562f98 100644 --- a/src/mesa/drivers/dri/common/spantmp2.h +++ b/src/mesa/drivers/dri/common/spantmp2.h @@ -460,7 +460,7 @@ #include "x86/common_x86_asm.h" #endif -static void TAG(WriteRGBASpan)( GLcontext *ctx, +static void TAG(WriteRGBASpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, const GLubyte mask[] ) @@ -503,7 +503,7 @@ static void TAG(WriteRGBASpan)( GLcontext *ctx, HW_WRITE_UNLOCK(); } -static void TAG(WriteRGBSpan)( GLcontext *ctx, +static void TAG(WriteRGBSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, const GLubyte mask[] ) @@ -542,7 +542,7 @@ static void TAG(WriteRGBSpan)( GLcontext *ctx, HW_WRITE_UNLOCK(); } -static void TAG(WriteRGBAPixels)( GLcontext *ctx, +static void TAG(WriteRGBAPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], const void *values, const GLubyte mask[] ) @@ -588,7 +588,7 @@ static void TAG(WriteRGBAPixels)( GLcontext *ctx, } -static void TAG(WriteMonoRGBASpan)( GLcontext *ctx, +static void TAG(WriteMonoRGBASpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, const GLubyte mask[] ) @@ -627,7 +627,7 @@ static void TAG(WriteMonoRGBASpan)( GLcontext *ctx, } -static void TAG(WriteMonoRGBAPixels)( GLcontext *ctx, +static void TAG(WriteMonoRGBAPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -669,7 +669,7 @@ static void TAG(WriteMonoRGBAPixels)( GLcontext *ctx, } -static void TAG(ReadRGBASpan)( GLcontext *ctx, +static void TAG(ReadRGBASpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) { @@ -702,7 +702,7 @@ static void TAG(ReadRGBASpan)( GLcontext *ctx, (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_INT_8_8_8_8_REV)) || \ ((SPANTMP_PIXEL_FMT == GL_RGB) && \ (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_SHORT_5_6_5))) -static void TAG2(ReadRGBASpan,_MMX)( GLcontext *ctx, +static void TAG2(ReadRGBASpan,_MMX)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) { @@ -752,7 +752,7 @@ static void TAG2(ReadRGBASpan,_MMX)( GLcontext *ctx, defined(USE_SSE_ASM) && \ (SPANTMP_PIXEL_FMT == GL_BGRA) && \ (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_INT_8_8_8_8_REV) -static void TAG2(ReadRGBASpan,_SSE2)( GLcontext *ctx, +static void TAG2(ReadRGBASpan,_SSE2)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) @@ -787,7 +787,7 @@ static void TAG2(ReadRGBASpan,_SSE2)( GLcontext *ctx, defined(USE_SSE_ASM) && \ (SPANTMP_PIXEL_FMT == GL_BGRA) && \ (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_INT_8_8_8_8_REV) -static void TAG2(ReadRGBASpan,_SSE)( GLcontext *ctx, +static void TAG2(ReadRGBASpan,_SSE)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) @@ -829,7 +829,7 @@ static void TAG2(ReadRGBASpan,_SSE)( GLcontext *ctx, #endif -static void TAG(ReadRGBAPixels)( GLcontext *ctx, +static void TAG(ReadRGBAPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], void *values ) diff --git a/src/mesa/drivers/dri/common/stenciltmp.h b/src/mesa/drivers/dri/common/stenciltmp.h index 2b10b9ecfe7..fef09720895 100644 --- a/src/mesa/drivers/dri/common/stenciltmp.h +++ b/src/mesa/drivers/dri/common/stenciltmp.h @@ -13,7 +13,7 @@ #define HAVE_HW_STENCIL_PIXELS 0 #endif -static void TAG(WriteStencilSpan)( GLcontext *ctx, +static void TAG(WriteStencilSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, const GLubyte mask[] ) @@ -64,7 +64,7 @@ static void TAG(WriteStencilSpan)( GLcontext *ctx, #if HAVE_HW_STENCIL_SPANS /* implement MonoWriteDepthSpan() in terms of WriteDepthSpan() */ static void -TAG(WriteMonoStencilSpan)( GLcontext *ctx, struct gl_renderbuffer *rb, +TAG(WriteMonoStencilSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, const GLubyte mask[] ) { @@ -76,7 +76,7 @@ TAG(WriteMonoStencilSpan)( GLcontext *ctx, struct gl_renderbuffer *rb, TAG(WriteStencilSpan)(ctx, rb, n, x, y, stens, mask); } #else /* HAVE_HW_STENCIL_SPANS */ -static void TAG(WriteMonoStencilSpan)( GLcontext *ctx, +static void TAG(WriteMonoStencilSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, @@ -118,7 +118,7 @@ static void TAG(WriteMonoStencilSpan)( GLcontext *ctx, #endif /* !HAVE_HW_STENCIL_SPANS */ -static void TAG(WriteStencilPixels)( GLcontext *ctx, +static void TAG(WriteStencilPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -157,7 +157,7 @@ static void TAG(WriteStencilPixels)( GLcontext *ctx, /* Read stencil spans and pixels */ -static void TAG(ReadStencilSpan)( GLcontext *ctx, +static void TAG(ReadStencilSpan)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) @@ -190,7 +190,7 @@ static void TAG(ReadStencilSpan)( GLcontext *ctx, HW_READ_UNLOCK(); } -static void TAG(ReadStencilPixels)( GLcontext *ctx, +static void TAG(ReadStencilPixels)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], void *values ) diff --git a/src/mesa/drivers/dri/common/texmem.c b/src/mesa/drivers/dri/common/texmem.c index 895139b55b8..8eec07d5bcc 100644 --- a/src/mesa/drivers/dri/common/texmem.c +++ b/src/mesa/drivers/dri/common/texmem.c @@ -89,7 +89,7 @@ driLog2( GLuint n ) */ GLboolean -driIsTextureResident( GLcontext * ctx, +driIsTextureResident( struct gl_context * ctx, struct gl_texture_object * texObj ) { driTextureObject * t; @@ -1047,7 +1047,7 @@ driCalculateMaxTextureLevels( driTexHeap * const * heaps, * \param targets Bit-mask of value texture targets */ -void driInitTextureObjects( GLcontext *ctx, driTextureObject * swapped, +void driInitTextureObjects( struct gl_context *ctx, driTextureObject * swapped, GLuint targets ) { struct gl_texture_object *texObj; diff --git a/src/mesa/drivers/dri/common/texmem.h b/src/mesa/drivers/dri/common/texmem.h index 725ba2e1196..6dd07b8a1da 100644 --- a/src/mesa/drivers/dri/common/texmem.h +++ b/src/mesa/drivers/dri/common/texmem.h @@ -277,7 +277,7 @@ void driDestroyTextureObject( driTextureObject * t ); int driAllocateTexture( driTexHeap * const * heap_array, unsigned nr_heaps, driTextureObject * t ); -GLboolean driIsTextureResident( GLcontext * ctx, +GLboolean driIsTextureResident( struct gl_context * ctx, struct gl_texture_object * texObj ); driTexHeap * driCreateTextureHeap( unsigned heap_id, void * context, @@ -309,7 +309,7 @@ driSetTextureSwapCounterLocation( driTexHeap * heap, unsigned * counter ); #define DRI_TEXMGR_DO_TEXTURE_CUBE 0x0008 #define DRI_TEXMGR_DO_TEXTURE_RECT 0x0010 -void driInitTextureObjects( GLcontext *ctx, driTextureObject * swapped, +void driInitTextureObjects( struct gl_context *ctx, driTextureObject * swapped, GLuint targets ); GLboolean driValidateTextureHeaps( driTexHeap * const * texture_heaps, diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index bb7f07d8f41..c195c4fd8f5 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -198,7 +198,7 @@ static const struct dri_extension all_mesa_extensions[] = { * we need to add entry-points (via \c driInitSingleExtension) for those * new functions here. */ -void driInitExtensions( GLcontext * ctx, +void driInitExtensions( struct gl_context * ctx, const struct dri_extension * extensions_to_enable, GLboolean enable_imaging ) { @@ -239,7 +239,7 @@ void driInitExtensions( GLcontext * ctx, * * \sa driInitExtensions, _mesa_enable_extension, _mesa_map_function_array */ -void driInitSingleExtension( GLcontext * ctx, +void driInitSingleExtension( struct gl_context * ctx, const struct dri_extension * ext ) { if ( ext->functions != NULL ) { diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h index 40344a1874b..6349fb4b95c 100644 --- a/src/mesa/drivers/dri/common/utils.h +++ b/src/mesa/drivers/dri/common/utils.h @@ -78,10 +78,10 @@ extern unsigned driParseDebugString( const char * debug, extern unsigned driGetRendererString( char * buffer, const char * hardware_name, const char * driver_date, GLuint agp_mode ); -extern void driInitExtensions( GLcontext * ctx, +extern void driInitExtensions( struct gl_context * ctx, const struct dri_extension * card_extensions, GLboolean enable_imaging ); -extern void driInitSingleExtension( GLcontext * ctx, +extern void driInitSingleExtension( struct gl_context * ctx, const struct dri_extension * ext ); extern GLboolean driCheckDriDdxDrmVersions2(const char * driver_name, diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index 35a4898aac6..dc58e91e8c1 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -69,7 +69,7 @@ const GLuint __driNConfigOptions = 0; #define DRIVER_DATE "20050821" -static const GLubyte *i810GetString( GLcontext *ctx, GLenum name ) +static const GLubyte *i810GetString( struct gl_context *ctx, GLenum name ) { static char buffer[128]; @@ -170,7 +170,7 @@ i810CreateContext( gl_api api, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; i810ContextPtr imesa; __DRIscreen *sPriv = driContextPriv->driScreenPriv; i810ScreenPrivate *i810Screen = (i810ScreenPrivate *)sPriv->private; @@ -268,7 +268,7 @@ i810CreateContext( gl_api api, ctx->Const.PointSizeGranularity = 1.0; /* reinitialize the context point state. - * It depend on constants in __GLcontextRec::Const + * It depend on constants in __struct gl_contextRec::Const */ _mesa_init_point(ctx); @@ -470,7 +470,7 @@ i810MakeCurrent(__DRIcontext *driContextPriv, static void i810UpdatePageFlipping( i810ContextPtr imesa ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; int front = 0; /* Determine current color drawing buffer */ @@ -552,7 +552,7 @@ i810SwapBuffers( __DRIdrawable *dPriv ) { if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { i810ContextPtr imesa; - GLcontext *ctx; + struct gl_context *ctx; imesa = (i810ContextPtr) dPriv->driContextPriv->driverPrivate; ctx = imesa->glCtx; if (ctx->Visual.doubleBufferMode) { diff --git a/src/mesa/drivers/dri/i810/i810context.h b/src/mesa/drivers/dri/i810/i810context.h index 2a09cf88f59..93c7eda7b38 100644 --- a/src/mesa/drivers/dri/i810/i810context.h +++ b/src/mesa/drivers/dri/i810/i810context.h @@ -79,7 +79,7 @@ typedef void (*i810_point_func)( i810ContextPtr, i810Vertex * ); struct i810_context_t { GLint refcount; - GLcontext *glCtx; + struct gl_context *glCtx; /* Texture object bookkeeping */ diff --git a/src/mesa/drivers/dri/i810/i810ioctl.c b/src/mesa/drivers/dri/i810/i810ioctl.c index c631543d933..4b004d54c65 100644 --- a/src/mesa/drivers/dri/i810/i810ioctl.c +++ b/src/mesa/drivers/dri/i810/i810ioctl.c @@ -47,7 +47,7 @@ static drmBufPtr i810_get_buffer_ioctl( i810ContextPtr imesa ) #define DEPTH_SCALE ((1<<16)-1) -static void i810Clear( GLcontext *ctx, GLbitfield mask ) +static void i810Clear( struct gl_context *ctx, GLbitfield mask ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); __DRIdrawable *dPriv = imesa->driDrawable; @@ -499,13 +499,13 @@ int i810_check_copy(int fd) return(drmCommandNone(fd, DRM_I810_DOCOPY)); } -static void i810Flush( GLcontext *ctx ) +static void i810Flush( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); I810_FIREVERTICES( imesa ); } -static void i810Finish( GLcontext *ctx ) +static void i810Finish( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); i810DmaFinish( imesa ); diff --git a/src/mesa/drivers/dri/i810/i810render.c b/src/mesa/drivers/dri/i810/i810render.c index 205f0cebc1c..45f0954bbe2 100644 --- a/src/mesa/drivers/dri/i810/i810render.c +++ b/src/mesa/drivers/dri/i810/i810render.c @@ -124,7 +124,7 @@ static const GLenum reduced_prim[GL_POLYGON+1] = { /**********************************************************************/ -static GLboolean i810_run_render( GLcontext *ctx, +static GLboolean i810_run_render( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { i810ContextPtr imesa = I810_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/i810/i810span.c b/src/mesa/drivers/dri/i810/i810span.c index b4cae4e4e04..dddab8bb51e 100644 --- a/src/mesa/drivers/dri/i810/i810span.c +++ b/src/mesa/drivers/dri/i810/i810span.c @@ -81,7 +81,7 @@ do { \ /* Move locking out to get reasonable span performance. */ -void i810SpanRenderStart( GLcontext *ctx ) +void i810SpanRenderStart( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT(ctx); I810_FIREVERTICES(imesa); @@ -89,14 +89,14 @@ void i810SpanRenderStart( GLcontext *ctx ) i810RegetLockQuiescent( imesa ); } -void i810SpanRenderFinish( GLcontext *ctx ) +void i810SpanRenderFinish( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); _swrast_flush( ctx ); UNLOCK_HARDWARE( imesa ); } -void i810InitSpanFuncs( GLcontext *ctx ) +void i810InitSpanFuncs( struct gl_context *ctx ) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = i810SpanRenderStart; diff --git a/src/mesa/drivers/dri/i810/i810span.h b/src/mesa/drivers/dri/i810/i810span.h index c01a2f94ae7..184a37a103b 100644 --- a/src/mesa/drivers/dri/i810/i810span.h +++ b/src/mesa/drivers/dri/i810/i810span.h @@ -3,10 +3,10 @@ #include "drirenderbuffer.h" -extern void i810InitSpanFuncs( GLcontext *ctx ); +extern void i810InitSpanFuncs( struct gl_context *ctx ); -extern void i810SpanRenderFinish( GLcontext *ctx ); -extern void i810SpanRenderStart( GLcontext *ctx ); +extern void i810SpanRenderFinish( struct gl_context *ctx ); +extern void i810SpanRenderStart( struct gl_context *ctx ); extern void i810SetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); diff --git a/src/mesa/drivers/dri/i810/i810state.c b/src/mesa/drivers/dri/i810/i810state.c index 0c68e120b02..7c3fbb1424d 100644 --- a/src/mesa/drivers/dri/i810/i810state.c +++ b/src/mesa/drivers/dri/i810/i810state.c @@ -43,7 +43,7 @@ static INLINE GLuint i810PackColor(GLuint format, } -static void i810AlphaFunc(GLcontext *ctx, GLenum func, GLfloat ref) +static void i810AlphaFunc(struct gl_context *ctx, GLenum func, GLfloat ref) { i810ContextPtr imesa = I810_CONTEXT(ctx); GLuint a = (ZA_UPDATE_ALPHAFUNC|ZA_UPDATE_ALPHAREF); @@ -70,7 +70,7 @@ static void i810AlphaFunc(GLcontext *ctx, GLenum func, GLfloat ref) imesa->Setup[I810_CTXREG_ZA] |= a; } -static void i810BlendEquationSeparate(GLcontext *ctx, +static void i810BlendEquationSeparate(struct gl_context *ctx, GLenum modeRGB, GLenum modeA) { assert( modeRGB == modeA ); @@ -87,7 +87,7 @@ static void i810BlendEquationSeparate(GLcontext *ctx, ctx->Color.LogicOp != GL_COPY)); } -static void i810BlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, +static void i810BlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -156,7 +156,7 @@ static void i810BlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, -static void i810DepthFunc(GLcontext *ctx, GLenum func) +static void i810DepthFunc(struct gl_context *ctx, GLenum func) { i810ContextPtr imesa = I810_CONTEXT(ctx); int zmode; @@ -178,7 +178,7 @@ static void i810DepthFunc(GLcontext *ctx, GLenum func) imesa->Setup[I810_CTXREG_LCS] |= zmode; } -static void i810DepthMask(GLcontext *ctx, GLboolean flag) +static void i810DepthMask(struct gl_context *ctx, GLboolean flag) { i810ContextPtr imesa = I810_CONTEXT(ctx); I810_STATECHANGE(imesa, I810_UPLOAD_CTX); @@ -196,7 +196,7 @@ static void i810DepthMask(GLcontext *ctx, GLboolean flag) * The i810 supports a 4x4 stipple natively, GL wants 32x32. * Fortunately stipple is usually a repeating pattern. */ -static void i810PolygonStipple( GLcontext *ctx, const GLubyte *mask ) +static void i810PolygonStipple( struct gl_context *ctx, const GLubyte *mask ) { i810ContextPtr imesa = I810_CONTEXT(ctx); const GLubyte *m = mask; @@ -250,7 +250,7 @@ static void i810PolygonStipple( GLcontext *ctx, const GLubyte *mask ) */ -static void i810Scissor( GLcontext *ctx, GLint x, GLint y, +static void i810Scissor( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -267,7 +267,7 @@ static void i810Scissor( GLcontext *ctx, GLint x, GLint y, } -static void i810LogicOp( GLcontext *ctx, GLenum opcode ) +static void i810LogicOp( struct gl_context *ctx, GLenum opcode ) { i810ContextPtr imesa = I810_CONTEXT(ctx); FALLBACK( imesa, I810_FALLBACK_LOGICOP, @@ -276,14 +276,14 @@ static void i810LogicOp( GLcontext *ctx, GLenum opcode ) /* Fallback to swrast for select and feedback. */ -static void i810RenderMode( GLcontext *ctx, GLenum mode ) +static void i810RenderMode( struct gl_context *ctx, GLenum mode ) { i810ContextPtr imesa = I810_CONTEXT(ctx); FALLBACK( imesa, I810_FALLBACK_RENDERMODE, (mode != GL_RENDER) ); } -void i810DrawBuffer(GLcontext *ctx, GLenum mode ) +void i810DrawBuffer(struct gl_context *ctx, GLenum mode ) { i810ContextPtr imesa = I810_CONTEXT(ctx); int front = 0; @@ -328,13 +328,13 @@ void i810DrawBuffer(GLcontext *ctx, GLenum mode ) } -static void i810ReadBuffer(GLcontext *ctx, GLenum mode ) +static void i810ReadBuffer(struct gl_context *ctx, GLenum mode ) { /* XXX anything? */ } -static void i810ClearColor(GLcontext *ctx, const GLfloat color[4] ) +static void i810ClearColor(struct gl_context *ctx, const GLfloat color[4] ) { i810ContextPtr imesa = I810_CONTEXT(ctx); GLubyte c[4]; @@ -351,7 +351,7 @@ static void i810ClearColor(GLcontext *ctx, const GLfloat color[4] ) * Culling - the i810 isn't quite as clean here as the rest of * its interfaces, but it's not bad. */ -static void i810CullFaceFrontFace(GLcontext *ctx, GLenum unused) +static void i810CullFaceFrontFace(struct gl_context *ctx, GLenum unused) { i810ContextPtr imesa = I810_CONTEXT(ctx); GLuint mode = LCS_CULL_BOTH; @@ -375,7 +375,7 @@ static void i810CullFaceFrontFace(GLcontext *ctx, GLenum unused) } -static void i810LineWidth( GLcontext *ctx, GLfloat widthf ) +static void i810LineWidth( struct gl_context *ctx, GLfloat widthf ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); /* AA, non-AA limits are same */ @@ -394,7 +394,7 @@ static void i810LineWidth( GLcontext *ctx, GLfloat widthf ) } } -static void i810PointSize( GLcontext *ctx, GLfloat sz ) +static void i810PointSize( struct gl_context *ctx, GLfloat sz ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); /* AA, non-AA limits are same */ @@ -417,7 +417,7 @@ static void i810PointSize( GLcontext *ctx, GLfloat sz ) * Color masks */ -static void i810ColorMask(GLcontext *ctx, +static void i810ColorMask(struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -444,7 +444,7 @@ static void i810ColorMask(GLcontext *ctx, /* Seperate specular not fully implemented on the i810. */ -static void i810LightModelfv(GLcontext *ctx, GLenum pname, +static void i810LightModelfv(struct gl_context *ctx, GLenum pname, const GLfloat *param) { if (pname == GL_LIGHT_MODEL_COLOR_CONTROL) @@ -458,7 +458,7 @@ static void i810LightModelfv(GLcontext *ctx, GLenum pname, /* But the 815 has it... */ -static void i810LightModelfv_i815(GLcontext *ctx, GLenum pname, +static void i810LightModelfv_i815(struct gl_context *ctx, GLenum pname, const GLfloat *param) { if (pname == GL_LIGHT_MODEL_COLOR_CONTROL) @@ -475,7 +475,7 @@ static void i810LightModelfv_i815(GLcontext *ctx, GLenum pname, /* In Mesa 3.5 we can reliably do native flatshading. */ -static void i810ShadeModel(GLcontext *ctx, GLenum mode) +static void i810ShadeModel(struct gl_context *ctx, GLenum mode) { i810ContextPtr imesa = I810_CONTEXT(ctx); I810_STATECHANGE(imesa, I810_UPLOAD_CTX); @@ -490,7 +490,7 @@ static void i810ShadeModel(GLcontext *ctx, GLenum mode) /* ============================================================= * Fog */ -static void i810Fogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) +static void i810Fogfv(struct gl_context *ctx, GLenum pname, const GLfloat *param) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -508,7 +508,7 @@ static void i810Fogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) /* ============================================================= */ -static void i810Enable(GLcontext *ctx, GLenum cap, GLboolean state) +static void i810Enable(struct gl_context *ctx, GLenum cap, GLboolean state) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -672,7 +672,7 @@ void i810EmitDrawingRectangle( i810ContextPtr imesa ) -static void i810CalcViewport( GLcontext *ctx ) +static void i810CalcViewport( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -689,14 +689,14 @@ static void i810CalcViewport( GLcontext *ctx ) m[MAT_TZ] = v[MAT_TZ] * (1.0 / 0xffff); } -static void i810Viewport( GLcontext *ctx, +static void i810Viewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { i810CalcViewport( ctx ); } -static void i810DepthRange( GLcontext *ctx, +static void i810DepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { i810CalcViewport( ctx ); @@ -718,7 +718,7 @@ void i810PrintDirty( const char *msg, GLuint state ) -void i810InitState( GLcontext *ctx ) +void i810InitState( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT(ctx); i810ScreenPrivate *i810Screen = imesa->i810Screen; @@ -953,7 +953,7 @@ void i810InitState( GLcontext *ctx ) } -static void i810InvalidateState( GLcontext *ctx, GLuint new_state ) +static void i810InvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -963,7 +963,7 @@ static void i810InvalidateState( GLcontext *ctx, GLuint new_state ) } -void i810InitStateFuncs(GLcontext *ctx) +void i810InitStateFuncs(struct gl_context *ctx) { /* Callbacks for internal Mesa events. */ diff --git a/src/mesa/drivers/dri/i810/i810state.h b/src/mesa/drivers/dri/i810/i810state.h index 118b075491b..96af1237651 100644 --- a/src/mesa/drivers/dri/i810/i810state.h +++ b/src/mesa/drivers/dri/i810/i810state.h @@ -3,10 +3,10 @@ #include "i810context.h" -extern void i810InitState( GLcontext *ctx ); -extern void i810InitStateFuncs( GLcontext *ctx ); +extern void i810InitState( struct gl_context *ctx ); +extern void i810InitStateFuncs( struct gl_context *ctx ); extern void i810PrintDirty( const char *msg, GLuint state ); -extern void i810DrawBuffer(GLcontext *ctx, GLenum mode ); +extern void i810DrawBuffer(struct gl_context *ctx, GLenum mode ); extern void i810Fallback( i810ContextPtr imesa, GLuint bit, GLboolean mode ); #define FALLBACK( imesa, bit, mode ) i810Fallback( imesa, bit, mode ) diff --git a/src/mesa/drivers/dri/i810/i810tex.c b/src/mesa/drivers/dri/i810/i810tex.c index 5c5c80d16d3..49364aeb225 100644 --- a/src/mesa/drivers/dri/i810/i810tex.c +++ b/src/mesa/drivers/dri/i810/i810tex.c @@ -166,7 +166,7 @@ i810SetTexBorderColor( i810TextureObjectPtr t, const GLfloat color[4] ) static i810TextureObjectPtr -i810AllocTexObj( GLcontext *ctx, struct gl_texture_object *texObj ) +i810AllocTexObj( struct gl_context *ctx, struct gl_texture_object *texObj ) { i810TextureObjectPtr t; i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -214,7 +214,7 @@ i810AllocTexObj( GLcontext *ctx, struct gl_texture_object *texObj ) } -static void i810TexParameter( GLcontext *ctx, GLenum target, +static void i810TexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat *params ) { @@ -285,7 +285,7 @@ static void i810TexParameter( GLcontext *ctx, GLenum target, * Determine whether or not \c param can be used instead of * \c texUnit->EnvColor in the \c GL_TEXTURE_ENV_COLOR case. */ -static void i810TexEnv( GLcontext *ctx, GLenum target, +static void i810TexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); @@ -333,7 +333,7 @@ static void i810TexEnv( GLcontext *ctx, GLenum target, #if 0 -static void i810TexImage1D( GLcontext *ctx, GLenum target, GLint level, +static void i810TexImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, @@ -348,7 +348,7 @@ static void i810TexImage1D( GLcontext *ctx, GLenum target, GLint level, } } -static void i810TexSubImage1D( GLcontext *ctx, +static void i810TexSubImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -363,7 +363,7 @@ static void i810TexSubImage1D( GLcontext *ctx, #endif -static void i810TexImage2D( GLcontext *ctx, GLenum target, GLint level, +static void i810TexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -388,7 +388,7 @@ static void i810TexImage2D( GLcontext *ctx, GLenum target, GLint level, pixels, packing, texObj, texImage ); } -static void i810TexSubImage2D( GLcontext *ctx, +static void i810TexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -410,14 +410,14 @@ static void i810TexSubImage2D( GLcontext *ctx, } -static void i810BindTexture( GLcontext *ctx, GLenum target, +static void i810BindTexture( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj ) { assert( (target != GL_TEXTURE_2D) || (tObj->DriverData != NULL) ); } -static void i810DeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj ) +static void i810DeleteTexture( struct gl_context *ctx, struct gl_texture_object *tObj ) { driTextureObject * t = (driTextureObject *) tObj->DriverData; if (t) { @@ -437,7 +437,7 @@ static void i810DeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj ) * makes this routine pretty simple. */ static gl_format -i810ChooseTextureFormat( GLcontext *ctx, GLint internalFormat, +i810ChooseTextureFormat( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { switch ( internalFormat ) { @@ -524,7 +524,7 @@ i810ChooseTextureFormat( GLcontext *ctx, GLint internalFormat, * texture object from the core mesa gl_texture_object. Not done at this time. */ static struct gl_texture_object * -i810NewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +i810NewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; obj = _mesa_new_texture_object(ctx, name, target); diff --git a/src/mesa/drivers/dri/i810/i810tex.h b/src/mesa/drivers/dri/i810/i810tex.h index 28958dcb4b2..b396848b79f 100644 --- a/src/mesa/drivers/dri/i810/i810tex.h +++ b/src/mesa/drivers/dri/i810/i810tex.h @@ -68,7 +68,7 @@ struct i810_texture_object_t { }; -void i810UpdateTextureState( GLcontext *ctx ); +void i810UpdateTextureState( struct gl_context *ctx ); void i810InitTextureFuncs( struct dd_function_table *functions ); void i810DestroyTexObj( i810ContextPtr imesa, i810TextureObjectPtr t ); diff --git a/src/mesa/drivers/dri/i810/i810texstate.c b/src/mesa/drivers/dri/i810/i810texstate.c index bff28c11c89..5b505e71a48 100644 --- a/src/mesa/drivers/dri/i810/i810texstate.c +++ b/src/mesa/drivers/dri/i810/i810texstate.c @@ -191,7 +191,7 @@ static const unsigned operand_modifiers[] = { * a reasonable place to make note of it. */ static GLboolean -i810UpdateTexEnvCombine( GLcontext *ctx, GLuint unit, +i810UpdateTexEnvCombine( struct gl_context *ctx, GLuint unit, int * color_stage, int * alpha_stage ) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -533,7 +533,7 @@ i810UpdateTexEnvCombine( GLcontext *ctx, GLuint unit, return GL_TRUE; } -static GLboolean enable_tex_common( GLcontext *ctx, GLuint unit ) +static GLboolean enable_tex_common( struct gl_context *ctx, GLuint unit ) { i810ContextPtr imesa = I810_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -570,7 +570,7 @@ static GLboolean enable_tex_common( GLcontext *ctx, GLuint unit ) return GL_TRUE; } -static GLboolean enable_tex_rect( GLcontext *ctx, GLuint unit ) +static GLboolean enable_tex_rect( struct gl_context *ctx, GLuint unit ) { i810ContextPtr imesa = I810_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -590,7 +590,7 @@ static GLboolean enable_tex_rect( GLcontext *ctx, GLuint unit ) return GL_TRUE; } -static GLboolean enable_tex_2d( GLcontext *ctx, GLuint unit ) +static GLboolean enable_tex_2d( struct gl_context *ctx, GLuint unit ) { i810ContextPtr imesa = I810_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -610,7 +610,7 @@ static GLboolean enable_tex_2d( GLcontext *ctx, GLuint unit ) return GL_TRUE; } -static void disable_tex( GLcontext *ctx, GLuint unit ) +static void disable_tex( struct gl_context *ctx, GLuint unit ) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -627,7 +627,7 @@ static void disable_tex( GLcontext *ctx, GLuint unit ) * 1D textures should be supported! Just use a 2D texture with the second * texture coordinate value fixed at 0.0. */ -static void i810UpdateTexUnit( GLcontext *ctx, GLuint unit, +static void i810UpdateTexUnit( struct gl_context *ctx, GLuint unit, int * next_color_stage, int * next_alpha_stage ) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -664,7 +664,7 @@ static void i810UpdateTexUnit( GLcontext *ctx, GLuint unit, } -void i810UpdateTextureState( GLcontext *ctx ) +void i810UpdateTextureState( struct gl_context *ctx ) { static const unsigned color_pass[3] = { GFX_OP_MAP_COLOR_STAGES | MC_STAGE_0 | MC_UPDATE_DEST | MC_DEST_CURRENT diff --git a/src/mesa/drivers/dri/i810/i810tris.c b/src/mesa/drivers/dri/i810/i810tris.c index 1492f711c93..ec22a3deb36 100644 --- a/src/mesa/drivers/dri/i810/i810tris.c +++ b/src/mesa/drivers/dri/i810/i810tris.c @@ -49,7 +49,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "i810vb.h" #include "i810ioctl.h" -static void i810RenderPrimitive( GLcontext *ctx, GLenum prim ); +static void i810RenderPrimitive( struct gl_context *ctx, GLenum prim ); /*********************************************************************** * Emit primitives as inline vertices * @@ -407,7 +407,7 @@ i810_fallback_tri( i810ContextPtr imesa, i810Vertex *v1, i810Vertex *v2 ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; SWvertex v[3]; i810_translate_vertex( ctx, v0, &v[0] ); i810_translate_vertex( ctx, v1, &v[1] ); @@ -421,7 +421,7 @@ i810_fallback_line( i810ContextPtr imesa, i810Vertex *v0, i810Vertex *v1 ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; SWvertex v[2]; i810_translate_vertex( ctx, v0, &v[0] ); i810_translate_vertex( ctx, v1, &v[1] ); @@ -433,7 +433,7 @@ static void i810_fallback_point( i810ContextPtr imesa, i810Vertex *v0 ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; SWvertex v[1]; i810_translate_vertex( ctx, v0, &v[0] ); _swrast_Point( ctx, &v[0] ); @@ -478,7 +478,7 @@ i810_fallback_point( i810ContextPtr imesa, -static void i810RenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void i810RenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -502,13 +502,13 @@ static void i810RenderClippedPoly( GLcontext *ctx, const GLuint *elts, tnl->Driver.Render.PrimitiveNotify( ctx, prim ); } -static void i810RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +static void i810RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); } -static void i810FastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void i810FastRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); @@ -549,7 +549,7 @@ static void i810FastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, DD_TRI_STIPPLE) #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED) -static void i810ChooseRenderState(GLcontext *ctx) +static void i810ChooseRenderState(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -640,7 +640,7 @@ static const GLenum reduced_prim[GL_POLYGON+1] = { * which renders strips as strips, the equivalent calculations are * performed in i810render.c. */ -static void i810RenderPrimitive( GLcontext *ctx, GLenum prim ) +static void i810RenderPrimitive( struct gl_context *ctx, GLenum prim ) { i810ContextPtr imesa = I810_CONTEXT(ctx); GLuint rprim = reduced_prim[prim]; @@ -656,7 +656,7 @@ static void i810RenderPrimitive( GLcontext *ctx, GLenum prim ) } } -static void i810RunPipeline( GLcontext *ctx ) +static void i810RunPipeline( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT(ctx); @@ -678,7 +678,7 @@ static void i810RunPipeline( GLcontext *ctx ) _tnl_run_pipeline( ctx ); } -static void i810RenderStart( GLcontext *ctx ) +static void i810RenderStart( struct gl_context *ctx ) { /* Check for projective textureing. Make sure all texcoord * pointers point to something. (fix in mesa?) @@ -686,7 +686,7 @@ static void i810RenderStart( GLcontext *ctx ) i810CheckTexSizes( ctx ); } -static void i810RenderFinish( GLcontext *ctx ) +static void i810RenderFinish( struct gl_context *ctx ) { if (I810_CONTEXT(ctx)->RenderIndex & I810_FALLBACK_BIT) _swrast_flush( ctx ); @@ -698,7 +698,7 @@ static void i810RenderFinish( GLcontext *ctx ) /* System to flush dma and emit state changes based on the rasterized * primitive. */ -void i810RasterPrimitive( GLcontext *ctx, +void i810RasterPrimitive( struct gl_context *ctx, GLenum rprim, GLuint hwprim ) { @@ -815,7 +815,7 @@ static char *getFallbackString(GLuint bit) void i810Fallback( i810ContextPtr imesa, GLuint bit, GLboolean mode ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint oldfallback = imesa->Fallback; @@ -853,7 +853,7 @@ void i810Fallback( i810ContextPtr imesa, GLuint bit, GLboolean mode ) /**********************************************************************/ -void i810InitTriFuncs( GLcontext *ctx ) +void i810InitTriFuncs( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); static int firsttime = 1; diff --git a/src/mesa/drivers/dri/i810/i810tris.h b/src/mesa/drivers/dri/i810/i810tris.h index ab026be0a51..07a0ebf69f3 100644 --- a/src/mesa/drivers/dri/i810/i810tris.h +++ b/src/mesa/drivers/dri/i810/i810tris.h @@ -29,7 +29,7 @@ #include "main/mtypes.h" extern void i810PrintRenderState( const char *msg, GLuint state ); -extern void i810InitTriFuncs( GLcontext *ctx ); -extern void i810RasterPrimitive( GLcontext *ctx, GLenum rprim, GLuint hwprim ); +extern void i810InitTriFuncs( struct gl_context *ctx ); +extern void i810RasterPrimitive( struct gl_context *ctx, GLenum rprim, GLuint hwprim ); #endif diff --git a/src/mesa/drivers/dri/i810/i810vb.c b/src/mesa/drivers/dri/i810/i810vb.c index 70301a2d2ec..333e07c0eaa 100644 --- a/src/mesa/drivers/dri/i810/i810vb.c +++ b/src/mesa/drivers/dri/i810/i810vb.c @@ -51,10 +51,10 @@ #define I810_MAX_SETUP 0x80 static struct { - void (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint ); + void (*emit)( struct gl_context *, GLuint, GLuint, void *, GLuint ); tnl_interp_func interp; tnl_copy_pv_func copy_pv; - GLboolean (*check_tex_sizes)( GLcontext *ctx ); + GLboolean (*check_tex_sizes)( struct gl_context *ctx ); GLuint vertex_size; GLuint vertex_format; } setup_tab[I810_MAX_SETUP]; @@ -335,7 +335,7 @@ static void i810PrintSetupFlags(const char *msg, GLuint flags ) -void i810CheckTexSizes( GLcontext *ctx ) +void i810CheckTexSizes( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); i810ContextPtr imesa = I810_CONTEXT( ctx ); @@ -357,7 +357,7 @@ void i810CheckTexSizes( GLcontext *ctx ) } } -void i810BuildVertices( GLcontext *ctx, +void i810BuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ) @@ -405,7 +405,7 @@ void i810BuildVertices( GLcontext *ctx, } } -void i810ChooseVertexState( GLcontext *ctx ) +void i810ChooseVertexState( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); i810ContextPtr imesa = I810_CONTEXT( ctx ); @@ -446,7 +446,7 @@ void i810ChooseVertexState( GLcontext *ctx ) -void *i810_emit_contiguous_verts( GLcontext *ctx, +void *i810_emit_contiguous_verts( struct gl_context *ctx, GLuint start, GLuint count, void *dest ) @@ -459,7 +459,7 @@ void *i810_emit_contiguous_verts( GLcontext *ctx, -void i810InitVB( GLcontext *ctx ) +void i810InitVB( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT(ctx); GLuint size = TNL_CONTEXT(ctx)->vb.Size; @@ -476,7 +476,7 @@ void i810InitVB( GLcontext *ctx ) } -void i810FreeVB( GLcontext *ctx ) +void i810FreeVB( struct gl_context *ctx ) { i810ContextPtr imesa = I810_CONTEXT(ctx); if (imesa->verts) { diff --git a/src/mesa/drivers/dri/i810/i810vb.h b/src/mesa/drivers/dri/i810/i810vb.h index 1f704e45695..e321518507e 100644 --- a/src/mesa/drivers/dri/i810/i810vb.h +++ b/src/mesa/drivers/dri/i810/i810vb.h @@ -36,24 +36,24 @@ _NEW_FOG) -extern void i810ChooseVertexState( GLcontext *ctx ); -extern void i810CheckTexSizes( GLcontext *ctx ); -extern void i810BuildVertices( GLcontext *ctx, +extern void i810ChooseVertexState( struct gl_context *ctx ); +extern void i810CheckTexSizes( struct gl_context *ctx ); +extern void i810BuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ); -extern void *i810_emit_contiguous_verts( GLcontext *ctx, +extern void *i810_emit_contiguous_verts( struct gl_context *ctx, GLuint start, GLuint count, void *dest ); -extern void i810_translate_vertex( GLcontext *ctx, +extern void i810_translate_vertex( struct gl_context *ctx, const i810Vertex *src, SWvertex *dst ); -extern void i810InitVB( GLcontext *ctx ); -extern void i810FreeVB( GLcontext *ctx ); +extern void i810InitVB( struct gl_context *ctx ); +extern void i810FreeVB( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/i915/i830_context.c b/src/mesa/drivers/dri/i915/i830_context.c index 7783de964f8..abfb32be3ae 100644 --- a/src/mesa/drivers/dri/i915/i830_context.c +++ b/src/mesa/drivers/dri/i915/i830_context.c @@ -55,7 +55,7 @@ i830CreateContext(const struct gl_config * mesaVis, struct dd_function_table functions; struct i830_context *i830 = CALLOC_STRUCT(i830_context); struct intel_context *intel = &i830->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; if (!i830) return GL_FALSE; diff --git a/src/mesa/drivers/dri/i915/i830_context.h b/src/mesa/drivers/dri/i915/i830_context.h index 87cfa8ff0bf..4d568fc0f1e 100644 --- a/src/mesa/drivers/dri/i915/i830_context.h +++ b/src/mesa/drivers/dri/i915/i830_context.h @@ -205,14 +205,14 @@ extern void i830InitStateFuncs(struct dd_function_table *functions); extern void i830EmitState(struct i830_context *i830); extern void i830InitState(struct i830_context *i830); -extern void i830_update_provoking_vertex(GLcontext *ctx); +extern void i830_update_provoking_vertex(struct gl_context *ctx); /*====================================================================== * Inline conversion functions. These are better-typed than the * macros used previously: */ static INLINE struct i830_context * -i830_context(GLcontext * ctx) +i830_context(struct gl_context * ctx) { return (struct i830_context *) ctx; } diff --git a/src/mesa/drivers/dri/i915/i830_state.c b/src/mesa/drivers/dri/i915/i830_state.c index 38e524e183c..147192adc7a 100644 --- a/src/mesa/drivers/dri/i915/i830_state.c +++ b/src/mesa/drivers/dri/i915/i830_state.c @@ -47,7 +47,7 @@ #define FILE_DEBUG_FLAG DEBUG_STATE static void -i830StencilFuncSeparate(GLcontext * ctx, GLenum face, GLenum func, GLint ref, +i830StencilFuncSeparate(struct gl_context * ctx, GLenum face, GLenum func, GLint ref, GLuint mask) { struct i830_context *i830 = i830_context(ctx); @@ -72,7 +72,7 @@ i830StencilFuncSeparate(GLcontext * ctx, GLenum face, GLenum func, GLint ref, } static void -i830StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) +i830StencilMaskSeparate(struct gl_context * ctx, GLenum face, GLuint mask) { struct i830_context *i830 = i830_context(ctx); @@ -87,7 +87,7 @@ i830StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) } static void -i830StencilOpSeparate(GLcontext * ctx, GLenum face, GLenum fail, GLenum zfail, +i830StencilOpSeparate(struct gl_context * ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { struct i830_context *i830 = i830_context(ctx); @@ -199,7 +199,7 @@ i830StencilOpSeparate(GLcontext * ctx, GLenum face, GLenum fail, GLenum zfail, } static void -i830AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) +i830AlphaFunc(struct gl_context * ctx, GLenum func, GLfloat ref) { struct i830_context *i830 = i830_context(ctx); int test = intel_translate_compare_func(func); @@ -228,7 +228,7 @@ i830AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) * I'm not sure which is correct. */ static void -i830EvalLogicOpBlendState(GLcontext * ctx) +i830EvalLogicOpBlendState(struct gl_context * ctx) { struct i830_context *i830 = i830_context(ctx); @@ -255,7 +255,7 @@ i830EvalLogicOpBlendState(GLcontext * ctx) } static void -i830BlendColor(GLcontext * ctx, const GLfloat color[4]) +i830BlendColor(struct gl_context * ctx, const GLfloat color[4]) { struct i830_context *i830 = i830_context(ctx); GLubyte r, g, b, a; @@ -279,7 +279,7 @@ i830BlendColor(GLcontext * ctx, const GLfloat color[4]) * change the interpretation of the blend function. */ static void -i830_set_blend_state(GLcontext * ctx) +i830_set_blend_state(struct gl_context * ctx) { struct i830_context *i830 = i830_context(ctx); int funcA; @@ -385,7 +385,7 @@ i830_set_blend_state(GLcontext * ctx) static void -i830BlendEquationSeparate(GLcontext * ctx, GLenum modeRGB, GLenum modeA) +i830BlendEquationSeparate(struct gl_context * ctx, GLenum modeRGB, GLenum modeA) { DBG("%s -> %s, %s\n", __FUNCTION__, _mesa_lookup_enum_by_nr(modeRGB), @@ -398,7 +398,7 @@ i830BlendEquationSeparate(GLcontext * ctx, GLenum modeRGB, GLenum modeA) static void -i830BlendFuncSeparate(GLcontext * ctx, GLenum sfactorRGB, +i830BlendFuncSeparate(struct gl_context * ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA) { DBG("%s -> RGB(%s, %s) A(%s, %s)\n", __FUNCTION__, @@ -417,7 +417,7 @@ i830BlendFuncSeparate(GLcontext * ctx, GLenum sfactorRGB, static void -i830DepthFunc(GLcontext * ctx, GLenum func) +i830DepthFunc(struct gl_context * ctx, GLenum func) { struct i830_context *i830 = i830_context(ctx); int test = intel_translate_compare_func(func); @@ -431,7 +431,7 @@ i830DepthFunc(GLcontext * ctx, GLenum func) } static void -i830DepthMask(GLcontext * ctx, GLboolean flag) +i830DepthMask(struct gl_context * ctx, GLboolean flag) { struct i830_context *i830 = i830_context(ctx); @@ -449,7 +449,7 @@ i830DepthMask(GLcontext * ctx, GLboolean flag) /** Called from ctx->Driver.Viewport() */ static void -i830Viewport(GLcontext * ctx, +i830Viewport(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height) { intelCalcViewport(ctx); @@ -458,7 +458,7 @@ i830Viewport(GLcontext * ctx, /** Called from ctx->Driver.DepthRange() */ static void -i830DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) +i830DepthRange(struct gl_context * ctx, GLclampd nearval, GLclampd farval) { intelCalcViewport(ctx); } @@ -470,7 +470,7 @@ i830DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) * Fortunately stipple is usually a repeating pattern. */ static void -i830PolygonStipple(GLcontext * ctx, const GLubyte * mask) +i830PolygonStipple(struct gl_context * ctx, const GLubyte * mask) { struct i830_context *i830 = i830_context(ctx); const GLubyte *m = mask; @@ -526,7 +526,7 @@ i830PolygonStipple(GLcontext * ctx, const GLubyte * mask) * Hardware clipping */ static void -i830Scissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h) +i830Scissor(struct gl_context * ctx, GLint x, GLint y, GLsizei w, GLsizei h) { struct i830_context *i830 = i830_context(ctx); int x1, y1, x2, y2; @@ -566,7 +566,7 @@ i830Scissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h) } static void -i830LogicOp(GLcontext * ctx, GLenum opcode) +i830LogicOp(struct gl_context * ctx, GLenum opcode) { struct i830_context *i830 = i830_context(ctx); int tmp = intel_translate_logic_op(opcode); @@ -581,7 +581,7 @@ i830LogicOp(GLcontext * ctx, GLenum opcode) static void -i830CullFaceFrontFace(GLcontext * ctx, GLenum unused) +i830CullFaceFrontFace(struct gl_context * ctx, GLenum unused) { struct i830_context *i830 = i830_context(ctx); GLuint mode; @@ -609,7 +609,7 @@ i830CullFaceFrontFace(GLcontext * ctx, GLenum unused) } static void -i830LineWidth(GLcontext * ctx, GLfloat widthf) +i830LineWidth(struct gl_context * ctx, GLfloat widthf) { struct i830_context *i830 = i830_context(ctx); int width; @@ -630,7 +630,7 @@ i830LineWidth(GLcontext * ctx, GLfloat widthf) } static void -i830PointSize(GLcontext * ctx, GLfloat size) +i830PointSize(struct gl_context * ctx, GLfloat size) { struct i830_context *i830 = i830_context(ctx); GLint point_size = (int) size; @@ -650,7 +650,7 @@ i830PointSize(GLcontext * ctx, GLfloat size) */ static void -i830ColorMask(GLcontext * ctx, +i830ColorMask(struct gl_context * ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a) { struct i830_context *i830 = i830_context(ctx); @@ -672,7 +672,7 @@ i830ColorMask(GLcontext * ctx, } static void -update_specular(GLcontext * ctx) +update_specular(struct gl_context * ctx) { struct i830_context *i830 = i830_context(ctx); @@ -686,7 +686,7 @@ update_specular(GLcontext * ctx) } static void -i830LightModelfv(GLcontext * ctx, GLenum pname, const GLfloat * param) +i830LightModelfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) { DBG("%s\n", __FUNCTION__); @@ -698,7 +698,7 @@ i830LightModelfv(GLcontext * ctx, GLenum pname, const GLfloat * param) /* In Mesa 3.5 we can reliably do native flatshading. */ static void -i830ShadeModel(GLcontext * ctx, GLenum mode) +i830ShadeModel(struct gl_context * ctx, GLenum mode) { struct i830_context *i830 = i830_context(ctx); I830_STATECHANGE(i830, I830_UPLOAD_CTX); @@ -727,7 +727,7 @@ i830ShadeModel(GLcontext * ctx, GLenum mode) * Fog */ static void -i830Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) +i830Fogfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) { struct i830_context *i830 = i830_context(ctx); @@ -748,7 +748,7 @@ i830Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) */ static void -i830Enable(GLcontext * ctx, GLenum cap, GLboolean state) +i830Enable(struct gl_context * ctx, GLenum cap, GLboolean state) { struct i830_context *i830 = i830_context(ctx); @@ -1067,7 +1067,7 @@ i830_init_packets(struct i830_context *i830) } void -i830_update_provoking_vertex(GLcontext * ctx) +i830_update_provoking_vertex(struct gl_context * ctx) { struct i830_context *i830 = i830_context(ctx); @@ -1119,7 +1119,7 @@ i830InitStateFuncs(struct dd_function_table *functions) void i830InitState(struct i830_context *i830) { - GLcontext *ctx = &i830->intel.ctx; + struct gl_context *ctx = &i830->intel.ctx; i830_init_packets(i830); diff --git a/src/mesa/drivers/dri/i915/i830_texblend.c b/src/mesa/drivers/dri/i915/i830_texblend.c index 3f64be8c962..fec86c56fdc 100644 --- a/src/mesa/drivers/dri/i915/i830_texblend.c +++ b/src/mesa/drivers/dri/i915/i830_texblend.c @@ -440,7 +440,7 @@ emit_passthrough(struct i830_context *i830) void i830EmitTextureBlend(struct i830_context *i830) { - GLcontext *ctx = &i830->intel.ctx; + struct gl_context *ctx = &i830->intel.ctx; GLuint unit, last_stage = 0, blendunit = 0; I830_ACTIVESTATE(i830, I830_UPLOAD_TEXBLEND_ALL, GL_FALSE); diff --git a/src/mesa/drivers/dri/i915/i830_texstate.c b/src/mesa/drivers/dri/i915/i830_texstate.c index ace44430d97..b3bb8837cca 100644 --- a/src/mesa/drivers/dri/i915/i830_texstate.c +++ b/src/mesa/drivers/dri/i915/i830_texstate.c @@ -113,7 +113,7 @@ translate_wrap_mode(GLenum wrap) static GLboolean i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct i830_context *i830 = i830_context(ctx); struct gl_texture_unit *tUnit = &ctx->Texture.Unit[unit]; struct gl_texture_object *tObj = tUnit->_Current; diff --git a/src/mesa/drivers/dri/i915/i830_vtbl.c b/src/mesa/drivers/dri/i915/i830_vtbl.c index 9f07d7760a9..f7fdb78d059 100644 --- a/src/mesa/drivers/dri/i915/i830_vtbl.c +++ b/src/mesa/drivers/dri/i915/i830_vtbl.c @@ -69,7 +69,7 @@ i830_render_prevalidate(struct intel_context *intel) static void i830_render_start(struct intel_context *intel) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct i830_context *i830 = i830_context(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -591,7 +591,7 @@ i830_set_draw_region(struct intel_context *intel, GLuint num_regions) { struct i830_context *i830 = i830_context(&intel->ctx); - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[0]; struct intel_renderbuffer *irb = intel_renderbuffer(rb); GLuint value; diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c index 6688bd8536f..f943f81dd05 100644 --- a/src/mesa/drivers/dri/i915/i915_context.c +++ b/src/mesa/drivers/dri/i915/i915_context.c @@ -49,7 +49,7 @@ /* Override intel default. */ static void -i915InvalidateState(GLcontext * ctx, GLuint new_state) +i915InvalidateState(struct gl_context * ctx, GLuint new_state) { _swrast_InvalidateState(ctx, new_state); _swsetup_InvalidateState(ctx, new_state); @@ -102,7 +102,7 @@ i915CreateContext(int api, struct i915_context *i915 = (struct i915_context *) CALLOC_STRUCT(i915_context); struct intel_context *intel = &i915->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; if (!i915) return GL_FALSE; diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index 5f3adb3db7e..2c80ded075b 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -158,7 +158,7 @@ struct i915_fragment_program /* TODO: split between the stored representation of a program and * the state used to build that representation. */ - GLcontext *ctx; + struct gl_context *ctx; /* declarations contains the packet header. */ GLuint declarations[I915_MAX_DECL_INSN * 3 + 1]; @@ -337,9 +337,9 @@ extern void i915_print_ureg(const char *msg, GLuint ureg); */ extern void i915InitStateFunctions(struct dd_function_table *functions); extern void i915InitState(struct i915_context *i915); -extern void i915_update_fog(GLcontext * ctx); -extern void i915_update_stencil(GLcontext * ctx); -extern void i915_update_provoking_vertex(GLcontext *ctx); +extern void i915_update_fog(struct gl_context * ctx); +extern void i915_update_stencil(struct gl_context * ctx); +extern void i915_update_provoking_vertex(struct gl_context *ctx); /*====================================================================== @@ -359,7 +359,7 @@ extern void i915InitFragProgFuncs(struct dd_function_table *functions); * macros used previously: */ static INLINE struct i915_context * -i915_context(GLcontext * ctx) +i915_context(struct gl_context * ctx) { return (struct i915_context *) ctx; } diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c index 31988f3d813..c00ee415b6b 100644 --- a/src/mesa/drivers/dri/i915/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c @@ -1186,7 +1186,7 @@ track_params(struct i915_fragment_program *p) static void -i915BindProgram(GLcontext * ctx, GLenum target, struct gl_program *prog) +i915BindProgram(struct gl_context * ctx, GLenum target, struct gl_program *prog) { if (target == GL_FRAGMENT_PROGRAM_ARB) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -1209,7 +1209,7 @@ i915BindProgram(GLcontext * ctx, GLenum target, struct gl_program *prog) } static struct gl_program * -i915NewProgram(GLcontext * ctx, GLenum target, GLuint id) +i915NewProgram(struct gl_context * ctx, GLenum target, GLuint id) { switch (target) { case GL_VERTEX_PROGRAM_ARB: @@ -1237,7 +1237,7 @@ i915NewProgram(GLcontext * ctx, GLenum target, GLuint id) } static void -i915DeleteProgram(GLcontext * ctx, struct gl_program *prog) +i915DeleteProgram(struct gl_context * ctx, struct gl_program *prog) { if (prog->Target == GL_FRAGMENT_PROGRAM_ARB) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -1252,7 +1252,7 @@ i915DeleteProgram(GLcontext * ctx, struct gl_program *prog) static GLboolean -i915IsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog) +i915IsProgramNative(struct gl_context * ctx, GLenum target, struct gl_program *prog) { if (target == GL_FRAGMENT_PROGRAM_ARB) { struct i915_fragment_program *p = (struct i915_fragment_program *) prog; @@ -1267,7 +1267,7 @@ i915IsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog) } static GLboolean -i915ProgramStringNotify(GLcontext * ctx, +i915ProgramStringNotify(struct gl_context * ctx, GLenum target, struct gl_program *prog) { if (target == GL_FRAGMENT_PROGRAM_ARB) { @@ -1291,7 +1291,7 @@ i915ProgramStringNotify(GLcontext * ctx, } void -i915_update_program(GLcontext *ctx) +i915_update_program(struct gl_context *ctx) { struct intel_context *intel = intel_context(ctx); struct i915_context *i915 = i915_context(&intel->ctx); @@ -1316,7 +1316,7 @@ i915_update_program(GLcontext *ctx) void i915ValidateFragmentProgram(struct i915_context *i915) { - GLcontext *ctx = &i915->intel.ctx; + struct gl_context *ctx = &i915->intel.ctx; struct intel_context *intel = intel_context(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; diff --git a/src/mesa/drivers/dri/i915/i915_program.c b/src/mesa/drivers/dri/i915/i915_program.c index 670c7137850..ca1949b223e 100644 --- a/src/mesa/drivers/dri/i915/i915_program.c +++ b/src/mesa/drivers/dri/i915/i915_program.c @@ -457,7 +457,7 @@ i915_program_error(struct i915_fragment_program *p, const char *fmt, ...) void i915_init_program(struct i915_context *i915, struct i915_fragment_program *p) { - GLcontext *ctx = &i915->intel.ctx; + struct gl_context *ctx = &i915->intel.ctx; p->translated = 0; p->params_uptodate = 0; diff --git a/src/mesa/drivers/dri/i915/i915_program.h b/src/mesa/drivers/dri/i915/i915_program.h index 0d17d048653..20a1354a411 100644 --- a/src/mesa/drivers/dri/i915/i915_program.h +++ b/src/mesa/drivers/dri/i915/i915_program.h @@ -155,6 +155,6 @@ extern void i915_upload_program(struct i915_context *i915, extern void i915_fini_program(struct i915_fragment_program *p); -extern void i915_update_program(GLcontext *ctx); +extern void i915_update_program(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c index 26d387f383a..9508fbaf942 100644 --- a/src/mesa/drivers/dri/i915/i915_state.c +++ b/src/mesa/drivers/dri/i915/i915_state.c @@ -49,7 +49,7 @@ #define FILE_DEBUG_FLAG DEBUG_STATE void -i915_update_stencil(GLcontext * ctx) +i915_update_stencil(struct gl_context * ctx) { struct i915_context *i915 = I915_CONTEXT(ctx); GLuint front_ref, front_writemask, front_mask; @@ -147,24 +147,24 @@ i915_update_stencil(GLcontext * ctx) } static void -i915StencilFuncSeparate(GLcontext * ctx, GLenum face, GLenum func, GLint ref, +i915StencilFuncSeparate(struct gl_context * ctx, GLenum face, GLenum func, GLint ref, GLuint mask) { } static void -i915StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) +i915StencilMaskSeparate(struct gl_context * ctx, GLenum face, GLuint mask) { } static void -i915StencilOpSeparate(GLcontext * ctx, GLenum face, GLenum fail, GLenum zfail, +i915StencilOpSeparate(struct gl_context * ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { } static void -i915AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) +i915AlphaFunc(struct gl_context * ctx, GLenum func, GLfloat ref) { struct i915_context *i915 = I915_CONTEXT(ctx); int test = intel_translate_compare_func(func); @@ -187,7 +187,7 @@ i915AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) * calls to glEnable. */ static void -i915EvalLogicOpBlendState(GLcontext * ctx) +i915EvalLogicOpBlendState(struct gl_context * ctx) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -210,7 +210,7 @@ i915EvalLogicOpBlendState(GLcontext * ctx) } static void -i915BlendColor(GLcontext * ctx, const GLfloat color[4]) +i915BlendColor(struct gl_context * ctx, const GLfloat color[4]) { struct i915_context *i915 = I915_CONTEXT(ctx); GLubyte r, g, b, a; @@ -255,7 +255,7 @@ translate_blend_equation(GLenum mode) } static void -i915UpdateBlendState(GLcontext * ctx) +i915UpdateBlendState(struct gl_context * ctx) { struct i915_context *i915 = I915_CONTEXT(ctx); GLuint iab = (i915->state.Ctx[I915_CTXREG_IAB] & @@ -306,7 +306,7 @@ i915UpdateBlendState(GLcontext * ctx) static void -i915BlendFuncSeparate(GLcontext * ctx, GLenum srcRGB, +i915BlendFuncSeparate(struct gl_context * ctx, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA) { i915UpdateBlendState(ctx); @@ -314,14 +314,14 @@ i915BlendFuncSeparate(GLcontext * ctx, GLenum srcRGB, static void -i915BlendEquationSeparate(GLcontext * ctx, GLenum eqRGB, GLenum eqA) +i915BlendEquationSeparate(struct gl_context * ctx, GLenum eqRGB, GLenum eqA) { i915UpdateBlendState(ctx); } static void -i915DepthFunc(GLcontext * ctx, GLenum func) +i915DepthFunc(struct gl_context * ctx, GLenum func) { struct i915_context *i915 = I915_CONTEXT(ctx); int test = intel_translate_compare_func(func); @@ -334,7 +334,7 @@ i915DepthFunc(GLcontext * ctx, GLenum func) } static void -i915DepthMask(GLcontext * ctx, GLboolean flag) +i915DepthMask(struct gl_context * ctx, GLboolean flag) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -357,7 +357,7 @@ i915DepthMask(GLcontext * ctx, GLboolean flag) * - window pos/size or FBO size */ void -intelCalcViewport(GLcontext * ctx) +intelCalcViewport(struct gl_context * ctx) { struct intel_context *intel = intel_context(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -390,7 +390,7 @@ intelCalcViewport(GLcontext * ctx) /** Called from ctx->Driver.Viewport() */ static void -i915Viewport(GLcontext * ctx, +i915Viewport(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height) { intelCalcViewport(ctx); @@ -399,7 +399,7 @@ i915Viewport(GLcontext * ctx, /** Called from ctx->Driver.DepthRange() */ static void -i915DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) +i915DepthRange(struct gl_context * ctx, GLclampd nearval, GLclampd farval) { intelCalcViewport(ctx); } @@ -412,7 +412,7 @@ i915DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) * Fortunately stipple is usually a repeating pattern. */ static void -i915PolygonStipple(GLcontext * ctx, const GLubyte * mask) +i915PolygonStipple(struct gl_context * ctx, const GLubyte * mask) { struct i915_context *i915 = I915_CONTEXT(ctx); const GLubyte *m; @@ -474,7 +474,7 @@ i915PolygonStipple(GLcontext * ctx, const GLubyte * mask) * Hardware clipping */ static void -i915Scissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h) +i915Scissor(struct gl_context * ctx, GLint x, GLint y, GLsizei w, GLsizei h) { struct i915_context *i915 = I915_CONTEXT(ctx); int x1, y1, x2, y2; @@ -514,7 +514,7 @@ i915Scissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h) } static void -i915LogicOp(GLcontext * ctx, GLenum opcode) +i915LogicOp(struct gl_context * ctx, GLenum opcode) { struct i915_context *i915 = I915_CONTEXT(ctx); int tmp = intel_translate_logic_op(opcode); @@ -529,7 +529,7 @@ i915LogicOp(GLcontext * ctx, GLenum opcode) static void -i915CullFaceFrontFace(GLcontext * ctx, GLenum unused) +i915CullFaceFrontFace(struct gl_context * ctx, GLenum unused) { struct i915_context *i915 = I915_CONTEXT(ctx); GLuint mode; @@ -560,7 +560,7 @@ i915CullFaceFrontFace(GLcontext * ctx, GLenum unused) } static void -i915LineWidth(GLcontext * ctx, GLfloat widthf) +i915LineWidth(struct gl_context * ctx, GLfloat widthf) { struct i915_context *i915 = I915_CONTEXT(ctx); int lis4 = i915->state.Ctx[I915_CTXREG_LIS4] & ~S4_LINE_WIDTH_MASK; @@ -579,7 +579,7 @@ i915LineWidth(GLcontext * ctx, GLfloat widthf) } static void -i915PointSize(GLcontext * ctx, GLfloat size) +i915PointSize(struct gl_context * ctx, GLfloat size) { struct i915_context *i915 = I915_CONTEXT(ctx); int lis4 = i915->state.Ctx[I915_CTXREG_LIS4] & ~S4_POINT_WIDTH_MASK; @@ -598,7 +598,7 @@ i915PointSize(GLcontext * ctx, GLfloat size) static void -i915PointParameterfv(GLcontext * ctx, GLenum pname, const GLfloat *params) +i915PointParameterfv(struct gl_context * ctx, GLenum pname, const GLfloat *params) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -620,7 +620,7 @@ i915PointParameterfv(GLcontext * ctx, GLenum pname, const GLfloat *params) */ static void -i915ColorMask(GLcontext * ctx, +i915ColorMask(struct gl_context * ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -645,7 +645,7 @@ i915ColorMask(GLcontext * ctx, } static void -update_specular(GLcontext * ctx) +update_specular(struct gl_context * ctx) { /* A hack to trigger the rebuild of the fragment program. */ @@ -653,7 +653,7 @@ update_specular(GLcontext * ctx) } static void -i915LightModelfv(GLcontext * ctx, GLenum pname, const GLfloat * param) +i915LightModelfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) { DBG("%s\n", __FUNCTION__); @@ -663,7 +663,7 @@ i915LightModelfv(GLcontext * ctx, GLenum pname, const GLfloat * param) } static void -i915ShadeModel(GLcontext * ctx, GLenum mode) +i915ShadeModel(struct gl_context * ctx, GLenum mode) { struct i915_context *i915 = I915_CONTEXT(ctx); I915_STATECHANGE(i915, I915_UPLOAD_CTX); @@ -684,7 +684,7 @@ i915ShadeModel(GLcontext * ctx, GLenum mode) * Fog */ void -i915_update_fog(GLcontext * ctx) +i915_update_fog(struct gl_context * ctx) { struct i915_context *i915 = I915_CONTEXT(ctx); GLenum mode; @@ -780,7 +780,7 @@ i915_update_fog(GLcontext * ctx) } static void -i915Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) +i915Fogfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -820,7 +820,7 @@ i915Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) } static void -i915Hint(GLcontext * ctx, GLenum target, GLenum state) +i915Hint(struct gl_context * ctx, GLenum target, GLenum state) { switch (target) { case GL_FOG_HINT: @@ -834,7 +834,7 @@ i915Hint(GLcontext * ctx, GLenum target, GLenum state) */ static void -i915Enable(GLcontext * ctx, GLenum cap, GLboolean state) +i915Enable(struct gl_context * ctx, GLenum cap, GLboolean state) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -1093,7 +1093,7 @@ i915_init_packets(struct i915_context *i915) } void -i915_update_provoking_vertex(GLcontext * ctx) +i915_update_provoking_vertex(struct gl_context * ctx) { struct i915_context *i915 = I915_CONTEXT(ctx); @@ -1150,7 +1150,7 @@ i915InitStateFunctions(struct dd_function_table *functions) void i915InitState(struct i915_context *i915) { - GLcontext *ctx = &i915->intel.ctx; + struct gl_context *ctx = &i915->intel.ctx; i915_init_packets(i915); diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c index e0e7f3bc3da..c724a214967 100644 --- a/src/mesa/drivers/dri/i915/i915_texstate.c +++ b/src/mesa/drivers/dri/i915/i915_texstate.c @@ -130,7 +130,7 @@ translate_wrap_mode(GLenum wrap) static GLboolean i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct i915_context *i915 = i915_context(ctx); struct gl_texture_unit *tUnit = &ctx->Texture.Unit[unit]; struct gl_texture_object *tObj = tUnit->_Current; diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c index 8fa24e48151..59dfe085632 100644 --- a/src/mesa/drivers/dri/i915/i915_vtbl.c +++ b/src/mesa/drivers/dri/i915/i915_vtbl.c @@ -530,7 +530,7 @@ i915_set_draw_region(struct intel_context *intel, GLuint num_regions) { struct i915_context *i915 = i915_context(&intel->ctx); - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[0]; struct intel_renderbuffer *irb = intel_renderbuffer(rb); GLuint value; diff --git a/src/mesa/drivers/dri/i915/intel_render.c b/src/mesa/drivers/dri/i915/intel_render.c index dc6bc9a71c0..0d8ab4b507e 100644 --- a/src/mesa/drivers/dri/i915/intel_render.c +++ b/src/mesa/drivers/dri/i915/intel_render.c @@ -216,7 +216,7 @@ choose_render(struct intel_context *intel, struct vertex_buffer *VB) static GLboolean -intel_run_render(GLcontext * ctx, struct tnl_pipeline_stage *stage) +intel_run_render(struct gl_context * ctx, struct tnl_pipeline_stage *stage) { struct intel_context *intel = intel_context(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/i915/intel_tris.c b/src/mesa/drivers/dri/i915/intel_tris.c index ede111b87a2..b9a8aeb12f2 100644 --- a/src/mesa/drivers/dri/i915/intel_tris.c +++ b/src/mesa/drivers/dri/i915/intel_tris.c @@ -55,8 +55,8 @@ #include "i830_context.h" #include "i830_reg.h" -static void intelRenderPrimitive(GLcontext * ctx, GLenum prim); -static void intelRasterPrimitive(GLcontext * ctx, GLenum rprim, +static void intelRenderPrimitive(struct gl_context * ctx, GLenum prim); +static void intelRasterPrimitive(struct gl_context * ctx, GLenum rprim, GLuint hwprim); static void @@ -427,7 +427,7 @@ intel_draw_point(struct intel_context *intel, intelVertexPtr v0) static void intel_atten_point(struct intel_context *intel, intelVertexPtr v0) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; GLfloat psz[4], col[4], restore_psz, restore_alpha; _tnl_get_attr(ctx, v0, _TNL_ATTRIB_POINTSIZE, psz); @@ -784,7 +784,7 @@ static void intel_fallback_tri(struct intel_context *intel, intelVertex * v0, intelVertex * v1, intelVertex * v2) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; SWvertex v[3]; if (0) @@ -805,7 +805,7 @@ static void intel_fallback_line(struct intel_context *intel, intelVertex * v0, intelVertex * v1) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; SWvertex v[2]; if (0) @@ -824,7 +824,7 @@ static void intel_fallback_point(struct intel_context *intel, intelVertex * v0) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; SWvertex v[1]; if (0) @@ -877,7 +877,7 @@ intel_fallback_point(struct intel_context *intel, static void -intelRenderClippedPoly(GLcontext * ctx, const GLuint * elts, GLuint n) +intelRenderClippedPoly(struct gl_context * ctx, const GLuint * elts, GLuint n) { struct intel_context *intel = intel_context(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -901,7 +901,7 @@ intelRenderClippedPoly(GLcontext * ctx, const GLuint * elts, GLuint n) } static void -intelRenderClippedLine(GLcontext * ctx, GLuint ii, GLuint jj) +intelRenderClippedLine(struct gl_context * ctx, GLuint ii, GLuint jj) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -909,7 +909,7 @@ intelRenderClippedLine(GLcontext * ctx, GLuint ii, GLuint jj) } static void -intelFastRenderClippedPoly(GLcontext * ctx, const GLuint * elts, GLuint n) +intelFastRenderClippedPoly(struct gl_context * ctx, const GLuint * elts, GLuint n) { struct intel_context *intel = intel_context(ctx); const GLuint vertsize = intel->vertex_size; @@ -936,7 +936,7 @@ intelFastRenderClippedPoly(GLcontext * ctx, const GLuint * elts, GLuint n) #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE | DD_TRI_OFFSET | DD_TRI_UNFILLED) void -intelChooseRenderState(GLcontext * ctx) +intelChooseRenderState(struct gl_context * ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct intel_context *intel = intel_context(ctx); @@ -1049,7 +1049,7 @@ static const GLenum reduced_prim[GL_POLYGON + 1] = { static void -intelRunPipeline(GLcontext * ctx) +intelRunPipeline(struct gl_context * ctx) { struct intel_context *intel = intel_context(ctx); @@ -1079,7 +1079,7 @@ intelRunPipeline(GLcontext * ctx) } static void -intelRenderStart(GLcontext * ctx) +intelRenderStart(struct gl_context * ctx) { struct intel_context *intel = intel_context(ctx); @@ -1089,7 +1089,7 @@ intelRenderStart(GLcontext * ctx) } static void -intelRenderFinish(GLcontext * ctx) +intelRenderFinish(struct gl_context * ctx) { struct intel_context *intel = intel_context(ctx); @@ -1106,7 +1106,7 @@ intelRenderFinish(GLcontext * ctx) * primitive. */ static void -intelRasterPrimitive(GLcontext * ctx, GLenum rprim, GLuint hwprim) +intelRasterPrimitive(struct gl_context * ctx, GLenum rprim, GLuint hwprim) { struct intel_context *intel = intel_context(ctx); @@ -1129,7 +1129,7 @@ intelRasterPrimitive(GLcontext * ctx, GLenum rprim, GLuint hwprim) /* */ static void -intelRenderPrimitive(GLcontext * ctx, GLenum prim) +intelRenderPrimitive(struct gl_context * ctx, GLenum prim) { struct intel_context *intel = intel_context(ctx); @@ -1201,7 +1201,7 @@ getFallbackString(GLuint bit) void intelFallback(struct intel_context *intel, GLbitfield bit, GLboolean mode) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; TNLcontext *tnl = TNL_CONTEXT(ctx); const GLbitfield oldfallback = intel->Fallback; @@ -1253,7 +1253,7 @@ union fi void -intelInitTriFuncs(GLcontext * ctx) +intelInitTriFuncs(struct gl_context * ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); static int firsttime = 1; diff --git a/src/mesa/drivers/dri/i915/intel_tris.h b/src/mesa/drivers/dri/i915/intel_tris.h index 55b60a47f91..ad84de828be 100644 --- a/src/mesa/drivers/dri/i915/intel_tris.h +++ b/src/mesa/drivers/dri/i915/intel_tris.h @@ -42,9 +42,9 @@ _NEW_PROGRAM | \ _NEW_POLYGONSTIPPLE) -extern void intelInitTriFuncs(GLcontext * ctx); +extern void intelInitTriFuncs(struct gl_context * ctx); -extern void intelChooseRenderState(GLcontext * ctx); +extern void intelChooseRenderState(struct gl_context * ctx); void intel_set_prim(struct intel_context *intel, uint32_t prim); GLuint *intel_get_prim_space(struct intel_context *intel, unsigned int count); diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index 8430ee0cfa0..00418760da3 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -39,7 +39,7 @@ void brw_update_cc_vp(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_cc_viewport ccv; memset(&ccv, 0, sizeof(ccv)); @@ -91,7 +91,7 @@ static void prepare_cc_unit(struct brw_context *brw) static void upload_cc_unit(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_cc_unit_state cc; void *map; diff --git a/src/mesa/drivers/dri/i965/brw_clip.c b/src/mesa/drivers/dri/i965/brw_clip.c index a1e9dae9154..15e60bf3ce3 100644 --- a/src/mesa/drivers/dri/i965/brw_clip.c +++ b/src/mesa/drivers/dri/i965/brw_clip.c @@ -159,7 +159,7 @@ static void compile_clip_prog( struct brw_context *brw, static void upload_clip_prog(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct brw_clip_prog_key key; memset(&key, 0, sizeof(key)); diff --git a/src/mesa/drivers/dri/i965/brw_clip_state.c b/src/mesa/drivers/dri/i965/brw_clip_state.c index 856d8f0c6c0..885167da908 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_state.c +++ b/src/mesa/drivers/dri/i965/brw_clip_state.c @@ -49,7 +49,7 @@ struct brw_clip_unit_key { static void clip_unit_populate_key(struct brw_context *brw, struct brw_clip_unit_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; memset(key, 0, sizeof(*key)); /* CACHE_NEW_CLIP_PROG */ diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index d59ba0e5e87..3c4ae8a7a4f 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -64,7 +64,7 @@ GLboolean brwCreateContext( int api, struct dd_function_table functions; struct brw_context *brw = (struct brw_context *) CALLOC_STRUCT(brw_context); struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; unsigned i; if (!brw) { diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 700d201f492..f205c07a727 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -763,15 +763,15 @@ void brw_upload_cs_urb_state(struct brw_context *brw); int brw_disasm (FILE *file, struct brw_instruction *inst, int gen); /* brw_state.c */ -void brw_enable(GLcontext * ctx, GLenum cap, GLboolean state); -void brw_depth_range(GLcontext *ctx, GLclampd nearval, GLclampd farval); +void brw_enable(struct gl_context * ctx, GLenum cap, GLboolean state); +void brw_depth_range(struct gl_context *ctx, GLclampd nearval, GLclampd farval); /*====================================================================== * Inline conversion functions. These are better-typed than the * macros used previously: */ static INLINE struct brw_context * -brw_context( GLcontext *ctx ) +brw_context( struct gl_context *ctx ) { return (struct brw_context *)ctx; } diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c index 8196d8ca625..9ce0d8decdc 100644 --- a/src/mesa/drivers/dri/i965/brw_curbe.c +++ b/src/mesa/drivers/dri/i965/brw_curbe.c @@ -55,7 +55,7 @@ */ static void calculate_curbe_offsets( struct brw_context *brw ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; /* CACHE_NEW_WM_PROG */ const GLuint nr_fp_regs = (brw->wm.prog_data->nr_params + 15) / 16; @@ -179,7 +179,7 @@ static GLfloat fixed_plane[6][4] = { */ static void prepare_constant_buffer(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; const struct brw_vertex_program *vp = brw_vertex_program_const(brw->vertex_program); const GLuint sz = brw->curbe.total_size; diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index af5c37583b5..46b9120842d 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -80,7 +80,7 @@ static const GLenum reduced_prim[GL_POLYGON+1] = { static GLuint brw_set_prim(struct brw_context *brw, const struct _mesa_prim *prim) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; GLenum mode = prim->mode; if (INTEL_DEBUG & DEBUG_PRIMS) @@ -201,7 +201,7 @@ static GLboolean check_fallbacks( struct brw_context *brw, const struct _mesa_prim *prim, GLuint nr_prims ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; GLuint i; /* XXX FIXME */ @@ -300,7 +300,7 @@ static GLboolean check_fallbacks( struct brw_context *brw, /* May fail if out of video memory for texture or vbo upload, or on * fallback conditions. */ -static GLboolean brw_try_draw_prims( GLcontext *ctx, +static GLboolean brw_try_draw_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -423,7 +423,7 @@ static GLboolean brw_try_draw_prims( GLcontext *ctx, return retval; } -void brw_draw_prims( GLcontext *ctx, +void brw_draw_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -467,7 +467,7 @@ void brw_draw_prims( GLcontext *ctx, void brw_draw_init( struct brw_context *brw ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct vbo_context *vbo = vbo_context(ctx); /* Register our drawing function: diff --git a/src/mesa/drivers/dri/i965/brw_draw.h b/src/mesa/drivers/dri/i965/brw_draw.h index 2a14db217fc..1fe417296f6 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.h +++ b/src/mesa/drivers/dri/i965/brw_draw.h @@ -28,13 +28,13 @@ #ifndef BRW_DRAW_H #define BRW_DRAW_H -#include "main/mtypes.h" /* for GLcontext... */ +#include "main/mtypes.h" /* for struct gl_context... */ #include "vbo/vbo.h" struct brw_context; -void brw_draw_prims( GLcontext *ctx, +void brw_draw_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prims, GLuint nr_prims, @@ -48,7 +48,7 @@ void brw_draw_destroy( struct brw_context *brw ); /* brw_draw_current.c */ -void brw_init_current_values(GLcontext *ctx, +void brw_init_current_values(struct gl_context *ctx, struct gl_client_array *arrays); #endif diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index f24c4146adb..c4654360d46 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -313,7 +313,7 @@ copy_array_to_vbo_array( struct brw_context *brw, static void brw_prepare_vertices(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = intel_context(ctx); GLbitfield vs_inputs = brw->vs.prog_data->inputs_read; GLuint i; @@ -451,7 +451,7 @@ static void brw_prepare_vertices(struct brw_context *brw) static void brw_emit_vertices(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = intel_context(ctx); GLuint i; @@ -583,7 +583,7 @@ const struct brw_tracked_state brw_vertices = { static void brw_prepare_indices(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; const struct _mesa_index_buffer *index_buffer = brw->ib.ib; GLuint ib_size; diff --git a/src/mesa/drivers/dri/i965/brw_fallback.c b/src/mesa/drivers/dri/i965/brw_fallback.c index ba401c215cb..6796fb208dc 100644 --- a/src/mesa/drivers/dri/i965/brw_fallback.c +++ b/src/mesa/drivers/dri/i965/brw_fallback.c @@ -43,7 +43,7 @@ static GLboolean do_check_fallback(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; GLuint i; if (brw->intel.no_rast) { diff --git a/src/mesa/drivers/dri/i965/brw_fallback.h b/src/mesa/drivers/dri/i965/brw_fallback.h index 50dcdacd17a..13b18b52e65 100644 --- a/src/mesa/drivers/dri/i965/brw_fallback.h +++ b/src/mesa/drivers/dri/i965/brw_fallback.h @@ -28,15 +28,15 @@ #ifndef BRW_FALLBACK_H #define BRW_FALLBACK_H -#include "main/mtypes.h" /* for GLcontext... */ +#include "main/mtypes.h" /* for struct gl_context... */ struct brw_context; struct vbo_prim; -void brw_fallback( GLcontext *ctx ); -void brw_unfallback( GLcontext *ctx ); +void brw_fallback( struct gl_context *ctx ); +void brw_unfallback( struct gl_context *ctx ); -void brw_loopback_vertex_list( GLcontext *ctx, +void brw_loopback_vertex_list( struct gl_context *ctx, const GLfloat *buffer, const GLubyte *attrsz, const struct vbo_prim *prim, diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 5e5d17504b7..35bb28914e2 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -52,7 +52,7 @@ static int using_new_fs = -1; static struct brw_reg brw_reg_from_fs_reg(class fs_reg *reg); struct gl_shader * -brw_new_shader(GLcontext *ctx, GLuint name, GLuint type) +brw_new_shader(struct gl_context *ctx, GLuint name, GLuint type) { struct brw_shader *shader; @@ -67,7 +67,7 @@ brw_new_shader(GLcontext *ctx, GLuint name, GLuint type) } struct gl_shader_program * -brw_new_shader_program(GLcontext *ctx, GLuint name) +brw_new_shader_program(struct gl_context *ctx, GLuint name) { struct brw_shader_program *prog; prog = talloc_zero(NULL, struct brw_shader_program); @@ -79,7 +79,7 @@ brw_new_shader_program(GLcontext *ctx, GLuint name) } GLboolean -brw_compile_shader(GLcontext *ctx, struct gl_shader *shader) +brw_compile_shader(struct gl_context *ctx, struct gl_shader *shader) { if (!_mesa_ir_compile_shader(ctx, shader)) return GL_FALSE; @@ -88,7 +88,7 @@ brw_compile_shader(GLcontext *ctx, struct gl_shader *shader) } GLboolean -brw_link_shader(GLcontext *ctx, struct gl_shader_program *prog) +brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) { struct intel_context *intel = intel_context(ctx); @@ -2958,7 +2958,7 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) { struct brw_compile *p = &c->func; struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct brw_shader *shader = NULL; struct gl_shader_program *prog = ctx->Shader.CurrentProgram; diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index 93cde7f5edd..929ac682b08 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -375,7 +375,7 @@ public: struct brw_context *brw; const struct gl_fragment_program *fp; struct intel_context *intel; - GLcontext *ctx; + struct gl_context *ctx; struct brw_wm_compile *c; struct brw_compile *p; struct brw_shader *shader; diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index 8952c9e3463..ad178d84b65 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -167,7 +167,7 @@ static const GLenum gs_prim[GL_POLYGON+1] = { static void populate_key( struct brw_context *brw, struct brw_gs_prog_key *key ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; memset(key, 0, sizeof(*key)); /* CACHE_NEW_VS_PROG */ diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 6eeaba77720..27d161db413 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -48,7 +48,7 @@ static void upload_blend_constant_color(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_blend_constant_color bcc; memset(&bcc, 0, sizeof(bcc)); @@ -76,7 +76,7 @@ const struct brw_tracked_state brw_blend_constant_color = { static void upload_drawing_rect(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; BEGIN_BATCH(4); OUT_BATCH(_3DSTATE_DRAWRECT_INFO_I965); @@ -335,7 +335,7 @@ const struct brw_tracked_state brw_depthbuffer = { static void upload_polygon_stipple(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_polygon_stipple bps; GLuint i; @@ -378,7 +378,7 @@ const struct brw_tracked_state brw_polygon_stipple = { static void upload_polygon_stipple_offset(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_polygon_stipple_offset bpso; memset(&bpso, 0, sizeof(bpso)); @@ -449,7 +449,7 @@ const struct brw_tracked_state brw_aa_line_parameters = { static void upload_line_stipple(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_line_stipple bls; GLfloat tmp; GLint tmpi; diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index 3e52be5d4b7..8bc255a1c07 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -41,7 +41,7 @@ #include "brw_context.h" #include "brw_wm.h" -static void brwBindProgram( GLcontext *ctx, +static void brwBindProgram( struct gl_context *ctx, GLenum target, struct gl_program *prog ) { @@ -57,7 +57,7 @@ static void brwBindProgram( GLcontext *ctx, } } -static struct gl_program *brwNewProgram( GLcontext *ctx, +static struct gl_program *brwNewProgram( struct gl_context *ctx, GLenum target, GLuint id ) { @@ -93,14 +93,14 @@ static struct gl_program *brwNewProgram( GLcontext *ctx, } } -static void brwDeleteProgram( GLcontext *ctx, +static void brwDeleteProgram( struct gl_context *ctx, struct gl_program *prog ) { _mesa_delete_program( ctx, prog ); } -static GLboolean brwIsProgramNative( GLcontext *ctx, +static GLboolean brwIsProgramNative( struct gl_context *ctx, GLenum target, struct gl_program *prog ) { @@ -108,7 +108,7 @@ static GLboolean brwIsProgramNative( GLcontext *ctx, } static void -shader_error(GLcontext *ctx, struct gl_program *prog, const char *msg) +shader_error(struct gl_context *ctx, struct gl_program *prog, const char *msg) { struct gl_shader_program *shader; @@ -120,7 +120,7 @@ shader_error(GLcontext *ctx, struct gl_program *prog, const char *msg) } } -static GLboolean brwProgramStringNotify( GLcontext *ctx, +static GLboolean brwProgramStringNotify( struct gl_context *ctx, GLenum target, struct gl_program *prog ) { diff --git a/src/mesa/drivers/dri/i965/brw_queryobj.c b/src/mesa/drivers/dri/i965/brw_queryobj.c index 1b183735d75..f28f28663ea 100644 --- a/src/mesa/drivers/dri/i965/brw_queryobj.c +++ b/src/mesa/drivers/dri/i965/brw_queryobj.c @@ -72,7 +72,7 @@ brw_queryobj_get_results(struct brw_query_object *query) } static struct gl_query_object * -brw_new_query_object(GLcontext *ctx, GLuint id) +brw_new_query_object(struct gl_context *ctx, GLuint id) { struct brw_query_object *query; @@ -87,7 +87,7 @@ brw_new_query_object(GLcontext *ctx, GLuint id) } static void -brw_delete_query(GLcontext *ctx, struct gl_query_object *q) +brw_delete_query(struct gl_context *ctx, struct gl_query_object *q) { struct brw_query_object *query = (struct brw_query_object *)q; @@ -96,7 +96,7 @@ brw_delete_query(GLcontext *ctx, struct gl_query_object *q) } static void -brw_begin_query(GLcontext *ctx, struct gl_query_object *q) +brw_begin_query(struct gl_context *ctx, struct gl_query_object *q) { struct brw_context *brw = brw_context(ctx); struct intel_context *intel = intel_context(ctx); @@ -146,7 +146,7 @@ brw_begin_query(GLcontext *ctx, struct gl_query_object *q) * Begin the ARB_occlusion_query query on a query object. */ static void -brw_end_query(GLcontext *ctx, struct gl_query_object *q) +brw_end_query(struct gl_context *ctx, struct gl_query_object *q) { struct brw_context *brw = brw_context(ctx); struct intel_context *intel = intel_context(ctx); @@ -197,7 +197,7 @@ brw_end_query(GLcontext *ctx, struct gl_query_object *q) } } -static void brw_wait_query(GLcontext *ctx, struct gl_query_object *q) +static void brw_wait_query(struct gl_context *ctx, struct gl_query_object *q) { struct brw_query_object *query = (struct brw_query_object *)q; @@ -205,7 +205,7 @@ static void brw_wait_query(GLcontext *ctx, struct gl_query_object *q) query->Base.Ready = GL_TRUE; } -static void brw_check_query(GLcontext *ctx, struct gl_query_object *q) +static void brw_check_query(struct gl_context *ctx, struct gl_query_object *q) { struct brw_query_object *query = (struct brw_query_object *)q; diff --git a/src/mesa/drivers/dri/i965/brw_sf.c b/src/mesa/drivers/dri/i965/brw_sf.c index 7d005d278fb..7dbd70daaea 100644 --- a/src/mesa/drivers/dri/i965/brw_sf.c +++ b/src/mesa/drivers/dri/i965/brw_sf.c @@ -132,7 +132,7 @@ static void compile_sf_prog( struct brw_context *brw, */ static void upload_sf_prog(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_sf_prog_key key; memset(&key, 0, sizeof(key)); diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index 914f275cc67..6ad9e1b48a4 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -38,7 +38,7 @@ static void upload_sf_vp(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; struct brw_sf_viewport sfv; GLfloat y_scale, y_bias; @@ -139,7 +139,7 @@ struct brw_sf_unit_key { static void sf_unit_populate_key(struct brw_context *brw, struct brw_sf_unit_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; memset(key, 0, sizeof(*key)); /* CACHE_NEW_SF_PROG */ diff --git a/src/mesa/drivers/dri/i965/brw_state.c b/src/mesa/drivers/dri/i965/brw_state.c index 1e77e427d38..13b231d5cf5 100644 --- a/src/mesa/drivers/dri/i965/brw_state.c +++ b/src/mesa/drivers/dri/i965/brw_state.c @@ -28,7 +28,7 @@ #include "brw_context.h" void -brw_enable(GLcontext *ctx, GLenum cap, GLboolean state) +brw_enable(struct gl_context *ctx, GLenum cap, GLboolean state) { struct brw_context *brw = brw_context(ctx); @@ -40,7 +40,7 @@ brw_enable(GLcontext *ctx, GLenum cap, GLboolean state) } void -brw_depth_range(GLcontext *ctx, GLclampd nearval, GLclampd farval) +brw_depth_range(struct gl_context *ctx, GLclampd nearval, GLclampd farval) { struct brw_context *brw = brw_context(ctx); diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 1aadd5ca61d..73940a51569 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -336,7 +336,7 @@ brw_print_dirty_count(struct dirty_bit_map *bit_map, int32_t bits) */ void brw_validate_state( struct brw_context *brw ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; struct brw_state_flags *state = &brw->state.dirty; GLuint i; diff --git a/src/mesa/drivers/dri/i965/brw_tex.c b/src/mesa/drivers/dri/i965/brw_tex.c index e911b105b23..39dfd34f4c9 100644 --- a/src/mesa/drivers/dri/i965/brw_tex.c +++ b/src/mesa/drivers/dri/i965/brw_tex.c @@ -45,7 +45,7 @@ */ void brw_validate_textures( struct brw_context *brw ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; int i; diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index b0cfd4fe1e3..4a41c7a5176 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -43,7 +43,7 @@ static void do_vs_prog( struct brw_context *brw, struct brw_vertex_program *vp, struct brw_vs_prog_key *key ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; GLuint program_size; const GLuint *program; struct brw_vs_compile c; @@ -115,7 +115,7 @@ static void do_vs_prog( struct brw_context *brw, static void brw_upload_vs_prog(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct brw_vs_prog_key key; struct brw_vertex_program *vp = (struct brw_vertex_program *)brw->vertex_program; diff --git a/src/mesa/drivers/dri/i965/brw_vs_constval.c b/src/mesa/drivers/dri/i965/brw_vs_constval.c index 249a800bf4b..47cc0a7da7a 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_constval.c +++ b/src/mesa/drivers/dri/i965/brw_vs_constval.c @@ -190,7 +190,7 @@ static GLuint get_input_size(struct brw_context *brw, */ static void calc_wm_input_sizes( struct brw_context *brw ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; /* BRW_NEW_VERTEX_PROGRAM */ const struct brw_vertex_program *vp = brw_vertex_program_const(brw->vertex_program); diff --git a/src/mesa/drivers/dri/i965/brw_vs_state.c b/src/mesa/drivers/dri/i965/brw_vs_state.c index 9b2dd5b3d1c..ebae94269f9 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_state.c @@ -51,7 +51,7 @@ struct brw_vs_unit_key { static void vs_unit_populate_key(struct brw_context *brw, struct brw_vs_unit_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; memset(key, 0, sizeof(*key)); diff --git a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c index 0250a68d292..eabac511602 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c @@ -45,7 +45,7 @@ static void prepare_vs_constants(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; struct brw_vertex_program *vp = (struct brw_vertex_program *) brw->vertex_program; @@ -101,7 +101,7 @@ const struct brw_tracked_state brw_vs_constants = { * Sets brw->vs.surf_bo[surf] and brw->vp->const_buffer. */ static void -brw_update_vs_constant_surface( GLcontext *ctx, +brw_update_vs_constant_surface( struct gl_context *ctx, GLuint surf) { struct brw_context *brw = brw_context(ctx); @@ -151,7 +151,7 @@ prepare_vs_surfaces(struct brw_context *brw) */ static void upload_vs_surfaces(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; uint32_t *bind; int i; diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 2ea5967df12..7aad6caf719 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -216,7 +216,7 @@ static void brw_wm_populate_key( struct brw_context *brw, struct brw_wm_prog_key *key ) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; /* BRW_NEW_FRAGMENT_PROGRAM */ const struct brw_fragment_program *fp = (struct brw_fragment_program *)brw->fragment_program; diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index 97bcf3821a2..a094c45a7e0 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -467,10 +467,10 @@ void emit_xpd(struct brw_compile *p, const struct brw_reg *arg0, const struct brw_reg *arg1); -GLboolean brw_compile_shader(GLcontext *ctx, +GLboolean brw_compile_shader(struct gl_context *ctx, struct gl_shader *shader); -GLboolean brw_link_shader(GLcontext *ctx, struct gl_shader_program *prog); -struct gl_shader *brw_new_shader(GLcontext *ctx, GLuint name, GLuint type); -struct gl_shader_program *brw_new_shader_program(GLcontext *ctx, GLuint name); +GLboolean brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog); +struct gl_shader *brw_new_shader(struct gl_context *ctx, GLuint name, GLuint type); +struct gl_shader_program *brw_new_shader_program(struct gl_context *ctx, GLuint name); #endif diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c index f9c48140fb6..fea96d35381 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c @@ -233,7 +233,7 @@ static void brw_wm_sampler_populate_key(struct brw_context *brw, struct wm_sampler_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; int unit; char *last_entry_end = ((char*)&key->sampler_count) + sizeof(key->sampler_count); @@ -301,7 +301,7 @@ brw_wm_sampler_populate_key(struct brw_context *brw, */ static void upload_wm_samplers( struct brw_context *brw ) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct wm_sampler_key key; int i, sampler_key_size; diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index 6699d0a73e6..8cadedadfdc 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -58,7 +58,7 @@ struct brw_wm_unit_key { static void wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; const struct gl_fragment_program *fp = brw->fragment_program; const struct brw_fragment_program *bfp = (struct brw_fragment_program *) fp; struct intel_context *intel = &brw->intel; diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 37104f1f238..5588702afc3 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -209,7 +209,7 @@ brw_set_surface_tiling(struct brw_surface_state *surf, uint32_t tiling) } static void -brw_update_texture_surface( GLcontext *ctx, GLuint unit ) +brw_update_texture_surface( struct gl_context *ctx, GLuint unit ) { struct brw_context *brw = brw_context(ctx); struct gl_texture_object *tObj = ctx->Texture.Unit[unit]._Current; @@ -315,7 +315,7 @@ brw_create_constant_surface(struct brw_context *brw, static void prepare_wm_constants(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; struct brw_fragment_program *fp = (struct brw_fragment_program *) brw->fragment_program; @@ -407,7 +407,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw, unsigned int unit) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; drm_intel_bo *region_bo = NULL; struct intel_renderbuffer *irb = intel_renderbuffer(rb); struct intel_region *region = irb ? irb->region : NULL; @@ -572,7 +572,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw, static void prepare_wm_surfaces(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; int i; int nr_surfaces = 0; @@ -619,7 +619,7 @@ prepare_wm_surfaces(struct brw_context *brw) static void upload_wm_surfaces(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; GLuint i; /* _NEW_BUFFERS | _NEW_COLOR */ diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c index 26f1070a164..4a98e268624 100644 --- a/src/mesa/drivers/dri/i965/gen6_cc.c +++ b/src/mesa/drivers/dri/i965/gen6_cc.c @@ -49,7 +49,7 @@ static void blend_state_populate_key(struct brw_context *brw, struct gen6_blend_state_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; memset(key, 0, sizeof(*key)); @@ -181,7 +181,7 @@ static void color_calc_state_populate_key(struct brw_context *brw, struct gen6_color_calc_state_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; memset(key, 0, sizeof(*key)); diff --git a/src/mesa/drivers/dri/i965/gen6_clip_state.c b/src/mesa/drivers/dri/i965/gen6_clip_state.c index e8bca83e3a0..bf53146f11f 100644 --- a/src/mesa/drivers/dri/i965/gen6_clip_state.c +++ b/src/mesa/drivers/dri/i965/gen6_clip_state.c @@ -34,7 +34,7 @@ static void upload_clip_state(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; uint32_t depth_clamp = 0; uint32_t provoking; diff --git a/src/mesa/drivers/dri/i965/gen6_depthstencil.c b/src/mesa/drivers/dri/i965/gen6_depthstencil.c index d9eca9af354..96e6eade6b7 100644 --- a/src/mesa/drivers/dri/i965/gen6_depthstencil.c +++ b/src/mesa/drivers/dri/i965/gen6_depthstencil.c @@ -41,7 +41,7 @@ static void depth_stencil_state_populate_key(struct brw_context *brw, struct brw_depth_stencil_state_key *key) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; const unsigned back = ctx->Stencil._BackFace; memset(key, 0, sizeof(*key)); diff --git a/src/mesa/drivers/dri/i965/gen6_scissor_state.c b/src/mesa/drivers/dri/i965/gen6_scissor_state.c index 3d483c710ce..5684c2e44c8 100644 --- a/src/mesa/drivers/dri/i965/gen6_scissor_state.c +++ b/src/mesa/drivers/dri/i965/gen6_scissor_state.c @@ -33,7 +33,7 @@ static void prepare_scissor_state(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; const GLboolean render_to_fbo = (ctx->DrawBuffer->Name != 0); struct gen6_scissor_rect scissor; diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c index ba7f965c116..377b3a41bdd 100644 --- a/src/mesa/drivers/dri/i965/gen6_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c @@ -64,7 +64,7 @@ static void upload_sf_state(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; /* CACHE_NEW_VS_PROG */ uint32_t num_inputs = brw_count_bits(brw->vs.prog_data->outputs_written); uint32_t num_outputs = brw_count_bits(brw->fragment_program->Base.InputsRead); diff --git a/src/mesa/drivers/dri/i965/gen6_viewport_state.c b/src/mesa/drivers/dri/i965/gen6_viewport_state.c index 84bea323f8a..b515e7712ed 100644 --- a/src/mesa/drivers/dri/i965/gen6_viewport_state.c +++ b/src/mesa/drivers/dri/i965/gen6_viewport_state.c @@ -65,7 +65,7 @@ const struct brw_tracked_state gen6_clip_vp = { static void prepare_sf_vp(struct brw_context *brw) { - GLcontext *ctx = &brw->intel.ctx; + struct gl_context *ctx = &brw->intel.ctx; const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; struct brw_sf_viewport sfv; GLfloat y_scale, y_bias; diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index 50047a33a87..3eca4e971b1 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -37,7 +37,7 @@ static void upload_vs_state(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; const struct brw_vertex_program *vp = brw_vertex_program_const(brw->vertex_program); unsigned int nr_params = vp->program.Base.Parameters->NumParameters; diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c index 4a9df48ea4c..58102666354 100644 --- a/src/mesa/drivers/dri/i965/gen6_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c @@ -37,7 +37,7 @@ static void prepare_wm_constants(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; const struct brw_fragment_program *fp = brw_fragment_program_const(brw->fragment_program); @@ -81,7 +81,7 @@ static void upload_wm_state(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; const struct brw_fragment_program *fp = brw_fragment_program_const(brw->fragment_program); uint32_t dw2, dw4, dw5, dw6; diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index 2c85ad3c36f..a74e21720fb 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -210,7 +210,7 @@ intelEmitCopyBlit(struct intel_context *intel, * \param mask bitmask of BUFFER_BIT_* values indicating buffers to clear */ void -intelClearWithBlit(GLcontext *ctx, GLbitfield mask) +intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) { struct intel_context *intel = intel_context(ctx); struct gl_framebuffer *fb = ctx->DrawBuffer; diff --git a/src/mesa/drivers/dri/intel/intel_blit.h b/src/mesa/drivers/dri/intel/intel_blit.h index 70d277df3cd..01631465735 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.h +++ b/src/mesa/drivers/dri/intel/intel_blit.h @@ -33,7 +33,7 @@ extern void intelCopyBuffer(const __DRIdrawable * dpriv, const drm_clip_rect_t * rect); -extern void intelClearWithBlit(GLcontext * ctx, GLbitfield mask); +extern void intelClearWithBlit(struct gl_context * ctx, GLbitfield mask); GLboolean intelEmitCopyBlit(struct intel_context *intel, diff --git a/src/mesa/drivers/dri/intel/intel_buffer_objects.c b/src/mesa/drivers/dri/intel/intel_buffer_objects.c index 117d4daf3ba..1e99f9040af 100644 --- a/src/mesa/drivers/dri/intel/intel_buffer_objects.c +++ b/src/mesa/drivers/dri/intel/intel_buffer_objects.c @@ -40,7 +40,7 @@ #include "intel_regions.h" static GLboolean -intel_bufferobj_unmap(GLcontext * ctx, +intel_bufferobj_unmap(struct gl_context * ctx, GLenum target, struct gl_buffer_object *obj); /** Allocates a new drm_intel_bo to store the data for the buffer object. */ @@ -59,7 +59,7 @@ intel_bufferobj_alloc_buffer(struct intel_context *intel, * internal structure where somehow shared. */ static struct gl_buffer_object * -intel_bufferobj_alloc(GLcontext * ctx, GLuint name, GLenum target) +intel_bufferobj_alloc(struct gl_context * ctx, GLuint name, GLenum target) { struct intel_buffer_object *obj = CALLOC_STRUCT(intel_buffer_object); @@ -101,7 +101,7 @@ intel_bufferobj_cow(struct intel_context *intel, * Called via glDeleteBuffersARB(). */ static void -intel_bufferobj_free(GLcontext * ctx, struct gl_buffer_object *obj) +intel_bufferobj_free(struct gl_context * ctx, struct gl_buffer_object *obj) { struct intel_context *intel = intel_context(ctx); struct intel_buffer_object *intel_obj = intel_buffer_object(obj); @@ -136,7 +136,7 @@ intel_bufferobj_free(GLcontext * ctx, struct gl_buffer_object *obj) * \return GL_TRUE for success, GL_FALSE if out of memory */ static GLboolean -intel_bufferobj_data(GLcontext * ctx, +intel_bufferobj_data(struct gl_context * ctx, GLenum target, GLsizeiptrARB size, const GLvoid * data, @@ -193,7 +193,7 @@ intel_bufferobj_data(GLcontext * ctx, * Called via glBufferSubDataARB(). */ static void -intel_bufferobj_subdata(GLcontext * ctx, +intel_bufferobj_subdata(struct gl_context * ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, @@ -239,7 +239,7 @@ intel_bufferobj_subdata(GLcontext * ctx, * Called via glGetBufferSubDataARB(). */ static void -intel_bufferobj_get_subdata(GLcontext * ctx, +intel_bufferobj_get_subdata(struct gl_context * ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, @@ -260,7 +260,7 @@ intel_bufferobj_get_subdata(GLcontext * ctx, * Called via glMapBufferARB(). */ static void * -intel_bufferobj_map(GLcontext * ctx, +intel_bufferobj_map(struct gl_context * ctx, GLenum target, GLenum access, struct gl_buffer_object *obj) { @@ -322,7 +322,7 @@ intel_bufferobj_map(GLcontext * ctx, * and blit it into the real BO at unmap time. */ static void * -intel_bufferobj_map_range(GLcontext * ctx, +intel_bufferobj_map_range(struct gl_context * ctx, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, struct gl_buffer_object *obj) { @@ -415,7 +415,7 @@ intel_bufferobj_map_range(GLcontext * ctx, * would defeat the point. */ static void -intel_bufferobj_flush_mapped_range(GLcontext *ctx, GLenum target, +intel_bufferobj_flush_mapped_range(struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, struct gl_buffer_object *obj) { @@ -449,7 +449,7 @@ intel_bufferobj_flush_mapped_range(GLcontext *ctx, GLenum target, * Called via glUnmapBuffer(). */ static GLboolean -intel_bufferobj_unmap(GLcontext * ctx, +intel_bufferobj_unmap(struct gl_context * ctx, GLenum target, struct gl_buffer_object *obj) { struct intel_context *intel = intel_context(ctx); @@ -537,7 +537,7 @@ intel_bufferobj_buffer(struct intel_context *intel, } static void -intel_bufferobj_copy_subdata(GLcontext *ctx, +intel_bufferobj_copy_subdata(struct gl_context *ctx, struct gl_buffer_object *src, struct gl_buffer_object *dst, GLintptr read_offset, GLintptr write_offset, @@ -596,7 +596,7 @@ intel_bufferobj_copy_subdata(GLcontext *ctx, #if FEATURE_APPLE_object_purgeable static GLenum -intel_buffer_purgeable(GLcontext * ctx, +intel_buffer_purgeable(struct gl_context * ctx, drm_intel_bo *buffer, GLenum option) { @@ -609,7 +609,7 @@ intel_buffer_purgeable(GLcontext * ctx, } static GLenum -intel_buffer_object_purgeable(GLcontext * ctx, +intel_buffer_object_purgeable(struct gl_context * ctx, struct gl_buffer_object *obj, GLenum option) { @@ -636,7 +636,7 @@ intel_buffer_object_purgeable(GLcontext * ctx, } static GLenum -intel_texture_object_purgeable(GLcontext * ctx, +intel_texture_object_purgeable(struct gl_context * ctx, struct gl_texture_object *obj, GLenum option) { @@ -650,7 +650,7 @@ intel_texture_object_purgeable(GLcontext * ctx, } static GLenum -intel_render_object_purgeable(GLcontext * ctx, +intel_render_object_purgeable(struct gl_context * ctx, struct gl_renderbuffer *obj, GLenum option) { @@ -664,7 +664,7 @@ intel_render_object_purgeable(GLcontext * ctx, } static GLenum -intel_buffer_unpurgeable(GLcontext * ctx, +intel_buffer_unpurgeable(struct gl_context * ctx, drm_intel_bo *buffer, GLenum option) { @@ -678,7 +678,7 @@ intel_buffer_unpurgeable(GLcontext * ctx, } static GLenum -intel_buffer_object_unpurgeable(GLcontext * ctx, +intel_buffer_object_unpurgeable(struct gl_context * ctx, struct gl_buffer_object *obj, GLenum option) { @@ -686,7 +686,7 @@ intel_buffer_object_unpurgeable(GLcontext * ctx, } static GLenum -intel_texture_object_unpurgeable(GLcontext * ctx, +intel_texture_object_unpurgeable(struct gl_context * ctx, struct gl_texture_object *obj, GLenum option) { @@ -700,7 +700,7 @@ intel_texture_object_unpurgeable(GLcontext * ctx, } static GLenum -intel_render_object_unpurgeable(GLcontext * ctx, +intel_render_object_unpurgeable(struct gl_context * ctx, struct gl_renderbuffer *obj, GLenum option) { diff --git a/src/mesa/drivers/dri/intel/intel_buffers.c b/src/mesa/drivers/dri/intel/intel_buffers.c index 1bff344a456..ee551ef60d4 100644 --- a/src/mesa/drivers/dri/intel/intel_buffers.c +++ b/src/mesa/drivers/dri/intel/intel_buffers.c @@ -88,7 +88,7 @@ intel_check_front_buffer_rendering(struct intel_context *intel) * color buffers. */ void -intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb) +intel_draw_buffer(struct gl_context * ctx, struct gl_framebuffer *fb) { struct intel_context *intel = intel_context(ctx); struct intel_region *colorRegions[MAX_DRAW_BUFFERS], *depthRegion = NULL; @@ -262,7 +262,7 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb) static void -intelDrawBuffer(GLcontext * ctx, GLenum mode) +intelDrawBuffer(struct gl_context * ctx, GLenum mode) { if ((ctx->DrawBuffer != NULL) && (ctx->DrawBuffer->Name == 0)) { struct intel_context *const intel = intel_context(ctx); @@ -285,7 +285,7 @@ intelDrawBuffer(GLcontext * ctx, GLenum mode) static void -intelReadBuffer(GLcontext * ctx, GLenum mode) +intelReadBuffer(struct gl_context * ctx, GLenum mode) { if ((ctx->DrawBuffer != NULL) && (ctx->DrawBuffer->Name == 0)) { struct intel_context *const intel = intel_context(ctx); diff --git a/src/mesa/drivers/dri/intel/intel_buffers.h b/src/mesa/drivers/dri/intel/intel_buffers.h index abb86aade60..2d4613b2954 100644 --- a/src/mesa/drivers/dri/intel/intel_buffers.h +++ b/src/mesa/drivers/dri/intel/intel_buffers.h @@ -41,7 +41,7 @@ extern struct intel_region *intel_drawbuf_region(struct intel_context *intel); extern void intel_check_front_buffer_rendering(struct intel_context *intel); -extern void intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb); +extern void intel_draw_buffer(struct gl_context * ctx, struct gl_framebuffer *fb); extern void intelInitBufferFuncs(struct dd_function_table *functions); @@ -50,7 +50,7 @@ void intel_get_cliprects(struct intel_context *intel, unsigned int *num_cliprects, int *x_off, int *y_off); #ifdef I915 -void intelCalcViewport(GLcontext * ctx); +void intelCalcViewport(struct gl_context * ctx); #endif #endif /* INTEL_BUFFERS_H */ diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c index 3c221188660..d7814635b72 100644 --- a/src/mesa/drivers/dri/intel/intel_clear.c +++ b/src/mesa/drivers/dri/intel/intel_clear.c @@ -62,7 +62,7 @@ static const char *buffer_names[] = { * Called by ctx->Driver.Clear. */ static void -intelClear(GLcontext *ctx, GLbitfield mask) +intelClear(struct gl_context *ctx, GLbitfield mask) { struct intel_context *intel = intel_context(ctx); const GLuint colorMask = *((GLuint *) & ctx->Color.ColorMask[0]); diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index c3b5148fe75..7ace50bde97 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -67,7 +67,7 @@ int INTEL_DEBUG = (0); static const GLubyte * -intelGetString(GLcontext * ctx, GLenum name) +intelGetString(struct gl_context * ctx, GLenum name) { const struct intel_context *const intel = intel_context(ctx); const char *chipset; @@ -190,7 +190,7 @@ intelGetString(GLcontext * ctx, GLenum name) } static void -intel_flush_front(GLcontext *ctx) +intel_flush_front(struct gl_context *ctx) { struct intel_context *intel = intel_context(ctx); __DRIcontext *driContext = intel->driContext; @@ -478,7 +478,7 @@ intel_prepare_render(struct intel_context *intel) } static void -intel_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) +intel_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { struct intel_context *intel = intel_context(ctx); __DRIcontext *driContext = intel->driContext; @@ -527,7 +527,7 @@ static const struct dri_debug_control debug_control[] = { static void -intelInvalidateState(GLcontext * ctx, GLuint new_state) +intelInvalidateState(struct gl_context * ctx, GLuint new_state) { struct intel_context *intel = intel_context(ctx); @@ -544,7 +544,7 @@ intelInvalidateState(GLcontext * ctx, GLuint new_state) } void -intel_flush(GLcontext *ctx) +intel_flush(struct gl_context *ctx) { struct intel_context *intel = intel_context(ctx); @@ -559,7 +559,7 @@ intel_flush(GLcontext *ctx) } static void -intel_glFlush(GLcontext *ctx) +intel_glFlush(struct gl_context *ctx) { struct intel_context *intel = intel_context(ctx); @@ -569,7 +569,7 @@ intel_glFlush(GLcontext *ctx) } void -intelFinish(GLcontext * ctx) +intelFinish(struct gl_context * ctx) { struct gl_framebuffer *fb = ctx->DrawBuffer; int i; @@ -621,8 +621,8 @@ intelInitContext(struct intel_context *intel, void *sharedContextPrivate, struct dd_function_table *functions) { - GLcontext *ctx = &intel->ctx; - GLcontext *shareCtx = (GLcontext *) sharedContextPrivate; + struct gl_context *ctx = &intel->ctx; + struct gl_context *shareCtx = (struct gl_context *) sharedContextPrivate; __DRIscreen *sPriv = driContextPriv->driScreenPriv; struct intel_screen *intelScreen = sPriv->private; int bo_reuse_mode; @@ -737,7 +737,7 @@ intelInitContext(struct intel_context *intel, ctx->Const.MaxSamples = 1.0; /* reinitialize the context point state. - * It depend on constants in __GLcontextRec::Const + * It depend on constants in __struct gl_contextRec::Const */ _mesa_init_point(ctx); diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index e94ba94df27..46d10d74ba3 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -106,11 +106,11 @@ struct intel_sync_object { }; /** - * intel_context is derived from Mesa's context class: GLcontext. + * intel_context is derived from Mesa's context class: struct gl_context. */ struct intel_context { - GLcontext ctx; /**< base class, must be first field */ + struct gl_context ctx; /**< base class, must be first field */ struct { @@ -256,7 +256,7 @@ struct intel_context __DRIcontext *driContext; struct intel_screen *intelScreen; - void (*saved_viewport)(GLcontext * ctx, + void (*saved_viewport)(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height); /** @@ -388,8 +388,8 @@ extern GLboolean intelInitContext(struct intel_context *intel, void *sharedContextPrivate, struct dd_function_table *functions); -extern void intelFinish(GLcontext * ctx); -extern void intel_flush(GLcontext * ctx); +extern void intelFinish(struct gl_context * ctx); +extern void intel_flush(struct gl_context * ctx); extern void intelInitDriverFunctions(struct dd_function_table *functions); @@ -476,7 +476,7 @@ void i915_set_buf_info_for_region(uint32_t *state, struct intel_region *region, * These are better-typed than the macros used previously: */ static INLINE struct intel_context * -intel_context(GLcontext * ctx) +intel_context(struct gl_context * ctx) { return (struct intel_context *) ctx; } diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index 8d38a28bb84..974045730be 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -217,7 +217,7 @@ get_glsl_version() * extensions for a context. */ void -intelInitExtensions(GLcontext *ctx) +intelInitExtensions(struct gl_context *ctx) { struct intel_context *intel = intel_context(ctx); diff --git a/src/mesa/drivers/dri/intel/intel_extensions.h b/src/mesa/drivers/dri/intel/intel_extensions.h index 236442a4d66..fb2a846d39f 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.h +++ b/src/mesa/drivers/dri/intel/intel_extensions.h @@ -30,10 +30,10 @@ extern void -intelInitExtensions(GLcontext *ctx); +intelInitExtensions(struct gl_context *ctx); extern void -intelInitExtensionsES2(GLcontext *ctx); +intelInitExtensionsES2(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/intel/intel_extensions_es2.c b/src/mesa/drivers/dri/intel/intel_extensions_es2.c index ed5db20e38a..71c86339c72 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions_es2.c +++ b/src/mesa/drivers/dri/intel/intel_extensions_es2.c @@ -83,7 +83,7 @@ static const char *es2_extensions[] = { * extensions for a context. */ void -intelInitExtensionsES2(GLcontext *ctx) +intelInitExtensionsES2(struct gl_context *ctx) { int i; diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index a70c83b39da..862a13d2ea5 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -50,7 +50,7 @@ * Create a new framebuffer object. */ static struct gl_framebuffer * -intel_new_framebuffer(GLcontext * ctx, GLuint name) +intel_new_framebuffer(struct gl_context * ctx, GLuint name) { /* Only drawable state in intel_framebuffer at this time, just use Mesa's * class @@ -81,7 +81,7 @@ intel_delete_renderbuffer(struct gl_renderbuffer *rb) * Return a pointer to a specific pixel in a renderbuffer. */ static void * -intel_get_pointer(GLcontext * ctx, struct gl_renderbuffer *rb, +intel_get_pointer(struct gl_context * ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { /* By returning NULL we force all software rendering to go through @@ -96,7 +96,7 @@ intel_get_pointer(GLcontext * ctx, struct gl_renderbuffer *rb, * storage for a user-created renderbuffer. */ static GLboolean -intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb, +intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { @@ -216,7 +216,7 @@ intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb, #if FEATURE_OES_EGL_image static void -intel_image_target_renderbuffer_storage(GLcontext *ctx, +intel_image_target_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, void *image_handle) { @@ -252,7 +252,7 @@ intel_image_target_renderbuffer_storage(GLcontext *ctx, * Not used for user-created renderbuffers! */ static GLboolean -intel_alloc_window_storage(GLcontext * ctx, struct gl_renderbuffer *rb, +intel_alloc_window_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { ASSERT(rb->Name == 0); @@ -265,7 +265,7 @@ intel_alloc_window_storage(GLcontext * ctx, struct gl_renderbuffer *rb, static void -intel_resize_buffers(GLcontext *ctx, struct gl_framebuffer *fb, +intel_resize_buffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint width, GLuint height) { int i; @@ -293,7 +293,7 @@ intel_resize_buffers(GLcontext *ctx, struct gl_framebuffer *fb, /** Dummy function for gl_renderbuffer::AllocStorage() */ static GLboolean -intel_nop_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb, +intel_nop_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { _mesa_problem(ctx, "intel_op_alloc_storage should never be called."); @@ -396,7 +396,7 @@ intel_create_renderbuffer(gl_format format) * Typically called via glBindRenderbufferEXT(). */ static struct gl_renderbuffer * -intel_new_renderbuffer(GLcontext * ctx, GLuint name) +intel_new_renderbuffer(struct gl_context * ctx, GLuint name) { /*struct intel_context *intel = intel_context(ctx); */ struct intel_renderbuffer *irb; @@ -424,7 +424,7 @@ intel_new_renderbuffer(GLcontext * ctx, GLuint name) * Called via glBindFramebufferEXT(). */ static void -intel_bind_framebuffer(GLcontext * ctx, GLenum target, +intel_bind_framebuffer(struct gl_context * ctx, GLenum target, struct gl_framebuffer *fb, struct gl_framebuffer *fbread) { if (target == GL_FRAMEBUFFER_EXT || target == GL_DRAW_FRAMEBUFFER_EXT) { @@ -440,7 +440,7 @@ intel_bind_framebuffer(GLcontext * ctx, GLenum target, * Called via glFramebufferRenderbufferEXT(). */ static void -intel_framebuffer_renderbuffer(GLcontext * ctx, +intel_framebuffer_renderbuffer(struct gl_context * ctx, struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb) { @@ -454,7 +454,7 @@ intel_framebuffer_renderbuffer(GLcontext * ctx, static GLboolean -intel_update_wrapper(GLcontext *ctx, struct intel_renderbuffer *irb, +intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb, struct gl_texture_image *texImage) { if (texImage->TexFormat == MESA_FORMAT_ARGB8888) { @@ -535,7 +535,7 @@ intel_update_wrapper(GLcontext *ctx, struct intel_renderbuffer *irb, * This will have the region info needed for hardware rendering. */ static struct intel_renderbuffer * -intel_wrap_texture(GLcontext * ctx, struct gl_texture_image *texImage) +intel_wrap_texture(struct gl_context * ctx, struct gl_texture_image *texImage) { const GLuint name = ~0; /* not significant, but distinct for debugging */ struct intel_renderbuffer *irb; @@ -566,7 +566,7 @@ intel_wrap_texture(GLcontext * ctx, struct gl_texture_image *texImage) * before intel_finish_render_texture() is ever called. */ static void -intel_render_texture(GLcontext * ctx, +intel_render_texture(struct gl_context * ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att) { @@ -642,7 +642,7 @@ intel_render_texture(GLcontext * ctx, * Called by Mesa when rendering to a texture is done. */ static void -intel_finish_render_texture(GLcontext * ctx, +intel_finish_render_texture(struct gl_context * ctx, struct gl_renderbuffer_attachment *att) { struct intel_context *intel = intel_context(ctx); @@ -669,7 +669,7 @@ intel_finish_render_texture(GLcontext * ctx, * Do additional "completeness" testing of a framebuffer object. */ static void -intel_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb) +intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) { const struct intel_renderbuffer *depthRb = intel_get_renderbuffer(fb, BUFFER_DEPTH); diff --git a/src/mesa/drivers/dri/intel/intel_pixel.c b/src/mesa/drivers/dri/intel/intel_pixel.c index cb088e40329..60583ef4c0d 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel.c +++ b/src/mesa/drivers/dri/intel/intel_pixel.c @@ -55,7 +55,7 @@ effective_func(GLenum func, GLboolean src_alpha_is_one) * glDraw/CopyPixels. */ GLboolean -intel_check_blit_fragment_ops(GLcontext * ctx, GLboolean src_alpha_is_one) +intel_check_blit_fragment_ops(struct gl_context * ctx, GLboolean src_alpha_is_one) { if (ctx->NewState) _mesa_update_state(ctx); diff --git a/src/mesa/drivers/dri/intel/intel_pixel.h b/src/mesa/drivers/dri/intel/intel_pixel.h index 743b6497c52..aef0e609da6 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel.h +++ b/src/mesa/drivers/dri/intel/intel_pixel.h @@ -31,21 +31,21 @@ #include "main/mtypes.h" void intelInitPixelFuncs(struct dd_function_table *functions); -GLboolean intel_check_blit_fragment_ops(GLcontext * ctx, +GLboolean intel_check_blit_fragment_ops(struct gl_context * ctx, GLboolean src_alpha_is_one); GLboolean intel_check_blit_format(struct intel_region *region, GLenum format, GLenum type); -void intelReadPixels(GLcontext * ctx, +void intelReadPixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, GLvoid * pixels); -void intelDrawPixels(GLcontext * ctx, +void intelDrawPixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, @@ -53,12 +53,12 @@ void intelDrawPixels(GLcontext * ctx, const struct gl_pixelstore_attrib *unpack, const GLvoid * pixels); -void intelCopyPixels(GLcontext * ctx, +void intelCopyPixels(struct gl_context * ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint destx, GLint desty, GLenum type); -void intelBitmap(GLcontext * ctx, +void intelBitmap(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, diff --git a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c index 23410f063c4..63fb4b37b18 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c @@ -58,7 +58,7 @@ * PBO bitmaps. I think they are probably pretty rare though - I * wonder if Xgl uses them? */ -static const GLubyte *map_pbo( GLcontext *ctx, +static const GLubyte *map_pbo( struct gl_context *ctx, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ) @@ -167,7 +167,7 @@ y_flip(struct gl_framebuffer *fb, int y, int height) * Render a bitmap. */ static GLboolean -do_blit_bitmap( GLcontext *ctx, +do_blit_bitmap( struct gl_context *ctx, GLint dstx, GLint dsty, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, @@ -320,7 +320,7 @@ out: * - Chop bitmap up into 32x32 squares and render w/polygon stipple. */ void -intelBitmap(GLcontext * ctx, +intelBitmap(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, diff --git a/src/mesa/drivers/dri/intel/intel_pixel_copy.c b/src/mesa/drivers/dri/intel/intel_pixel_copy.c index 2008a4c2bec..c6b36ed4291 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_copy.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_copy.c @@ -76,7 +76,7 @@ copypix_src_region(struct intel_context *intel, GLenum type) * we allow Scissor. */ static GLboolean -intel_check_copypixel_blit_fragment_ops(GLcontext * ctx) +intel_check_copypixel_blit_fragment_ops(struct gl_context * ctx) { if (ctx->NewState) _mesa_update_state(ctx); @@ -102,7 +102,7 @@ intel_check_copypixel_blit_fragment_ops(GLcontext * ctx) * CopyPixels with the blitter. Don't support zooming, pixel transfer, etc. */ static GLboolean -do_blit_copypixels(GLcontext * ctx, +do_blit_copypixels(struct gl_context * ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type) @@ -198,7 +198,7 @@ out: void -intelCopyPixels(GLcontext * ctx, +intelCopyPixels(struct gl_context * ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint destx, GLint desty, GLenum type) diff --git a/src/mesa/drivers/dri/intel/intel_pixel_draw.c b/src/mesa/drivers/dri/intel/intel_pixel_draw.c index 470c4b9326b..2ec7ed8e269 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_draw.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_draw.c @@ -39,7 +39,7 @@ #include "intel_pixel.h" void -intelDrawPixels(GLcontext * ctx, +intelDrawPixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, diff --git a/src/mesa/drivers/dri/intel/intel_pixel_read.c b/src/mesa/drivers/dri/intel/intel_pixel_read.c index 21d2a7a93e2..b249f9a5a0b 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_read.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_read.c @@ -65,7 +65,7 @@ */ static GLboolean -do_blit_readpixels(GLcontext * ctx, +do_blit_readpixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, GLvoid * pixels) @@ -165,7 +165,7 @@ do_blit_readpixels(GLcontext * ctx, } void -intelReadPixels(GLcontext * ctx, +intelReadPixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, GLvoid * pixels) diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c index c8d55c92a0b..104cadf0f9e 100644 --- a/src/mesa/drivers/dri/intel/intel_span.c +++ b/src/mesa/drivers/dri/intel/intel_span.c @@ -246,7 +246,7 @@ intel_map_unmap_framebuffer(struct intel_context *intel, * Old note: Moved locking out to get reasonable span performance. */ void -intelSpanRenderStart(GLcontext * ctx) +intelSpanRenderStart(struct gl_context * ctx) { struct intel_context *intel = intel_context(ctx); GLuint i; @@ -273,7 +273,7 @@ intelSpanRenderStart(GLcontext * ctx) * the above function. */ void -intelSpanRenderFinish(GLcontext * ctx) +intelSpanRenderFinish(struct gl_context * ctx) { struct intel_context *intel = intel_context(ctx); GLuint i; @@ -294,7 +294,7 @@ intelSpanRenderFinish(GLcontext * ctx) void -intelInitSpanFuncs(GLcontext * ctx) +intelInitSpanFuncs(struct gl_context * ctx) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = intelSpanRenderStart; @@ -302,7 +302,7 @@ intelInitSpanFuncs(GLcontext * ctx) } void -intel_map_vertex_shader_textures(GLcontext *ctx) +intel_map_vertex_shader_textures(struct gl_context *ctx) { struct intel_context *intel = intel_context(ctx); int i; @@ -321,7 +321,7 @@ intel_map_vertex_shader_textures(GLcontext *ctx) } void -intel_unmap_vertex_shader_textures(GLcontext *ctx) +intel_unmap_vertex_shader_textures(struct gl_context *ctx) { struct intel_context *intel = intel_context(ctx); int i; diff --git a/src/mesa/drivers/dri/intel/intel_span.h b/src/mesa/drivers/dri/intel/intel_span.h index bffe109aa5b..aa8d08e843a 100644 --- a/src/mesa/drivers/dri/intel/intel_span.h +++ b/src/mesa/drivers/dri/intel/intel_span.h @@ -28,15 +28,15 @@ #ifndef _INTEL_SPAN_H #define _INTEL_SPAN_H -extern void intelInitSpanFuncs(GLcontext * ctx); +extern void intelInitSpanFuncs(struct gl_context * ctx); -extern void intelSpanRenderFinish(GLcontext * ctx); -extern void intelSpanRenderStart(GLcontext * ctx); +extern void intelSpanRenderFinish(struct gl_context * ctx); +extern void intelSpanRenderStart(struct gl_context * ctx); void intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb); void intel_renderbuffer_unmap(struct intel_context *intel, struct gl_renderbuffer *rb); -void intel_map_vertex_shader_textures(GLcontext *ctx); -void intel_unmap_vertex_shader_textures(GLcontext *ctx); +void intel_map_vertex_shader_textures(struct gl_context *ctx); +void intel_unmap_vertex_shader_textures(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/intel/intel_state.c b/src/mesa/drivers/dri/intel/intel_state.c index c5ef909dbf1..80598b7ef64 100644 --- a/src/mesa/drivers/dri/intel/intel_state.c +++ b/src/mesa/drivers/dri/intel/intel_state.c @@ -197,7 +197,7 @@ intel_translate_logic_op(GLenum opcode) /* Fallback to swrast for select and feedback. */ static void -intelRenderMode(GLcontext *ctx, GLenum mode) +intelRenderMode(struct gl_context *ctx, GLenum mode) { struct intel_context *intel = intel_context(ctx); FALLBACK(intel, INTEL_FALLBACK_RENDERMODE, (mode != GL_RENDER)); diff --git a/src/mesa/drivers/dri/intel/intel_syncobj.c b/src/mesa/drivers/dri/intel/intel_syncobj.c index c2d86432ff9..bbfac74b605 100644 --- a/src/mesa/drivers/dri/intel/intel_syncobj.c +++ b/src/mesa/drivers/dri/intel/intel_syncobj.c @@ -46,7 +46,7 @@ #include "intel_reg.h" static struct gl_sync_object * -intel_new_sync_object(GLcontext *ctx, GLuint id) +intel_new_sync_object(struct gl_context *ctx, GLuint id) { struct intel_sync_object *sync; @@ -56,7 +56,7 @@ intel_new_sync_object(GLcontext *ctx, GLuint id) } static void -intel_delete_sync_object(GLcontext *ctx, struct gl_sync_object *s) +intel_delete_sync_object(struct gl_context *ctx, struct gl_sync_object *s) { struct intel_sync_object *sync = (struct intel_sync_object *)s; @@ -65,7 +65,7 @@ intel_delete_sync_object(GLcontext *ctx, struct gl_sync_object *s) } static void -intel_fence_sync(GLcontext *ctx, struct gl_sync_object *s, +intel_fence_sync(struct gl_context *ctx, struct gl_sync_object *s, GLenum condition, GLbitfield flags) { struct intel_context *intel = intel_context(ctx); @@ -87,7 +87,7 @@ intel_fence_sync(GLcontext *ctx, struct gl_sync_object *s, * The fix would be a new kernel function to do the GTT transition with a * timeout. */ -static void intel_client_wait_sync(GLcontext *ctx, struct gl_sync_object *s, +static void intel_client_wait_sync(struct gl_context *ctx, struct gl_sync_object *s, GLbitfield flags, GLuint64 timeout) { struct intel_sync_object *sync = (struct intel_sync_object *)s; @@ -105,12 +105,12 @@ static void intel_client_wait_sync(GLcontext *ctx, struct gl_sync_object *s, * any batchbuffers coming after this waitsync will naturally not occur until * the previous one is done. */ -static void intel_server_wait_sync(GLcontext *ctx, struct gl_sync_object *s, +static void intel_server_wait_sync(struct gl_context *ctx, struct gl_sync_object *s, GLbitfield flags, GLuint64 timeout) { } -static void intel_check_sync(GLcontext *ctx, struct gl_sync_object *s) +static void intel_check_sync(struct gl_context *ctx, struct gl_sync_object *s) { struct intel_sync_object *sync = (struct intel_sync_object *)s; diff --git a/src/mesa/drivers/dri/intel/intel_tex.c b/src/mesa/drivers/dri/intel/intel_tex.c index e2bff0878a5..3d9a2549db0 100644 --- a/src/mesa/drivers/dri/intel/intel_tex.c +++ b/src/mesa/drivers/dri/intel/intel_tex.c @@ -10,7 +10,7 @@ #define FILE_DEBUG_FLAG DEBUG_TEXTURE static struct gl_texture_image * -intelNewTextureImage(GLcontext * ctx) +intelNewTextureImage(struct gl_context * ctx) { DBG("%s\n", __FUNCTION__); (void) ctx; @@ -19,7 +19,7 @@ intelNewTextureImage(GLcontext * ctx) static struct gl_texture_object * -intelNewTextureObject(GLcontext * ctx, GLuint name, GLenum target) +intelNewTextureObject(struct gl_context * ctx, GLuint name, GLenum target) { struct intel_texture_object *obj = CALLOC_STRUCT(intel_texture_object); @@ -30,7 +30,7 @@ intelNewTextureObject(GLcontext * ctx, GLuint name, GLenum target) } static void -intelDeleteTextureObject(GLcontext *ctx, +intelDeleteTextureObject(struct gl_context *ctx, struct gl_texture_object *texObj) { struct intel_context *intel = intel_context(ctx); @@ -44,7 +44,7 @@ intelDeleteTextureObject(GLcontext *ctx, static void -intelFreeTextureImageData(GLcontext * ctx, struct gl_texture_image *texImage) +intelFreeTextureImageData(struct gl_context * ctx, struct gl_texture_image *texImage) { struct intel_context *intel = intel_context(ctx); struct intel_texture_image *intelImage = intel_texture_image(texImage); @@ -150,7 +150,7 @@ timed_memcpy(void *dest, const void *src, size_t n) * map/unmap the base level texture image. */ static void -intelGenerateMipmap(GLcontext *ctx, GLenum target, +intelGenerateMipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { if (_mesa_meta_check_generate_mipmap_fallback(ctx, target, texObj)) { diff --git a/src/mesa/drivers/dri/intel/intel_tex.h b/src/mesa/drivers/dri/intel/intel_tex.h index cd77dd5b8e4..7906554e453 100644 --- a/src/mesa/drivers/dri/intel/intel_tex.h +++ b/src/mesa/drivers/dri/intel/intel_tex.h @@ -40,7 +40,7 @@ void intelInitTextureSubImageFuncs(struct dd_function_table *functions); void intelInitTextureCopyImageFuncs(struct dd_function_table *functions); -gl_format intelChooseTextureFormat(GLcontext *ctx, GLint internalFormat, +gl_format intelChooseTextureFormat(struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type); void intelSetTexBuffer(__DRIcontext *pDRICtx, diff --git a/src/mesa/drivers/dri/intel/intel_tex_copy.c b/src/mesa/drivers/dri/intel/intel_tex_copy.c index d59b8711f23..2d046fd52d9 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_copy.c +++ b/src/mesa/drivers/dri/intel/intel_tex_copy.c @@ -101,7 +101,7 @@ do_copy_texsubimage(struct intel_context *intel, GLint dstx, GLint dsty, GLint x, GLint y, GLsizei width, GLsizei height) { - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; const struct intel_region *src = get_teximage_source(intel, internalFormat); if (!intelImage->mt || !src || !src->buffer) { @@ -172,7 +172,7 @@ do_copy_texsubimage(struct intel_context *intel, static void -intelCopyTexImage1D(GLcontext * ctx, GLenum target, GLint level, +intelCopyTexImage1D(struct gl_context * ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border) { @@ -220,7 +220,7 @@ intelCopyTexImage1D(GLcontext * ctx, GLenum target, GLint level, static void -intelCopyTexImage2D(GLcontext * ctx, GLenum target, GLint level, +intelCopyTexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) @@ -269,7 +269,7 @@ intelCopyTexImage2D(GLcontext * ctx, GLenum target, GLint level, static void -intelCopyTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, +intelCopyTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); @@ -295,7 +295,7 @@ intelCopyTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, static void -intelCopyTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, +intelCopyTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c index 97b26efcb7c..9d73a2fb375 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_format.c +++ b/src/mesa/drivers/dri/intel/intel_tex_format.c @@ -15,7 +15,7 @@ * immediately after sampling... */ gl_format -intelChooseTextureFormat(GLcontext * ctx, GLint internalFormat, +intelChooseTextureFormat(struct gl_context * ctx, GLint internalFormat, GLenum format, GLenum type) { struct intel_context *intel = intel_context(ctx); diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index 187e537aacb..35f3d7d3829 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -300,7 +300,7 @@ try_pbo_zcopy(struct intel_context *intel, static void -intelTexImage(GLcontext * ctx, +intelTexImage(struct gl_context * ctx, GLint dims, GLenum target, GLint level, GLint internalFormat, @@ -539,7 +539,7 @@ intelTexImage(GLcontext * ctx, static void -intelTexImage3D(GLcontext * ctx, +intelTexImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, @@ -556,7 +556,7 @@ intelTexImage3D(GLcontext * ctx, static void -intelTexImage2D(GLcontext * ctx, +intelTexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, @@ -572,7 +572,7 @@ intelTexImage2D(GLcontext * ctx, static void -intelTexImage1D(GLcontext * ctx, +intelTexImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, @@ -588,7 +588,7 @@ intelTexImage1D(GLcontext * ctx, static void -intelCompressedTexImage2D( GLcontext *ctx, GLenum target, GLint level, +intelCompressedTexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -606,7 +606,7 @@ intelCompressedTexImage2D( GLcontext *ctx, GLenum target, GLint level, * then unmap it. */ static void -intel_get_tex_image(GLcontext * ctx, GLenum target, GLint level, +intel_get_tex_image(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage, GLboolean compressed) @@ -666,7 +666,7 @@ intel_get_tex_image(GLcontext * ctx, GLenum target, GLint level, static void -intelGetTexImage(GLcontext * ctx, GLenum target, GLint level, +intelGetTexImage(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -677,7 +677,7 @@ intelGetTexImage(GLcontext * ctx, GLenum target, GLint level, static void -intelGetCompressedTexImage(GLcontext *ctx, GLenum target, GLint level, +intelGetCompressedTexImage(struct gl_context *ctx, GLenum target, GLint level, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -693,7 +693,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, { struct gl_framebuffer *fb = dPriv->driverPrivate; struct intel_context *intel = pDRICtx->driverPrivate; - GLcontext *ctx = &intel->ctx; + struct gl_context *ctx = &intel->ctx; struct intel_texture_object *intelObj; struct intel_texture_image *intelImage; struct intel_mipmap_tree *mt; @@ -774,7 +774,7 @@ intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv) #if FEATURE_OES_EGL_image static void -intel_image_target_texture_2d(GLcontext *ctx, GLenum target, +intel_image_target_texture_2d(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, struct gl_texture_image *texImage, GLeglImageOES image_handle) diff --git a/src/mesa/drivers/dri/intel/intel_tex_subimage.c b/src/mesa/drivers/dri/intel/intel_tex_subimage.c index b7ce50a8207..c9b992a21b9 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/intel/intel_tex_subimage.c @@ -40,7 +40,7 @@ #define FILE_DEBUG_FLAG DEBUG_TEXTURE static void -intelTexSubimage(GLcontext * ctx, +intelTexSubimage(struct gl_context * ctx, GLint dims, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, @@ -189,7 +189,7 @@ intelTexSubimage(GLcontext * ctx, static void -intelTexSubImage3D(GLcontext * ctx, +intelTexSubImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, @@ -209,7 +209,7 @@ intelTexSubImage3D(GLcontext * ctx, static void -intelTexSubImage2D(GLcontext * ctx, +intelTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -229,7 +229,7 @@ intelTexSubImage2D(GLcontext * ctx, static void -intelTexSubImage1D(GLcontext * ctx, +intelTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, @@ -248,7 +248,7 @@ intelTexSubImage1D(GLcontext * ctx, } static void -intelCompressedTexSubImage2D(GLcontext * ctx, +intelCompressedTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, diff --git a/src/mesa/drivers/dri/mach64/mach64_context.c b/src/mesa/drivers/dri/mach64/mach64_context.c index 0d4f895dd4a..7c989df5ec0 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.c +++ b/src/mesa/drivers/dri/mach64/mach64_context.c @@ -90,7 +90,7 @@ GLboolean mach64CreateContext( gl_api api, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; __DRIscreen *driScreen = driContextPriv->driScreenPriv; struct dd_function_table functions; mach64ContextPtr mmesa; diff --git a/src/mesa/drivers/dri/mach64/mach64_context.h b/src/mesa/drivers/dri/mach64/mach64_context.h index 3d7943db01b..11e8f53b283 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.h +++ b/src/mesa/drivers/dri/mach64/mach64_context.h @@ -161,7 +161,7 @@ struct mach64_texture_object { typedef struct mach64_texture_object mach64TexObj, *mach64TexObjPtr; struct mach64_context { - GLcontext *glCtx; + struct gl_context *glCtx; /* Driver and hardware state management */ diff --git a/src/mesa/drivers/dri/mach64/mach64_dd.c b/src/mesa/drivers/dri/mach64/mach64_dd.c index d464f6c5189..9cb2c107597 100644 --- a/src/mesa/drivers/dri/mach64/mach64_dd.c +++ b/src/mesa/drivers/dri/mach64/mach64_dd.c @@ -55,7 +55,7 @@ static void mach64DDGetBufferSize( struct gl_framebuffer *buffer, /* Return various strings for glGetString(). */ -static const GLubyte *mach64DDGetString( GLcontext *ctx, GLenum name ) +static const GLubyte *mach64DDGetString( struct gl_context *ctx, GLenum name ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); static char buffer[128]; @@ -84,7 +84,7 @@ static const GLubyte *mach64DDGetString( GLcontext *ctx, GLenum name ) * hardware. All commands that are normally sent to the ring are * already considered `flushed'. */ -static void mach64DDFlush( GLcontext *ctx ) +static void mach64DDFlush( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -107,7 +107,7 @@ static void mach64DDFlush( GLcontext *ctx ) /* Make sure all commands have been sent to the hardware and have * completed processing. */ -static void mach64DDFinish( GLcontext *ctx ) +static void mach64DDFinish( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/mach64/mach64_ioctl.c b/src/mesa/drivers/dri/mach64/mach64_ioctl.c index 03587c44fda..0146e0d0515 100644 --- a/src/mesa/drivers/dri/mach64/mach64_ioctl.c +++ b/src/mesa/drivers/dri/mach64/mach64_ioctl.c @@ -665,7 +665,7 @@ void mach64PerformanceBoxesLocked( mach64ContextPtr mmesa ) * Buffer clear */ -static void mach64DDClear( GLcontext *ctx, GLbitfield mask ) +static void mach64DDClear( struct gl_context *ctx, GLbitfield mask ) { mach64ContextPtr mmesa = MACH64_CONTEXT( ctx ); __DRIdrawable *dPriv = mmesa->driDrawable; diff --git a/src/mesa/drivers/dri/mach64/mach64_native_vb.c b/src/mesa/drivers/dri/mach64/mach64_native_vb.c index 816682ec5f1..d8426ddee1c 100644 --- a/src/mesa/drivers/dri/mach64/mach64_native_vb.c +++ b/src/mesa/drivers/dri/mach64/mach64_native_vb.c @@ -35,7 +35,7 @@ #define LOCALVARS #endif -void TAG(translate_vertex)(GLcontext *ctx, +void TAG(translate_vertex)(struct gl_context *ctx, const VERTEX *src, SWvertex *dst) { @@ -108,7 +108,7 @@ void TAG(translate_vertex)(GLcontext *ctx, -void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v ) +void TAG(print_vertex)( struct gl_context *ctx, const VERTEX *v ) { LOCALVARS GLuint format = GET_VERTEX_FORMAT(); @@ -199,7 +199,7 @@ void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v ) #define GET_COLOR(ptr, idx) ((ptr)->data[idx]) -INTERP_QUALIFIER void TAG(interp_extras)( GLcontext *ctx, +INTERP_QUALIFIER void TAG(interp_extras)( struct gl_context *ctx, GLfloat t, GLuint dst, GLuint out, GLuint in, GLboolean force_boundary ) @@ -230,7 +230,7 @@ INTERP_QUALIFIER void TAG(interp_extras)( GLcontext *ctx, INTERP_VERTEX(ctx, t, dst, out, in, force_boundary); } -INTERP_QUALIFIER void TAG(copy_pv_extras)( GLcontext *ctx, +INTERP_QUALIFIER void TAG(copy_pv_extras)( struct gl_context *ctx, GLuint dst, GLuint src ) { LOCALVARS diff --git a/src/mesa/drivers/dri/mach64/mach64_native_vbtmp.h b/src/mesa/drivers/dri/mach64/mach64_native_vbtmp.h index 6e5fa3520e1..8345f5cdbcc 100644 --- a/src/mesa/drivers/dri/mach64/mach64_native_vbtmp.h +++ b/src/mesa/drivers/dri/mach64/mach64_native_vbtmp.h @@ -52,7 +52,7 @@ #define LOCALVARS #endif -static void TAG(emit)( GLcontext *ctx, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest, GLuint stride ) @@ -312,7 +312,7 @@ static void TAG(emit)( GLcontext *ctx, #if DO_XYZW && DO_RGBA -static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) +static GLboolean TAG(check_tex_sizes)( struct gl_context *ctx ) { LOCALVARS struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -344,7 +344,7 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) } -static void TAG(interp)( GLcontext *ctx, +static void TAG(interp)( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ) @@ -511,7 +511,7 @@ static void TAG(interp)( GLcontext *ctx, #endif /* DO_RGBA && DO_XYZW */ -static void TAG(copy_pv)( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void TAG(copy_pv)( struct gl_context *ctx, GLuint edst, GLuint esrc ) { #if DO_SPEC || DO_FOG || DO_RGBA LOCALVARS diff --git a/src/mesa/drivers/dri/mach64/mach64_screen.c b/src/mesa/drivers/dri/mach64/mach64_screen.c index b5ed03910c9..956bccbcd6c 100644 --- a/src/mesa/drivers/dri/mach64/mach64_screen.c +++ b/src/mesa/drivers/dri/mach64/mach64_screen.c @@ -379,7 +379,7 @@ mach64SwapBuffers(__DRIdrawable *dPriv) { if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { mach64ContextPtr mmesa; - GLcontext *ctx; + struct gl_context *ctx; mmesa = (mach64ContextPtr) dPriv->driContextPriv->driverPrivate; ctx = mmesa->glCtx; if (ctx->Visual.doubleBufferMode) { diff --git a/src/mesa/drivers/dri/mach64/mach64_span.c b/src/mesa/drivers/dri/mach64/mach64_span.c index aff938debf7..4b853c2af34 100644 --- a/src/mesa/drivers/dri/mach64/mach64_span.c +++ b/src/mesa/drivers/dri/mach64/mach64_span.c @@ -128,21 +128,21 @@ #include "depthtmp.h" -static void mach64SpanRenderStart( GLcontext *ctx ) +static void mach64SpanRenderStart( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); LOCK_HARDWARE( mmesa ); FINISH_DMA_LOCKED( mmesa ); } -static void mach64SpanRenderFinish( GLcontext *ctx ) +static void mach64SpanRenderFinish( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); _swrast_flush( ctx ); UNLOCK_HARDWARE( mmesa ); } -void mach64DDInitSpanFuncs( GLcontext *ctx ) +void mach64DDInitSpanFuncs( struct gl_context *ctx ) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = mach64SpanRenderStart; diff --git a/src/mesa/drivers/dri/mach64/mach64_span.h b/src/mesa/drivers/dri/mach64/mach64_span.h index c0120ce9b03..2742e93c8e2 100644 --- a/src/mesa/drivers/dri/mach64/mach64_span.h +++ b/src/mesa/drivers/dri/mach64/mach64_span.h @@ -33,7 +33,7 @@ #include "drirenderbuffer.h" -extern void mach64DDInitSpanFuncs( GLcontext *ctx ); +extern void mach64DDInitSpanFuncs( struct gl_context *ctx ); extern void mach64SetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); diff --git a/src/mesa/drivers/dri/mach64/mach64_state.c b/src/mesa/drivers/dri/mach64/mach64_state.c index 69a5aea02ce..8e795955c2c 100644 --- a/src/mesa/drivers/dri/mach64/mach64_state.c +++ b/src/mesa/drivers/dri/mach64/mach64_state.c @@ -48,7 +48,7 @@ * Alpha blending */ -static void mach64UpdateAlphaMode( GLcontext *ctx ) +static void mach64UpdateAlphaMode( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint a = mmesa->setup.alpha_tst_cntl; @@ -185,7 +185,7 @@ static void mach64UpdateAlphaMode( GLcontext *ctx ) } } -static void mach64DDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) +static void mach64DDAlphaFunc( struct gl_context *ctx, GLenum func, GLfloat ref ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -193,7 +193,7 @@ static void mach64DDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) mmesa->new_state |= MACH64_NEW_ALPHA; } -static void mach64DDBlendEquationSeparate( GLcontext *ctx, +static void mach64DDBlendEquationSeparate( struct gl_context *ctx, GLenum modeRGB, GLenum modeA ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -214,7 +214,7 @@ static void mach64DDBlendEquationSeparate( GLcontext *ctx, mmesa->new_state |= MACH64_NEW_ALPHA; } -static void mach64DDBlendFuncSeparate( GLcontext *ctx, +static void mach64DDBlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -229,7 +229,7 @@ static void mach64DDBlendFuncSeparate( GLcontext *ctx, * Depth testing */ -static void mach64UpdateZMode( GLcontext *ctx ) +static void mach64UpdateZMode( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint z = mmesa->setup.z_cntl; @@ -285,7 +285,7 @@ static void mach64UpdateZMode( GLcontext *ctx ) } } -static void mach64DDDepthFunc( GLcontext *ctx, GLenum func ) +static void mach64DDDepthFunc( struct gl_context *ctx, GLenum func ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -293,7 +293,7 @@ static void mach64DDDepthFunc( GLcontext *ctx, GLenum func ) mmesa->new_state |= MACH64_NEW_DEPTH; } -static void mach64DDDepthMask( GLcontext *ctx, GLboolean flag ) +static void mach64DDDepthMask( struct gl_context *ctx, GLboolean flag ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -301,7 +301,7 @@ static void mach64DDDepthMask( GLcontext *ctx, GLboolean flag ) mmesa->new_state |= MACH64_NEW_DEPTH; } -static void mach64DDClearDepth( GLcontext *ctx, GLclampd d ) +static void mach64DDClearDepth( struct gl_context *ctx, GLclampd d ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -315,7 +315,7 @@ static void mach64DDClearDepth( GLcontext *ctx, GLclampd d ) * Fog */ -static void mach64UpdateFogAttrib( GLcontext *ctx ) +static void mach64UpdateFogAttrib( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -366,7 +366,7 @@ static void mach64UpdateFogAttrib( GLcontext *ctx ) } -static void mach64DDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) +static void mach64DDFogfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -379,7 +379,7 @@ static void mach64DDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) * Clipping */ -static void mach64UpdateClipping( GLcontext *ctx ) +static void mach64UpdateClipping( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); mach64ScreenPtr mach64Screen = mmesa->mach64Screen; @@ -452,7 +452,7 @@ static void mach64UpdateClipping( GLcontext *ctx ) } } -static void mach64DDScissor( GLcontext *ctx, +static void mach64DDScissor( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -466,7 +466,7 @@ static void mach64DDScissor( GLcontext *ctx, * Culling */ -static void mach64UpdateCull( GLcontext *ctx ) +static void mach64UpdateCull( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLfloat backface_sign = 1; @@ -495,7 +495,7 @@ static void mach64UpdateCull( GLcontext *ctx ) } -static void mach64DDCullFace( GLcontext *ctx, GLenum mode ) +static void mach64DDCullFace( struct gl_context *ctx, GLenum mode ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -503,7 +503,7 @@ static void mach64DDCullFace( GLcontext *ctx, GLenum mode ) mmesa->new_state |= MACH64_NEW_CULL; } -static void mach64DDFrontFace( GLcontext *ctx, GLenum mode ) +static void mach64DDFrontFace( struct gl_context *ctx, GLenum mode ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -516,7 +516,7 @@ static void mach64DDFrontFace( GLcontext *ctx, GLenum mode ) * Masks */ -static void mach64UpdateMasks( GLcontext *ctx ) +static void mach64UpdateMasks( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint mask = 0xffffffff; @@ -536,7 +536,7 @@ static void mach64UpdateMasks( GLcontext *ctx ) } } -static void mach64DDColorMask( GLcontext *ctx, +static void mach64DDColorMask( struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -555,7 +555,7 @@ static void mach64DDColorMask( GLcontext *ctx, * sense to break them out of the core texture state update routines. */ -static void mach64UpdateSpecularLighting( GLcontext *ctx ) +static void mach64UpdateSpecularLighting( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint a = mmesa->setup.alpha_tst_cntl; @@ -578,7 +578,7 @@ static void mach64UpdateSpecularLighting( GLcontext *ctx ) } } -static void mach64DDLightModelfv( GLcontext *ctx, GLenum pname, +static void mach64DDLightModelfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -589,7 +589,7 @@ static void mach64DDLightModelfv( GLcontext *ctx, GLenum pname, } } -static void mach64DDShadeModel( GLcontext *ctx, GLenum mode ) +static void mach64DDShadeModel( struct gl_context *ctx, GLenum mode ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint s = mmesa->setup.setup_cntl; @@ -621,7 +621,7 @@ static void mach64DDShadeModel( GLcontext *ctx, GLenum mode ) */ -void mach64CalcViewport( GLcontext *ctx ) +void mach64CalcViewport( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -639,14 +639,14 @@ void mach64CalcViewport( GLcontext *ctx ) mmesa->SetupNewInputs = ~0; } -static void mach64Viewport( GLcontext *ctx, +static void mach64Viewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { mach64CalcViewport( ctx ); } -static void mach64DepthRange( GLcontext *ctx, +static void mach64DepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { mach64CalcViewport( ctx ); @@ -657,7 +657,7 @@ static void mach64DepthRange( GLcontext *ctx, * Miscellaneous */ -static void mach64DDClearColor( GLcontext *ctx, +static void mach64DDClearColor( struct gl_context *ctx, const GLfloat color[4] ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -672,7 +672,7 @@ static void mach64DDClearColor( GLcontext *ctx, c[0], c[1], c[2], c[3] ); } -static void mach64DDLogicOpCode( GLcontext *ctx, GLenum opcode ) +static void mach64DDLogicOpCode( struct gl_context *ctx, GLenum opcode ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -683,7 +683,7 @@ static void mach64DDLogicOpCode( GLcontext *ctx, GLenum opcode ) } } -void mach64SetCliprects( GLcontext *ctx, GLenum mode ) +void mach64SetCliprects( struct gl_context *ctx, GLenum mode ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); __DRIdrawable *dPriv = mmesa->driDrawable; @@ -717,7 +717,7 @@ void mach64SetCliprects( GLcontext *ctx, GLenum mode ) mmesa->dirty |= MACH64_UPLOAD_CLIPRECTS; } -static void mach64DDDrawBuffer( GLcontext *ctx, GLenum mode ) +static void mach64DDDrawBuffer( struct gl_context *ctx, GLenum mode ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -755,7 +755,7 @@ static void mach64DDDrawBuffer( GLcontext *ctx, GLenum mode ) mmesa->dirty |= MACH64_UPLOAD_DST_OFF_PITCH; } -static void mach64DDReadBuffer( GLcontext *ctx, GLenum mode ) +static void mach64DDReadBuffer( struct gl_context *ctx, GLenum mode ) { /* nothing, until we implement h/w glRead/CopyPixels or CopyTexImage */ } @@ -764,7 +764,7 @@ static void mach64DDReadBuffer( GLcontext *ctx, GLenum mode ) * State enable/disable */ -static void mach64DDEnable( GLcontext *ctx, GLenum cap, GLboolean state ) +static void mach64DDEnable( struct gl_context *ctx, GLenum cap, GLboolean state ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -867,7 +867,7 @@ static void mach64DDEnable( GLcontext *ctx, GLenum cap, GLboolean state ) * Render mode */ -static void mach64DDRenderMode( GLcontext *ctx, GLenum mode ) +static void mach64DDRenderMode( struct gl_context *ctx, GLenum mode ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); FALLBACK( mmesa, MACH64_FALLBACK_RENDER_MODE, (mode != GL_RENDER) ); @@ -971,7 +971,7 @@ static void mach64DDPrintState( const char *msg, GLuint flags ) } /* Update the hardware state */ -void mach64DDUpdateHWState( GLcontext *ctx ) +void mach64DDUpdateHWState( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); int new_state = mmesa->new_state; @@ -1018,7 +1018,7 @@ void mach64DDUpdateHWState( GLcontext *ctx ) } -static void mach64DDInvalidateState( GLcontext *ctx, GLuint new_state ) +static void mach64DDInvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -1152,7 +1152,7 @@ void mach64DDInitState( mach64ContextPtr mmesa ) /* Initialize the driver's state functions. */ -void mach64DDInitStateFuncs( GLcontext *ctx ) +void mach64DDInitStateFuncs( struct gl_context *ctx ) { ctx->Driver.UpdateState = mach64DDInvalidateState; diff --git a/src/mesa/drivers/dri/mach64/mach64_state.h b/src/mesa/drivers/dri/mach64/mach64_state.h index 23081cb2fe9..41c4d01d1df 100644 --- a/src/mesa/drivers/dri/mach64/mach64_state.h +++ b/src/mesa/drivers/dri/mach64/mach64_state.h @@ -34,13 +34,13 @@ #include "mach64_context.h" extern void mach64DDInitState( mach64ContextPtr mmesa ); -extern void mach64DDInitStateFuncs( GLcontext *ctx ); +extern void mach64DDInitStateFuncs( struct gl_context *ctx ); -extern void mach64SetCliprects( GLcontext *ctx, GLenum mode ); -extern void mach64CalcViewport( GLcontext *ctx ); +extern void mach64SetCliprects( struct gl_context *ctx, GLenum mode ); +extern void mach64CalcViewport( struct gl_context *ctx ); -extern void mach64DDUpdateState( GLcontext *ctx ); -extern void mach64DDUpdateHWState( GLcontext *ctx ); +extern void mach64DDUpdateState( struct gl_context *ctx ); +extern void mach64DDUpdateHWState( struct gl_context *ctx ); extern void mach64EmitHwStateLocked( mach64ContextPtr mmesa ); diff --git a/src/mesa/drivers/dri/mach64/mach64_tex.c b/src/mesa/drivers/dri/mach64/mach64_tex.c index 09367be5b42..68d273a3e75 100644 --- a/src/mesa/drivers/dri/mach64/mach64_tex.c +++ b/src/mesa/drivers/dri/mach64/mach64_tex.c @@ -133,7 +133,7 @@ mach64AllocTexObj( struct gl_texture_object *texObj ) /* Called by the _mesa_store_teximage[123]d() functions. */ static gl_format -mach64ChooseTextureFormat( GLcontext *ctx, GLint internalFormat, +mach64ChooseTextureFormat( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -241,7 +241,7 @@ mach64ChooseTextureFormat( GLcontext *ctx, GLint internalFormat, } } -static void mach64TexImage1D( GLcontext *ctx, GLenum target, GLint level, +static void mach64TexImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -271,7 +271,7 @@ static void mach64TexImage1D( GLcontext *ctx, GLenum target, GLint level, mmesa->new_state |= MACH64_NEW_TEXTURE; } -static void mach64TexSubImage1D( GLcontext *ctx, +static void mach64TexSubImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -304,7 +304,7 @@ static void mach64TexSubImage1D( GLcontext *ctx, mmesa->new_state |= MACH64_NEW_TEXTURE; } -static void mach64TexImage2D( GLcontext *ctx, GLenum target, GLint level, +static void mach64TexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -334,7 +334,7 @@ static void mach64TexImage2D( GLcontext *ctx, GLenum target, GLint level, mmesa->new_state |= MACH64_NEW_TEXTURE; } -static void mach64TexSubImage2D( GLcontext *ctx, +static void mach64TexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -371,7 +371,7 @@ static void mach64TexSubImage2D( GLcontext *ctx, * Device Driver API texture functions */ -static void mach64DDTexEnv( GLcontext *ctx, GLenum target, +static void mach64DDTexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -425,7 +425,7 @@ static void mach64DDTexEnv( GLcontext *ctx, GLenum target, } } -static void mach64DDTexParameter( GLcontext *ctx, GLenum target, +static void mach64DDTexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat *params ) { @@ -489,7 +489,7 @@ static void mach64DDTexParameter( GLcontext *ctx, GLenum target, mmesa->new_state |= MACH64_NEW_TEXTURE; } -static void mach64DDBindTexture( GLcontext *ctx, GLenum target, +static void mach64DDBindTexture( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -510,7 +510,7 @@ static void mach64DDBindTexture( GLcontext *ctx, GLenum target, mmesa->new_state |= MACH64_NEW_TEXTURE; } -static void mach64DDDeleteTexture( GLcontext *ctx, +static void mach64DDDeleteTexture( struct gl_context *ctx, struct gl_texture_object *tObj ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -537,7 +537,7 @@ static void mach64DDDeleteTexture( GLcontext *ctx, * texture object from the core mesa gl_texture_object. Not done at this time. */ static struct gl_texture_object * -mach64NewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +mach64NewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; obj = _mesa_new_texture_object(ctx, name, target); diff --git a/src/mesa/drivers/dri/mach64/mach64_tex.h b/src/mesa/drivers/dri/mach64/mach64_tex.h index 8e0b23ed15b..03699828538 100644 --- a/src/mesa/drivers/dri/mach64/mach64_tex.h +++ b/src/mesa/drivers/dri/mach64/mach64_tex.h @@ -32,7 +32,7 @@ #ifndef __MACH64_TEX_H__ #define __MACH64_TEX_H__ -extern void mach64UpdateTextureState( GLcontext *ctx ); +extern void mach64UpdateTextureState( struct gl_context *ctx ); extern void mach64UploadTexImages( mach64ContextPtr mach64ctx, mach64TexObjPtr t ); diff --git a/src/mesa/drivers/dri/mach64/mach64_texstate.c b/src/mesa/drivers/dri/mach64/mach64_texstate.c index adf774ec194..70365c8461f 100644 --- a/src/mesa/drivers/dri/mach64/mach64_texstate.c +++ b/src/mesa/drivers/dri/mach64/mach64_texstate.c @@ -108,7 +108,7 @@ static void mach64SetTexImages( mach64ContextPtr mmesa, t->maxLog2 = baseImage->MaxLog2; } -static void mach64UpdateTextureEnv( GLcontext *ctx, int unit ) +static void mach64UpdateTextureEnv( struct gl_context *ctx, int unit ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLint source = mmesa->tmu_source[unit]; @@ -284,7 +284,7 @@ static void mach64UpdateTextureEnv( GLcontext *ctx, int unit ) } -static void mach64UpdateTextureUnit( GLcontext *ctx, int unit ) +static void mach64UpdateTextureUnit( struct gl_context *ctx, int unit ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); int source = mmesa->tmu_source[unit]; @@ -427,7 +427,7 @@ static void mach64UpdateTextureUnit( GLcontext *ctx, int unit ) /* Update the hardware texture state */ -void mach64UpdateTextureState( GLcontext *ctx ) +void mach64UpdateTextureState( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/mach64/mach64_tris.c b/src/mesa/drivers/dri/mach64/mach64_tris.c index a81d21afffa..024ee2f4353 100644 --- a/src/mesa/drivers/dri/mach64/mach64_tris.c +++ b/src/mesa/drivers/dri/mach64/mach64_tris.c @@ -59,8 +59,8 @@ static const GLuint hw_prim[GL_POLYGON+1] = { MACH64_PRIM_POLYGON, }; -static void mach64RasterPrimitive( GLcontext *ctx, GLuint hwprim ); -static void mach64RenderPrimitive( GLcontext *ctx, GLenum prim ); +static void mach64RasterPrimitive( struct gl_context *ctx, GLuint hwprim ); +static void mach64RenderPrimitive( struct gl_context *ctx, GLenum prim ); /* FIXME: Remove this when native template is finished. */ @@ -120,7 +120,7 @@ static INLINE void mach64_draw_quad( mach64ContextPtr mmesa, mach64VertexPtr v3 ) { #if MACH64_NATIVE_VTXFMT - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; const GLuint vertsize = mmesa->vertex_size; GLint a; GLfloat ooa; @@ -425,7 +425,7 @@ static INLINE void mach64_draw_triangle( mach64ContextPtr mmesa, mach64VertexPtr v2 ) { #if MACH64_NATIVE_VTXFMT - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; GLuint vertsize = mmesa->vertex_size; GLint a; GLfloat ooa; @@ -671,7 +671,7 @@ static INLINE void mach64_draw_line( mach64ContextPtr mmesa, mach64VertexPtr v1 ) { #if MACH64_NATIVE_VTXFMT - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; const GLuint vertsize = mmesa->vertex_size; /* 2 fractional bits for hardware: */ const int width = (int) (2.0 * CLAMP(mmesa->glCtx->Line.Width, @@ -959,7 +959,7 @@ static INLINE void mach64_draw_point( mach64ContextPtr mmesa, mach64VertexPtr v0 ) { #if MACH64_NATIVE_VTXFMT - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; const GLuint vertsize = mmesa->vertex_size; /* 2 fractional bits for hardware: */ GLint sz = (GLint) (2.0 * CLAMP(mmesa->glCtx->Point.Size, @@ -1473,7 +1473,7 @@ mach64_fallback_tri( mach64ContextPtr mmesa, mach64Vertex *v1, mach64Vertex *v2 ) { - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; SWvertex v[3]; mach64_translate_vertex( ctx, v0, &v[0] ); mach64_translate_vertex( ctx, v1, &v[1] ); @@ -1487,7 +1487,7 @@ mach64_fallback_line( mach64ContextPtr mmesa, mach64Vertex *v0, mach64Vertex *v1 ) { - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; SWvertex v[2]; mach64_translate_vertex( ctx, v0, &v[0] ); mach64_translate_vertex( ctx, v1, &v[1] ); @@ -1499,7 +1499,7 @@ static void mach64_fallback_point( mach64ContextPtr mmesa, mach64Vertex *v0 ) { - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; SWvertex v[1]; mach64_translate_vertex( ctx, v0, &v[0] ); _swrast_Point( ctx, &v[0] ); @@ -1549,7 +1549,7 @@ mach64_fallback_point( mach64ContextPtr mmesa, /* Render clipped primitives */ /**********************************************************************/ -static void mach64RenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void mach64RenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { mach64ContextPtr mmesa = MACH64_CONTEXT( ctx ); @@ -1573,14 +1573,14 @@ static void mach64RenderClippedPoly( GLcontext *ctx, const GLuint *elts, } -static void mach64RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +static void mach64RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); } #if MACH64_NATIVE_VTXFMT -static void mach64FastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void mach64FastRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { mach64ContextPtr mmesa = MACH64_CONTEXT( ctx ); @@ -1675,7 +1675,7 @@ static void mach64FastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, assert( vb == vbchk ); } #else -static void mach64FastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void mach64FastRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { mach64ContextPtr mmesa = MACH64_CONTEXT( ctx ); @@ -1715,7 +1715,7 @@ static void mach64FastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED) -static void mach64ChooseRenderState(GLcontext *ctx) +static void mach64ChooseRenderState(struct gl_context *ctx) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint flags = ctx->_TriangleCaps; @@ -1769,7 +1769,7 @@ static void mach64ChooseRenderState(GLcontext *ctx) /* Validate state at pipeline start */ /**********************************************************************/ -static void mach64RunPipeline( GLcontext *ctx ) +static void mach64RunPipeline( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -1798,7 +1798,7 @@ static void mach64RunPipeline( GLcontext *ctx ) * and lines, points and bitmaps. */ -static void mach64RasterPrimitive( GLcontext *ctx, GLuint hwprim ) +static void mach64RasterPrimitive( struct gl_context *ctx, GLuint hwprim ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -1811,7 +1811,7 @@ static void mach64RasterPrimitive( GLcontext *ctx, GLuint hwprim ) } } -static void mach64RenderPrimitive( GLcontext *ctx, GLenum prim ) +static void mach64RenderPrimitive( struct gl_context *ctx, GLenum prim ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint hw = hw_prim[prim]; @@ -1825,7 +1825,7 @@ static void mach64RenderPrimitive( GLcontext *ctx, GLenum prim ) } -static void mach64RenderStart( GLcontext *ctx ) +static void mach64RenderStart( struct gl_context *ctx ) { /* Check for projective texturing. Make sure all texcoord * pointers point to something. (fix in mesa?) @@ -1833,7 +1833,7 @@ static void mach64RenderStart( GLcontext *ctx ) mach64CheckTexSizes( ctx ); } -static void mach64RenderFinish( GLcontext *ctx ) +static void mach64RenderFinish( struct gl_context *ctx ) { if (MACH64_CONTEXT(ctx)->RenderIndex & MACH64_FALLBACK_BIT) _swrast_flush( ctx ); @@ -1868,7 +1868,7 @@ static const char *getFallbackString(GLuint bit) return fallbackStrings[i]; } -void mach64Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void mach64Fallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); @@ -1908,7 +1908,7 @@ void mach64Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ) /* Initialization. */ /**********************************************************************/ -void mach64InitTriFuncs( GLcontext *ctx ) +void mach64InitTriFuncs( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); static int firsttime = 1; diff --git a/src/mesa/drivers/dri/mach64/mach64_tris.h b/src/mesa/drivers/dri/mach64/mach64_tris.h index 042df42f5bd..84f613c4abd 100644 --- a/src/mesa/drivers/dri/mach64/mach64_tris.h +++ b/src/mesa/drivers/dri/mach64/mach64_tris.h @@ -33,10 +33,10 @@ #include "main/mtypes.h" -extern void mach64InitTriFuncs( GLcontext *ctx ); +extern void mach64InitTriFuncs( struct gl_context *ctx ); -extern void mach64Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void mach64Fallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( mmesa, bit, mode ) mach64Fallback( mmesa->glCtx, bit, mode ) diff --git a/src/mesa/drivers/dri/mach64/mach64_vb.c b/src/mesa/drivers/dri/mach64/mach64_vb.c index 046aff28a8c..d0c04d3d034 100644 --- a/src/mesa/drivers/dri/mach64/mach64_vb.c +++ b/src/mesa/drivers/dri/mach64/mach64_vb.c @@ -54,10 +54,10 @@ #define MACH64_MAX_SETUP 0x80 static struct { - void (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint ); + void (*emit)( struct gl_context *, GLuint, GLuint, void *, GLuint ); tnl_interp_func interp; tnl_copy_pv_func copy_pv; - GLboolean (*check_tex_sizes)( GLcontext *ctx ); + GLboolean (*check_tex_sizes)( struct gl_context *ctx ); GLuint vertex_size; GLuint vertex_format; } setup_tab[MACH64_MAX_SETUP]; @@ -491,7 +491,7 @@ void mach64PrintSetupFlags( char *msg, GLuint flags ) -void mach64CheckTexSizes( GLcontext *ctx ) +void mach64CheckTexSizes( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT( ctx ); @@ -511,7 +511,7 @@ void mach64CheckTexSizes( GLcontext *ctx ) } } -void mach64BuildVertices( GLcontext *ctx, +void mach64BuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ) @@ -557,7 +557,7 @@ void mach64BuildVertices( GLcontext *ctx, } } -void mach64ChooseVertexState( GLcontext *ctx ) +void mach64ChooseVertexState( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); mach64ContextPtr mmesa = MACH64_CONTEXT( ctx ); @@ -602,7 +602,7 @@ void mach64ChooseVertexState( GLcontext *ctx ) #if 0 -void mach64_emit_contiguous_verts( GLcontext *ctx, +void mach64_emit_contiguous_verts( struct gl_context *ctx, GLuint start, GLuint count ) { @@ -614,7 +614,7 @@ void mach64_emit_contiguous_verts( GLcontext *ctx, #endif -void mach64InitVB( GLcontext *ctx ) +void mach64InitVB( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); GLuint size = TNL_CONTEXT(ctx)->vb.Size; @@ -631,7 +631,7 @@ void mach64InitVB( GLcontext *ctx ) } -void mach64FreeVB( GLcontext *ctx ) +void mach64FreeVB( struct gl_context *ctx ) { mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); if (mmesa->verts) { diff --git a/src/mesa/drivers/dri/mach64/mach64_vb.h b/src/mesa/drivers/dri/mach64/mach64_vb.h index e0b366916b1..8d9cd5b492c 100644 --- a/src/mesa/drivers/dri/mach64/mach64_vb.h +++ b/src/mesa/drivers/dri/mach64/mach64_vb.h @@ -46,32 +46,32 @@ _NEW_FOG) -extern void mach64CheckTexSizes( GLcontext *ctx ); -extern void mach64ChooseVertexState( GLcontext *ctx ); +extern void mach64CheckTexSizes( struct gl_context *ctx ); +extern void mach64ChooseVertexState( struct gl_context *ctx ); -extern void mach64BuildVertices( GLcontext *ctx, GLuint start, GLuint count, +extern void mach64BuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ); extern void mach64PrintSetupFlags(char *msg, GLuint flags ); -extern void mach64InitVB( GLcontext *ctx ); -extern void mach64FreeVB( GLcontext *ctx ); +extern void mach64InitVB( struct gl_context *ctx ); +extern void mach64FreeVB( struct gl_context *ctx ); #if 0 -extern void mach64_emit_contiguous_verts( GLcontext *ctx, +extern void mach64_emit_contiguous_verts( struct gl_context *ctx, GLuint start, GLuint count ); -extern void mach64_emit_indexed_verts( GLcontext *ctx, +extern void mach64_emit_indexed_verts( struct gl_context *ctx, GLuint start, GLuint count ); #endif -extern void mach64_translate_vertex( GLcontext *ctx, +extern void mach64_translate_vertex( struct gl_context *ctx, const mach64Vertex *src, SWvertex *dst ); -extern void mach64_print_vertex( GLcontext *ctx, const mach64Vertex *v ); +extern void mach64_print_vertex( struct gl_context *ctx, const mach64Vertex *v ); #endif /* __MACH64_VB_H__ */ diff --git a/src/mesa/drivers/dri/mach64/mach64_vbtmp.h b/src/mesa/drivers/dri/mach64/mach64_vbtmp.h index 60bfab8f6dc..a126dcae40f 100644 --- a/src/mesa/drivers/dri/mach64/mach64_vbtmp.h +++ b/src/mesa/drivers/dri/mach64/mach64_vbtmp.h @@ -118,7 +118,7 @@ #if (HAVE_HW_DIVIDE || DO_SPEC || DO_TEX0 || DO_FOG || !HAVE_TINY_VERTICES) -static void TAG(emit)( GLcontext *ctx, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest, GLuint stride ) @@ -366,7 +366,7 @@ static void TAG(emit)( GLcontext *ctx, #error "cannot use tiny vertices with hw perspective divide" #endif -static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest, GLuint stride ) { LOCALVARS @@ -422,7 +422,7 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, } } #else -static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest, GLuint stride ) { LOCALVARS @@ -466,7 +466,7 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, #if (HAVE_PTEX_VERTICES) -static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) +static GLboolean TAG(check_tex_sizes)( struct gl_context *ctx ) { LOCALVARS struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -494,7 +494,7 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) return GL_TRUE; } #else -static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) +static GLboolean TAG(check_tex_sizes)( struct gl_context *ctx ) { LOCALVARS struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -535,7 +535,7 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) #endif /* ptex */ -static void TAG(interp)( GLcontext *ctx, +static void TAG(interp)( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ) diff --git a/src/mesa/drivers/dri/mga/mga_texcombine.c b/src/mesa/drivers/dri/mga/mga_texcombine.c index 24083d9651b..1488a89bb65 100644 --- a/src/mesa/drivers/dri/mga/mga_texcombine.c +++ b/src/mesa/drivers/dri/mga/mga_texcombine.c @@ -41,7 +41,7 @@ #define MGA_ARG2 1 #define MGA_ALPHA 2 -GLboolean mgaUpdateTextureEnvCombine( GLcontext *ctx, int unit ) +GLboolean mgaUpdateTextureEnvCombine( struct gl_context *ctx, int unit ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); const int source = mmesa->tmu_source[unit]; diff --git a/src/mesa/drivers/dri/mga/mga_texstate.c b/src/mesa/drivers/dri/mga/mga_texstate.c index 54eda62a96a..33ad8b42560 100644 --- a/src/mesa/drivers/dri/mga/mga_texstate.c +++ b/src/mesa/drivers/dri/mga/mga_texstate.c @@ -196,7 +196,7 @@ mgaSetTexImages( mgaContextPtr mmesa, * Texture unit state management */ -static void mgaUpdateTextureEnvG200( GLcontext *ctx, GLuint unit ) +static void mgaUpdateTextureEnvG200( struct gl_context *ctx, GLuint unit ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); struct gl_texture_object *tObj = ctx->Texture.Unit[0]._Current; @@ -526,7 +526,7 @@ static const GLuint g400_alpha_combine[][MGA_MAX_COMBFUNC] = }, }; -static GLboolean mgaUpdateTextureEnvBlend( GLcontext *ctx, int unit ) +static GLboolean mgaUpdateTextureEnvBlend( struct gl_context *ctx, int unit ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); const int source = mmesa->tmu_source[unit]; @@ -622,7 +622,7 @@ static GLboolean mgaUpdateTextureEnvBlend( GLcontext *ctx, int unit ) return GL_TRUE; } -static void mgaUpdateTextureEnvG400( GLcontext *ctx, GLuint unit ) +static void mgaUpdateTextureEnvG400( struct gl_context *ctx, GLuint unit ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); const int source = mmesa->tmu_source[unit]; @@ -719,7 +719,7 @@ static void mgaUpdateTextureEnvG400( GLcontext *ctx, GLuint unit ) } } -static void disable_tex( GLcontext *ctx, int unit ) +static void disable_tex( struct gl_context *ctx, int unit ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); @@ -747,7 +747,7 @@ static void disable_tex( GLcontext *ctx, int unit ) mmesa->dirty |= MGA_UPLOAD_CONTEXT | (MGA_UPLOAD_TEX0 << unit); } -static GLboolean enable_tex( GLcontext *ctx, int unit ) +static GLboolean enable_tex( struct gl_context *ctx, int unit ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); const int source = mmesa->tmu_source[unit]; @@ -768,7 +768,7 @@ static GLboolean enable_tex( GLcontext *ctx, int unit ) return GL_TRUE; } -static GLboolean update_tex_common( GLcontext *ctx, int unit ) +static GLboolean update_tex_common( struct gl_context *ctx, int unit ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); const int source = mmesa->tmu_source[unit]; @@ -842,7 +842,7 @@ static GLboolean update_tex_common( GLcontext *ctx, int unit ) } -static GLboolean updateTextureUnit( GLcontext *ctx, int unit ) +static GLboolean updateTextureUnit( struct gl_context *ctx, int unit ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); const int source = mmesa->tmu_source[unit]; @@ -865,7 +865,7 @@ static GLboolean updateTextureUnit( GLcontext *ctx, int unit ) /* The G400 is now programmed quite differently wrt texture environment. */ -void mgaUpdateTextureState( GLcontext *ctx ) +void mgaUpdateTextureState( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); GLboolean ok; diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c index 7e923963701..d1b281a2c05 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.c +++ b/src/mesa/drivers/dri/mga/mga_xmesa.c @@ -427,7 +427,7 @@ mgaCreateContext( gl_api api, { int i; unsigned maxlevels; - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; mgaContextPtr mmesa; __DRIscreen *sPriv = driContextPriv->driScreenPriv; mgaScreenPrivate *mgaScreen = (mgaScreenPrivate *)sPriv->private; @@ -820,7 +820,7 @@ mgaSwapBuffers(__DRIdrawable *dPriv) { if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { mgaContextPtr mmesa; - GLcontext *ctx; + struct gl_context *ctx; mmesa = (mgaContextPtr) dPriv->driContextPriv->driverPrivate; ctx = mmesa->glCtx; diff --git a/src/mesa/drivers/dri/mga/mgacontext.h b/src/mesa/drivers/dri/mga/mgacontext.h index 41415659314..b1fbb3c45d6 100644 --- a/src/mesa/drivers/dri/mga/mgacontext.h +++ b/src/mesa/drivers/dri/mga/mgacontext.h @@ -179,7 +179,7 @@ struct mga_hw_state { struct mga_context_t { - GLcontext *glCtx; + struct gl_context *glCtx; unsigned int lastStamp; /* fullscreen breaks dpriv->laststamp, * need to shadow it here. */ diff --git a/src/mesa/drivers/dri/mga/mgadd.c b/src/mesa/drivers/dri/mga/mgadd.c index 2f23c0e5142..1b39813e379 100644 --- a/src/mesa/drivers/dri/mga/mgadd.c +++ b/src/mesa/drivers/dri/mga/mgadd.c @@ -43,7 +43,7 @@ ***************************************/ -static const GLubyte *mgaGetString( GLcontext *ctx, GLenum name ) +static const GLubyte *mgaGetString( struct gl_context *ctx, GLenum name ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); static char buffer[128]; diff --git a/src/mesa/drivers/dri/mga/mgaioctl.c b/src/mesa/drivers/dri/mga/mgaioctl.c index 259358eaa3f..a54d86a178d 100644 --- a/src/mesa/drivers/dri/mga/mgaioctl.c +++ b/src/mesa/drivers/dri/mga/mgaioctl.c @@ -201,7 +201,7 @@ drmBufPtr mga_get_buffer_ioctl( mgaContextPtr mmesa ) static void -mgaClear( GLcontext *ctx, GLbitfield mask ) +mgaClear( struct gl_context *ctx, GLbitfield mask ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); __DRIdrawable *dPriv = mmesa->driDrawable; @@ -479,7 +479,7 @@ void mgaCopyBuffer( __DRIdrawable *dPriv ) * * \sa glFinish, mgaFlush, mgaFlushDMA */ -static void mgaFinish( GLcontext *ctx ) +static void mgaFinish( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); uint32_t fence; @@ -688,7 +688,7 @@ void mgaGetILoadBufferLocked( mgaContextPtr mmesa ) * * \sa glFlush, mgaFinish, mgaFlushDMA */ -static void mgaFlush( GLcontext *ctx ) +static void mgaFlush( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); diff --git a/src/mesa/drivers/dri/mga/mgapixel.c b/src/mesa/drivers/dri/mga/mgapixel.c index 1b6fb7d6b35..b8e365c714c 100644 --- a/src/mesa/drivers/dri/mga/mgapixel.c +++ b/src/mesa/drivers/dri/mga/mgapixel.c @@ -56,7 +56,7 @@ static GLboolean -check_depth_stencil_24_8( const GLcontext *ctx, GLenum type, +check_depth_stencil_24_8( const struct gl_context *ctx, GLenum type, const struct gl_pixelstore_attrib *packing, const void *pixels, GLint sz, GLint pitch ) @@ -80,7 +80,7 @@ check_depth_stencil_24_8( const GLcontext *ctx, GLenum type, static GLboolean -check_depth( const GLcontext *ctx, GLenum type, +check_depth( const struct gl_context *ctx, GLenum type, const struct gl_pixelstore_attrib *packing, const void *pixels, GLint sz, GLint pitch ) { @@ -100,7 +100,7 @@ check_depth( const GLcontext *ctx, GLenum type, static GLboolean -check_color( const GLcontext *ctx, GLenum type, GLenum format, +check_color( const struct gl_context *ctx, GLenum type, GLenum format, const struct gl_pixelstore_attrib *packing, const void *pixels, GLint sz, GLint pitch ) { @@ -125,7 +125,7 @@ check_color( const GLcontext *ctx, GLenum type, GLenum format, } static GLboolean -check_color_per_fragment_ops( const GLcontext *ctx ) +check_color_per_fragment_ops( const struct gl_context *ctx ) { return (!( ctx->Color.AlphaEnabled || ctx->Depth.Test || @@ -145,7 +145,7 @@ check_color_per_fragment_ops( const GLcontext *ctx ) } static GLboolean -check_depth_per_fragment_ops( const GLcontext *ctx ) +check_depth_per_fragment_ops( const struct gl_context *ctx ) { return ( ctx->Current.RasterPosValid && ctx->Color.ColorMask[0][RCOMP] == 0 && @@ -160,7 +160,7 @@ check_depth_per_fragment_ops( const GLcontext *ctx ) */ #if defined(MESA_packed_depth_stencil) static GLboolean -check_stencil_per_fragment_ops( const GLcontext *ctx ) +check_stencil_per_fragment_ops( const struct gl_context *ctx ) { return ( !ctx->Pixel.IndexShift && !ctx->Pixel.IndexOffset ); @@ -169,7 +169,7 @@ check_stencil_per_fragment_ops( const GLcontext *ctx ) static GLboolean -clip_pixelrect( const GLcontext *ctx, +clip_pixelrect( const struct gl_context *ctx, const struct gl_framebuffer *buffer, GLint *x, GLint *y, GLsizei *width, GLsizei *height, @@ -215,7 +215,7 @@ clip_pixelrect( const GLcontext *ctx, } static GLboolean -mgaTryReadPixels( GLcontext *ctx, +mgaTryReadPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, @@ -373,7 +373,7 @@ mgaTryReadPixels( GLcontext *ctx, } static void -mgaDDReadPixels( GLcontext *ctx, +mgaDDReadPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, @@ -386,7 +386,7 @@ mgaDDReadPixels( GLcontext *ctx, -static void do_draw_pix( GLcontext *ctx, +static void do_draw_pix( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLint pitch, const void *pixels, @@ -470,7 +470,7 @@ static void do_draw_pix( GLcontext *ctx, static GLboolean -mgaTryDrawPixels( GLcontext *ctx, +mgaTryDrawPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -619,7 +619,7 @@ mgaTryDrawPixels( GLcontext *ctx, } static void -mgaDDDrawPixels( GLcontext *ctx, +mgaDDDrawPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -637,7 +637,7 @@ mgaDDDrawPixels( GLcontext *ctx, * the same block of agp space which isn't used for anything else at * present. */ -void mgaDDInitPixelFuncs( GLcontext *ctx ) +void mgaDDInitPixelFuncs( struct gl_context *ctx ) { #if 0 /* evidently, these functions don't always work */ diff --git a/src/mesa/drivers/dri/mga/mgapixel.h b/src/mesa/drivers/dri/mga/mgapixel.h index f5f300db56d..6241b4b5ef4 100644 --- a/src/mesa/drivers/dri/mga/mgapixel.h +++ b/src/mesa/drivers/dri/mga/mgapixel.h @@ -30,6 +30,6 @@ #include "main/mtypes.h" -extern void mgaDDInitPixelFuncs( GLcontext *ctx ); +extern void mgaDDInitPixelFuncs( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/mga/mgarender.c b/src/mesa/drivers/dri/mga/mgarender.c index cc0cea618d1..f10a91adcec 100644 --- a/src/mesa/drivers/dri/mga/mgarender.c +++ b/src/mesa/drivers/dri/mga/mgarender.c @@ -66,7 +66,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define HAVE_ELTS 0 /* for now */ -static void mgaDmaPrimitive( GLcontext *ctx, GLenum prim ) +static void mgaDmaPrimitive( struct gl_context *ctx, GLenum prim ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); GLuint hwprim; @@ -124,7 +124,7 @@ static void mgaDmaPrimitive( GLcontext *ctx, GLenum prim ) /**********************************************************************/ -static GLboolean mga_run_render( GLcontext *ctx, +static GLboolean mga_run_render( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/mga/mgaspan.c b/src/mesa/drivers/dri/mga/mgaspan.c index 1f2fb0c39aa..dd9a8d74edd 100644 --- a/src/mesa/drivers/dri/mga/mgaspan.c +++ b/src/mesa/drivers/dri/mga/mgaspan.c @@ -169,7 +169,7 @@ static void -mgaSpanRenderStart( GLcontext *ctx ) +mgaSpanRenderStart( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); FLUSH_BATCH( mmesa ); @@ -177,7 +177,7 @@ mgaSpanRenderStart( GLcontext *ctx ) } static void -mgaSpanRenderFinish( GLcontext *ctx ) +mgaSpanRenderFinish( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); _swrast_flush( ctx ); @@ -192,7 +192,7 @@ mgaSpanRenderFinish( GLcontext *ctx ) * write routines for 888 and 8888. We also need to determine whether or not * the visual has destination alpha. */ -void mgaDDInitSpanFuncs( GLcontext *ctx ) +void mgaDDInitSpanFuncs( struct gl_context *ctx ) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = mgaSpanRenderStart; diff --git a/src/mesa/drivers/dri/mga/mgaspan.h b/src/mesa/drivers/dri/mga/mgaspan.h index a35a9b84797..48186b46e9a 100644 --- a/src/mesa/drivers/dri/mga/mgaspan.h +++ b/src/mesa/drivers/dri/mga/mgaspan.h @@ -30,7 +30,7 @@ #include "drirenderbuffer.h" -extern void mgaDDInitSpanFuncs( GLcontext *ctx ); +extern void mgaDDInitSpanFuncs( struct gl_context *ctx ); extern void mgaSetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); diff --git a/src/mesa/drivers/dri/mga/mgastate.c b/src/mesa/drivers/dri/mga/mgastate.c index 745d5e98525..25d7de28fe8 100644 --- a/src/mesa/drivers/dri/mga/mgastate.c +++ b/src/mesa/drivers/dri/mga/mgastate.c @@ -51,7 +51,7 @@ #include "drirenderbuffer.h" -static void updateSpecularLighting( GLcontext *ctx ); +static void updateSpecularLighting( struct gl_context *ctx ); static const GLuint mgarop_NoBLK[16] = { DC_atype_rpl | 0x00000000, DC_atype_rstr | 0x00080000, @@ -68,7 +68,7 @@ static const GLuint mgarop_NoBLK[16] = { * Alpha blending */ -static void mgaDDAlphaFunc(GLcontext *ctx, GLenum func, GLfloat ref) +static void mgaDDAlphaFunc(struct gl_context *ctx, GLenum func, GLfloat ref) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); GLubyte refByte; @@ -111,7 +111,7 @@ static void mgaDDAlphaFunc(GLcontext *ctx, GLenum func, GLfloat ref) mmesa->hw.alpha_func = a | MGA_FIELD( AC_atref, refByte ); } -static void updateBlendLogicOp(GLcontext *ctx) +static void updateBlendLogicOp(struct gl_context *ctx) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); GLboolean logicOp = RGBA_LOGICOP_ENABLED(ctx); @@ -126,14 +126,14 @@ static void updateBlendLogicOp(GLcontext *ctx) mmesa->hw.blend_func == (AC_src_src_alpha_sat | AC_dst_zero) ); } -static void mgaDDBlendEquationSeparate(GLcontext *ctx, +static void mgaDDBlendEquationSeparate(struct gl_context *ctx, GLenum modeRGB, GLenum modeA) { assert( modeRGB == modeA ); updateBlendLogicOp( ctx ); } -static void mgaDDBlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, +static void mgaDDBlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -205,7 +205,7 @@ static void mgaDDBlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, * Depth testing */ -static void mgaDDDepthFunc(GLcontext *ctx, GLenum func) +static void mgaDDDepthFunc(struct gl_context *ctx, GLenum func) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); int zmode; @@ -239,7 +239,7 @@ static void mgaDDDepthFunc(GLcontext *ctx, GLenum func) mmesa->hw.zmode |= zmode; } -static void mgaDDDepthMask(GLcontext *ctx, GLboolean flag) +static void mgaDDDepthMask(struct gl_context *ctx, GLboolean flag) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); @@ -250,7 +250,7 @@ static void mgaDDDepthMask(GLcontext *ctx, GLboolean flag) } -static void mgaDDClearDepth(GLcontext *ctx, GLclampd d) +static void mgaDDClearDepth(struct gl_context *ctx, GLclampd d) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -272,7 +272,7 @@ static void mgaDDClearDepth(GLcontext *ctx, GLclampd d) */ -static void mgaDDFogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) +static void mgaDDFogfv(struct gl_context *ctx, GLenum pname, const GLfloat *param) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -292,7 +292,7 @@ static void mgaDDFogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) */ -void mgaUpdateClipping(const GLcontext *ctx) +void mgaUpdateClipping(const struct gl_context *ctx) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -319,7 +319,7 @@ void mgaUpdateClipping(const GLcontext *ctx) } -static void mgaDDScissor( GLcontext *ctx, GLint x, GLint y, +static void mgaDDScissor( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { if ( ctx->Scissor.Enabled ) { @@ -338,7 +338,7 @@ static void mgaDDScissor( GLcontext *ctx, GLint x, GLint y, #define _CULL_NEGATIVE ((1<<11)|(1<<5)|(1<<16)) #define _CULL_POSITIVE (1<<11) -static void mgaDDCullFaceFrontFace(GLcontext *ctx, GLenum unused) +static void mgaDDCullFaceFrontFace(struct gl_context *ctx, GLenum unused) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -368,7 +368,7 @@ static void mgaDDCullFaceFrontFace(GLcontext *ctx, GLenum unused) * Masks */ -static void mgaDDColorMask(GLcontext *ctx, +static void mgaDDColorMask(struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -421,7 +421,7 @@ static int mgaStipples[16] = { * \param mask Pointer to the 32x32 stipple mask */ -static void mgaDDPolygonStipple( GLcontext *ctx, const GLubyte *mask ) +static void mgaDDPolygonStipple( struct gl_context *ctx, const GLubyte *mask ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); const GLubyte *m = mask; @@ -478,7 +478,7 @@ static void mgaDDPolygonStipple( GLcontext *ctx, const GLubyte *mask ) * sense to break them out of the core texture state update routines. */ -static void updateSpecularLighting( GLcontext *ctx ) +static void updateSpecularLighting( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); unsigned int specen; @@ -497,7 +497,7 @@ static void updateSpecularLighting( GLcontext *ctx ) */ -static void mgaDDLightModelfv(GLcontext *ctx, GLenum pname, +static void mgaDDLightModelfv(struct gl_context *ctx, GLenum pname, const GLfloat *param) { if (pname == GL_LIGHT_MODEL_COLOR_CONTROL) { @@ -513,7 +513,7 @@ static void mgaDDLightModelfv(GLcontext *ctx, GLenum pname, static void -mgaDDStencilFuncSeparate(GLcontext *ctx, GLenum face, GLenum func, GLint ref, +mgaDDStencilFuncSeparate(struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -558,7 +558,7 @@ mgaDDStencilFuncSeparate(GLcontext *ctx, GLenum face, GLenum func, GLint ref, } static void -mgaDDStencilMaskSeparate(GLcontext *ctx, GLenum face, GLuint mask) +mgaDDStencilMaskSeparate(struct gl_context *ctx, GLenum face, GLuint mask) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -568,7 +568,7 @@ mgaDDStencilMaskSeparate(GLcontext *ctx, GLenum face, GLuint mask) } static void -mgaDDStencilOpSeparate(GLcontext *ctx, GLenum face, GLenum fail, GLenum zfail, +mgaDDStencilOpSeparate(struct gl_context *ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -676,7 +676,7 @@ mgaDDStencilOpSeparate(GLcontext *ctx, GLenum face, GLenum fail, GLenum zfail, * Window position and viewport transformation */ -void mgaCalcViewport( GLcontext *ctx ) +void mgaCalcViewport( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -694,14 +694,14 @@ void mgaCalcViewport( GLcontext *ctx ) mmesa->SetupNewInputs = ~0; } -static void mgaViewport( GLcontext *ctx, +static void mgaViewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { mgaCalcViewport( ctx ); } -static void mgaDepthRange( GLcontext *ctx, +static void mgaDepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { mgaCalcViewport( ctx ); @@ -712,7 +712,7 @@ static void mgaDepthRange( GLcontext *ctx, * Miscellaneous */ -static void mgaDDClearColor(GLcontext *ctx, +static void mgaDDClearColor(struct gl_context *ctx, const GLfloat color[4] ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -729,13 +729,13 @@ static void mgaDDClearColor(GLcontext *ctx, /* Fallback to swrast for select and feedback. */ -static void mgaRenderMode( GLcontext *ctx, GLenum mode ) +static void mgaRenderMode( struct gl_context *ctx, GLenum mode ) { FALLBACK( ctx, MGA_FALLBACK_RENDERMODE, (mode != GL_RENDER) ); } -static void mgaDDLogicOp( GLcontext *ctx, GLenum opcode ) +static void mgaDDLogicOp( struct gl_context *ctx, GLenum opcode ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); @@ -791,7 +791,7 @@ void mgaUpdateRects( mgaContextPtr mmesa, GLuint buffers ) } -static void mgaDDDrawBuffer(GLcontext *ctx, GLenum mode ) +static void mgaDDDrawBuffer(struct gl_context *ctx, GLenum mode ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -823,7 +823,7 @@ static void mgaDDDrawBuffer(GLcontext *ctx, GLenum mode ) } -static void mgaDDReadBuffer(GLcontext *ctx, GLenum mode ) +static void mgaDDReadBuffer(struct gl_context *ctx, GLenum mode ) { /* nothing, until we implement h/w glRead/CopyPixels or CopyTexImage */ } @@ -834,7 +834,7 @@ static void mgaDDReadBuffer(GLcontext *ctx, GLenum mode ) */ -static void mgaDDEnable(GLcontext *ctx, GLenum cap, GLboolean state) +static void mgaDDEnable(struct gl_context *ctx, GLenum cap, GLboolean state) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); @@ -932,7 +932,7 @@ static void mgaDDPrintDirty( const char *msg, GLuint state ) void mgaEmitHwStateLocked( mgaContextPtr mmesa ) { drm_mga_sarea_t *sarea = mmesa->sarea; - GLcontext * ctx = mmesa->glCtx; + struct gl_context * ctx = mmesa->glCtx; if (MGA_DEBUG & DEBUG_VERBOSE_MSG) mgaDDPrintDirty( __FUNCTION__, mmesa->dirty ); @@ -1009,7 +1009,7 @@ void mgaEmitHwStateLocked( mgaContextPtr mmesa ) */ -static void mgaDDValidateState( GLcontext *ctx ) +static void mgaDDValidateState( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); @@ -1033,7 +1033,7 @@ static void mgaDDValidateState( GLcontext *ctx ) } -static void mgaDDInvalidateState( GLcontext *ctx, GLuint new_state ) +static void mgaDDInvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -1043,7 +1043,7 @@ static void mgaDDInvalidateState( GLcontext *ctx, GLuint new_state ) } -static void mgaRunPipeline( GLcontext *ctx ) +static void mgaRunPipeline( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -1062,7 +1062,7 @@ static void mgaRunPipeline( GLcontext *ctx ) void mgaInitState( mgaContextPtr mmesa ) { mgaScreenPrivate *mgaScreen = mmesa->mgaScreen; - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; if (ctx->Visual.doubleBufferMode) { /* use back buffer by default */ @@ -1161,7 +1161,7 @@ void mgaInitState( mgaContextPtr mmesa ) } -void mgaDDInitStateFuncs( GLcontext *ctx ) +void mgaDDInitStateFuncs( struct gl_context *ctx ) { ctx->Driver.UpdateState = mgaDDInvalidateState; ctx->Driver.Enable = mgaDDEnable; diff --git a/src/mesa/drivers/dri/mga/mgastate.h b/src/mesa/drivers/dri/mga/mgastate.h index ec65d4e6cd7..6e8a869cf79 100644 --- a/src/mesa/drivers/dri/mga/mgastate.h +++ b/src/mesa/drivers/dri/mga/mgastate.h @@ -29,10 +29,10 @@ #define _MGA_STATE_H extern void mgaInitState( mgaContextPtr mmesa ); -extern void mgaDDInitStateFuncs(GLcontext *ctx); -extern void mgaUpdateClipping(const GLcontext *ctx); -extern void mgaUpdateCull( GLcontext *ctx ); -extern void mgaCalcViewport( GLcontext *ctx ); +extern void mgaDDInitStateFuncs(struct gl_context *ctx); +extern void mgaUpdateClipping(const struct gl_context *ctx); +extern void mgaUpdateCull( struct gl_context *ctx ); +extern void mgaCalcViewport( struct gl_context *ctx ); extern void mgaUpdateRects( mgaContextPtr mmesa, GLuint buffers ); #endif diff --git a/src/mesa/drivers/dri/mga/mgatex.c b/src/mesa/drivers/dri/mga/mgatex.c index ca3dd4b0139..11ab9b6117d 100644 --- a/src/mesa/drivers/dri/mga/mgatex.c +++ b/src/mesa/drivers/dri/mga/mgatex.c @@ -161,7 +161,7 @@ static void mgaSetTexBorderColor(mgaTextureObjectPtr t, const GLfloat color[4]) static gl_format -mgaChooseTextureFormat( GLcontext *ctx, GLint internalFormat, +mgaChooseTextureFormat( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -336,7 +336,7 @@ mgaAllocTexObj( struct gl_texture_object *tObj ) } -static void mgaTexEnv( GLcontext *ctx, GLenum target, +static void mgaTexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { GLuint unit = ctx->Texture.CurrentUnit; @@ -355,7 +355,7 @@ static void mgaTexEnv( GLcontext *ctx, GLenum target, } -static void mgaTexImage2D( GLcontext *ctx, GLenum target, GLint level, +static void mgaTexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -384,7 +384,7 @@ static void mgaTexImage2D( GLcontext *ctx, GLenum target, GLint level, t->dirty_images[0] |= (1UL << level); } -static void mgaTexSubImage2D( GLcontext *ctx, +static void mgaTexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -424,7 +424,7 @@ static void mgaTexSubImage2D( GLcontext *ctx, */ static void -mgaTexParameter( GLcontext *ctx, GLenum target, +mgaTexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat *params ) { @@ -480,7 +480,7 @@ mgaTexParameter( GLcontext *ctx, GLenum target, static void -mgaBindTexture( GLcontext *ctx, GLenum target, +mgaBindTexture( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj ) { assert( (target != GL_TEXTURE_2D && target != GL_TEXTURE_RECTANGLE_NV) || @@ -489,7 +489,7 @@ mgaBindTexture( GLcontext *ctx, GLenum target, static void -mgaDeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj ) +mgaDeleteTexture( struct gl_context *ctx, struct gl_texture_object *tObj ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); driTextureObject * t = (driTextureObject *) tObj->DriverData; @@ -516,7 +516,7 @@ mgaDeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj ) * texture object from the core mesa gl_texture_object. Not done at this time. */ static struct gl_texture_object * -mgaNewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +mgaNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; obj = _mesa_new_texture_object(ctx, name, target); diff --git a/src/mesa/drivers/dri/mga/mgatex.h b/src/mesa/drivers/dri/mga/mgatex.h index 789034964a0..3827fb06686 100644 --- a/src/mesa/drivers/dri/mga/mgatex.h +++ b/src/mesa/drivers/dri/mga/mgatex.h @@ -37,7 +37,7 @@ typedef struct mga_texture_object_s *mgaTextureObjectPtr; * state is properly setup. Texture residence is checked later * when we grab the lock. */ -void mgaUpdateTextureState( GLcontext *ctx ); +void mgaUpdateTextureState( struct gl_context *ctx ); int mgaUploadTexImages( mgaContextPtr mmesa, mgaTextureObjectPtr t ); @@ -45,6 +45,6 @@ void mgaDestroyTexObj( mgaContextPtr mmesa, mgaTextureObjectPtr t ); void mgaInitTextureFuncs( struct dd_function_table *functions ); -GLboolean mgaUpdateTextureEnvCombine( GLcontext *ctx, int unit ); +GLboolean mgaUpdateTextureEnvCombine( struct gl_context *ctx, int unit ); #endif diff --git a/src/mesa/drivers/dri/mga/mgatris.c b/src/mesa/drivers/dri/mga/mgatris.c index 07cf682f6e4..7b06774adb4 100644 --- a/src/mesa/drivers/dri/mga/mgatris.c +++ b/src/mesa/drivers/dri/mga/mgatris.c @@ -40,7 +40,7 @@ #include "mgavb.h" -static void mgaRenderPrimitive( GLcontext *ctx, GLenum prim ); +static void mgaRenderPrimitive( struct gl_context *ctx, GLenum prim ); /*********************************************************************** * Functions to draw basic primitives * @@ -285,7 +285,7 @@ mga_fallback_tri( mgaContextPtr mmesa, mgaVertex *v1, mgaVertex *v2 ) { - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; SWvertex v[3]; mga_translate_vertex( ctx, v0, &v[0] ); mga_translate_vertex( ctx, v1, &v[1] ); @@ -299,7 +299,7 @@ mga_fallback_line( mgaContextPtr mmesa, mgaVertex *v0, mgaVertex *v1 ) { - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; SWvertex v[2]; mga_translate_vertex( ctx, v0, &v[0] ); mga_translate_vertex( ctx, v1, &v[1] ); @@ -311,7 +311,7 @@ static void mga_fallback_point( mgaContextPtr mmesa, mgaVertex *v0 ) { - GLcontext *ctx = mmesa->glCtx; + struct gl_context *ctx = mmesa->glCtx; SWvertex v[1]; mga_translate_vertex( ctx, v0, &v[0] ); _swrast_Point( ctx, &v[0] ); @@ -630,7 +630,7 @@ static void init_rast_tab( void ) -static void mgaRenderClippedPoly( GLcontext *ctx, const GLuint *elts, GLuint n ) +static void mgaRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -652,13 +652,13 @@ static void mgaRenderClippedPoly( GLcontext *ctx, const GLuint *elts, GLuint n ) tnl->Driver.Render.PrimitiveNotify( ctx, prim ); } -static void mgaRenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +static void mgaRenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); } -static void mgaFastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void mgaFastRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); @@ -687,7 +687,7 @@ static void mgaFastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, #define ANY_RASTER_FLAGS (DD_FLATSHADE|DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET| \ DD_TRI_UNFILLED) -void mgaChooseRenderState(GLcontext *ctx) +void mgaChooseRenderState(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -773,7 +773,7 @@ static GLenum reduced_prim[GL_POLYGON+1] = { /* Always called between RenderStart and RenderFinish --> We already * hold the lock. */ -void mgaRasterPrimitive( GLcontext *ctx, GLenum prim, GLuint hwprim ) +void mgaRasterPrimitive( struct gl_context *ctx, GLenum prim, GLuint hwprim ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); @@ -806,7 +806,7 @@ void mgaRasterPrimitive( GLcontext *ctx, GLenum prim, GLuint hwprim ) * which renders strips as strips, the equivalent calculations are * performed in mgarender.c. */ -static void mgaRenderPrimitive( GLcontext *ctx, GLenum prim ) +static void mgaRenderPrimitive( struct gl_context *ctx, GLenum prim ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); GLuint rprim = reduced_prim[prim]; @@ -821,7 +821,7 @@ static void mgaRenderPrimitive( GLcontext *ctx, GLenum prim ) } } -static void mgaRenderFinish( GLcontext *ctx ) +static void mgaRenderFinish( struct gl_context *ctx ) { if (MGA_CONTEXT(ctx)->RenderIndex & MGA_FALLBACK_BIT) _swrast_flush( ctx ); @@ -856,7 +856,7 @@ static const char *getFallbackString(GLuint bit) } -void mgaFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void mgaFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); mgaContextPtr mmesa = MGA_CONTEXT(ctx); @@ -893,7 +893,7 @@ void mgaFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) } -void mgaDDInitTriFuncs( GLcontext *ctx ) +void mgaDDInitTriFuncs( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); mgaContextPtr mmesa = MGA_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/mga/mgatris.h b/src/mesa/drivers/dri/mga/mgatris.h index 43612b80a15..2f574feb936 100644 --- a/src/mesa/drivers/dri/mga/mgatris.h +++ b/src/mesa/drivers/dri/mga/mgatris.h @@ -30,11 +30,11 @@ #include "main/mtypes.h" -extern void mgaDDInitTriFuncs( GLcontext *ctx ); -extern void mgaChooseRenderState( GLcontext *ctx ); -extern void mgaRasterPrimitive( GLcontext *ctx, GLenum prim, GLuint hwprim ); +extern void mgaDDInitTriFuncs( struct gl_context *ctx ); +extern void mgaChooseRenderState( struct gl_context *ctx ); +extern void mgaRasterPrimitive( struct gl_context *ctx, GLenum prim, GLuint hwprim ); -extern void mgaFallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void mgaFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( ctx, bit, mode ) mgaFallback( ctx, bit, mode ) #define _MGA_NEW_RENDERSTATE (_DD_NEW_POINT_SMOOTH | \ diff --git a/src/mesa/drivers/dri/mga/mgavb.c b/src/mesa/drivers/dri/mga/mgavb.c index 71bbf33f230..f098aa5cbc0 100644 --- a/src/mesa/drivers/dri/mga/mgavb.c +++ b/src/mesa/drivers/dri/mga/mgavb.c @@ -52,10 +52,10 @@ #define MGA_MAX_SETUP 0x80 static struct { - void (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint ); + void (*emit)( struct gl_context *, GLuint, GLuint, void *, GLuint ); tnl_interp_func interp; tnl_copy_pv_func copy_pv; - GLboolean (*check_tex_sizes)( GLcontext *ctx ); + GLboolean (*check_tex_sizes)( struct gl_context *ctx ); GLuint vertex_size; GLuint vertex_format; } setup_tab[MGA_MAX_SETUP]; @@ -316,7 +316,7 @@ void mgaPrintSetupFlags(char *msg, GLuint flags ) } -void mgaCheckTexSizes( GLcontext *ctx ) +void mgaCheckTexSizes( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -339,7 +339,7 @@ void mgaCheckTexSizes( GLcontext *ctx ) } -void mgaBuildVertices( GLcontext *ctx, +void mgaBuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ) @@ -386,7 +386,7 @@ void mgaBuildVertices( GLcontext *ctx, } -void mgaChooseVertexState( GLcontext *ctx ) +void mgaChooseVertexState( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT( ctx ); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -433,7 +433,7 @@ void mgaChooseVertexState( GLcontext *ctx ) -void *mga_emit_contiguous_verts( GLcontext *ctx, +void *mga_emit_contiguous_verts( struct gl_context *ctx, GLuint start, GLuint count, void *dest) @@ -446,7 +446,7 @@ void *mga_emit_contiguous_verts( GLcontext *ctx, -void mgaInitVB( GLcontext *ctx ) +void mgaInitVB( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); GLuint size = TNL_CONTEXT(ctx)->vb.Size; @@ -467,7 +467,7 @@ void mgaInitVB( GLcontext *ctx ) } -void mgaFreeVB( GLcontext *ctx ) +void mgaFreeVB( struct gl_context *ctx ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); if (mmesa->verts) { diff --git a/src/mesa/drivers/dri/mga/mgavb.h b/src/mesa/drivers/dri/mga/mgavb.h index 8d24ab7b5fe..20e5d8ba700 100644 --- a/src/mesa/drivers/dri/mga/mgavb.h +++ b/src/mesa/drivers/dri/mga/mgavb.h @@ -39,27 +39,27 @@ _NEW_FOG) -extern void mgaChooseVertexState( GLcontext *ctx ); -extern void mgaCheckTexSizes( GLcontext *ctx ); -extern void mgaBuildVertices( GLcontext *ctx, +extern void mgaChooseVertexState( struct gl_context *ctx ); +extern void mgaCheckTexSizes( struct gl_context *ctx ); +extern void mgaBuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ); extern void mgaPrintSetupFlags(char *msg, GLuint flags ); -extern void mgaInitVB( GLcontext *ctx ); -extern void mgaFreeVB( GLcontext *ctx ); +extern void mgaInitVB( struct gl_context *ctx ); +extern void mgaFreeVB( struct gl_context *ctx ); -extern void *mga_emit_contiguous_verts( GLcontext *ctx, +extern void *mga_emit_contiguous_verts( struct gl_context *ctx, GLuint start, GLuint count, void *dest ); -extern void mga_translate_vertex(GLcontext *ctx, +extern void mga_translate_vertex(struct gl_context *ctx, const mgaVertex *src, SWvertex *dst); -extern void mga_print_vertex( GLcontext *ctx, const mgaVertex *v ); +extern void mga_print_vertex( struct gl_context *ctx, const mgaVertex *v ); #endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c index fc5f77b46a7..f31772fe1d1 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c @@ -28,7 +28,7 @@ #include "nouveau_context.h" static GLboolean -nouveau_bo_marker_emit(GLcontext *ctx, struct nouveau_bo_marker *m, +nouveau_bo_marker_emit(struct gl_context *ctx, struct nouveau_bo_marker *m, uint32_t flags) { struct nouveau_channel *chan = context_chan(ctx); @@ -136,7 +136,7 @@ nouveau_bo_context_reset(struct nouveau_bo_context *bctx) } GLboolean -nouveau_bo_state_emit(GLcontext *ctx) +nouveau_bo_state_emit(struct gl_context *ctx) { struct nouveau_bo_state *s = &to_nouveau_context(ctx)->bo; int i, j; @@ -155,7 +155,7 @@ nouveau_bo_state_emit(GLcontext *ctx) } void -nouveau_bo_state_init(GLcontext *ctx) +nouveau_bo_state_init(struct gl_context *ctx) { struct nouveau_bo_state *s = &to_nouveau_context(ctx)->bo; int i; @@ -165,7 +165,7 @@ nouveau_bo_state_init(GLcontext *ctx) } void -nouveau_bo_state_destroy(GLcontext *ctx) +nouveau_bo_state_destroy(struct gl_context *ctx) { struct nouveau_bo_state *s = &to_nouveau_context(ctx)->bo; int i, j; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h index da0a3a5c6fe..6119a8336e3 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h @@ -52,7 +52,7 @@ struct nouveau_bo_marker { }; struct nouveau_bo_context { - GLcontext *ctx; + struct gl_context *ctx; struct nouveau_bo_marker *marker; int allocated; @@ -84,13 +84,13 @@ void nouveau_bo_context_reset(struct nouveau_bo_context *bctx); GLboolean -nouveau_bo_state_emit(GLcontext *ctx); +nouveau_bo_state_emit(struct gl_context *ctx); void -nouveau_bo_state_init(GLcontext *ctx); +nouveau_bo_state_init(struct gl_context *ctx); void -nouveau_bo_state_destroy(GLcontext *ctx); +nouveau_bo_state_destroy(struct gl_context *ctx); #define __context_bctx(ctx, i) \ ({ \ diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c index 5906ad6d396..ad6e5bd805a 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c @@ -31,7 +31,7 @@ #include "main/bufferobj.h" static struct gl_buffer_object * -nouveau_bufferobj_new(GLcontext *ctx, GLuint buffer, GLenum target) +nouveau_bufferobj_new(struct gl_context *ctx, GLuint buffer, GLenum target) { struct nouveau_bufferobj *nbo; @@ -45,7 +45,7 @@ nouveau_bufferobj_new(GLcontext *ctx, GLuint buffer, GLenum target) } static void -nouveau_bufferobj_del(GLcontext *ctx, struct gl_buffer_object *obj) +nouveau_bufferobj_del(struct gl_context *ctx, struct gl_buffer_object *obj) { struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); @@ -54,7 +54,7 @@ nouveau_bufferobj_del(GLcontext *ctx, struct gl_buffer_object *obj) } static GLboolean -nouveau_bufferobj_data(GLcontext *ctx, GLenum target, GLsizeiptrARB size, +nouveau_bufferobj_data(struct gl_context *ctx, GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage, struct gl_buffer_object *obj) { @@ -80,7 +80,7 @@ nouveau_bufferobj_data(GLcontext *ctx, GLenum target, GLsizeiptrARB size, } static void -nouveau_bufferobj_subdata(GLcontext *ctx, GLenum target, GLintptrARB offset, +nouveau_bufferobj_subdata(struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data, struct gl_buffer_object *obj) { @@ -92,7 +92,7 @@ nouveau_bufferobj_subdata(GLcontext *ctx, GLenum target, GLintptrARB offset, } static void -nouveau_bufferobj_get_subdata(GLcontext *ctx, GLenum target, GLintptrARB offset, +nouveau_bufferobj_get_subdata(struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data, struct gl_buffer_object *obj) { @@ -104,7 +104,7 @@ nouveau_bufferobj_get_subdata(GLcontext *ctx, GLenum target, GLintptrARB offset, } static void * -nouveau_bufferobj_map(GLcontext *ctx, GLenum target, GLenum access, +nouveau_bufferobj_map(struct gl_context *ctx, GLenum target, GLenum access, struct gl_buffer_object *obj) { return ctx->Driver.MapBufferRange(ctx, target, 0, obj->Size, access, @@ -112,7 +112,7 @@ nouveau_bufferobj_map(GLcontext *ctx, GLenum target, GLenum access, } static void * -nouveau_bufferobj_map_range(GLcontext *ctx, GLenum target, GLintptr offset, +nouveau_bufferobj_map_range(struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, GLenum access, struct gl_buffer_object *obj) { @@ -142,7 +142,7 @@ nouveau_bufferobj_map_range(GLcontext *ctx, GLenum target, GLintptr offset, } static GLboolean -nouveau_bufferobj_unmap(GLcontext *ctx, GLenum target, struct gl_buffer_object *obj) +nouveau_bufferobj_unmap(struct gl_context *ctx, GLenum target, struct gl_buffer_object *obj) { struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index fed0b7a34f6..d3e2c0df6c4 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -69,7 +69,7 @@ static void nouveau_channel_flush_notify(struct nouveau_channel *chan) { struct nouveau_context *nctx = chan->user_private; - GLcontext *ctx = &nctx->base; + struct gl_context *ctx = &nctx->base; if (nctx->fallback < SWRAST) nouveau_bo_state_emit(ctx); @@ -83,7 +83,7 @@ nouveau_context_create(gl_api api, __DRIscreen *dri_screen = dri_ctx->driScreenPriv; struct nouveau_screen *screen = dri_screen->private; struct nouveau_context *nctx; - GLcontext *ctx; + struct gl_context *ctx; ctx = screen->driver->context_create(screen, visual, share_ctx); if (!ctx) @@ -97,8 +97,8 @@ nouveau_context_create(gl_api api, } GLboolean -nouveau_context_init(GLcontext *ctx, struct nouveau_screen *screen, - const struct gl_config *visual, GLcontext *share_ctx) +nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen, + const struct gl_config *visual, struct gl_context *share_ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct dd_function_table functions; @@ -144,7 +144,7 @@ nouveau_context_init(GLcontext *ctx, struct nouveau_screen *screen, } void -nouveau_context_deinit(GLcontext *ctx) +nouveau_context_deinit(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -171,7 +171,7 @@ void nouveau_context_destroy(__DRIcontext *dri_ctx) { struct nouveau_context *nctx = dri_ctx->driverPrivate; - GLcontext *ctx = &nctx->base; + struct gl_context *ctx = &nctx->base; context_drv(ctx)->context_destroy(ctx); } @@ -179,7 +179,7 @@ nouveau_context_destroy(__DRIcontext *dri_ctx) void nouveau_update_renderbuffers(__DRIcontext *dri_ctx, __DRIdrawable *draw) { - GLcontext *ctx = dri_ctx->driverPrivate; + struct gl_context *ctx = dri_ctx->driverPrivate; __DRIscreen *screen = dri_ctx->driScreenPriv; struct gl_framebuffer *fb = draw->driverPrivate; struct nouveau_framebuffer *nfb = to_nouveau_framebuffer(fb); @@ -253,7 +253,7 @@ static void update_framebuffer(__DRIcontext *dri_ctx, __DRIdrawable *draw, int *stamp) { - GLcontext *ctx = dri_ctx->driverPrivate; + struct gl_context *ctx = dri_ctx->driverPrivate; struct gl_framebuffer *fb = draw->driverPrivate; *stamp = *draw->pStamp; @@ -273,7 +273,7 @@ nouveau_context_make_current(__DRIcontext *dri_ctx, __DRIdrawable *dri_draw, { if (dri_ctx) { struct nouveau_context *nctx = dri_ctx->driverPrivate; - GLcontext *ctx = &nctx->base; + struct gl_context *ctx = &nctx->base; /* Ask the X server for new renderbuffers. */ if (dri_draw->driverPrivate != ctx->WinSysDrawBuffer) @@ -307,7 +307,7 @@ nouveau_context_unbind(__DRIcontext *dri_ctx) } void -nouveau_fallback(GLcontext *ctx, enum nouveau_fallback mode) +nouveau_fallback(struct gl_context *ctx, enum nouveau_fallback mode) { struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -339,7 +339,7 @@ validate_framebuffer(__DRIcontext *dri_ctx, __DRIdrawable *draw, } void -nouveau_validate_framebuffer(GLcontext *ctx) +nouveau_validate_framebuffer(struct gl_context *ctx) { __DRIcontext *dri_ctx = to_nouveau_context(ctx)->dri_context; __DRIdrawable *dri_draw = dri_ctx->driDrawablePriv; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h b/src/mesa/drivers/dri/nouveau/nouveau_context.h index 8cbfefe85a4..23a87256728 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h @@ -57,7 +57,7 @@ struct nouveau_hw_state { }; struct nouveau_context { - GLcontext base; + struct gl_context base; __DRIcontext *dri_context; struct nouveau_screen *screen; @@ -99,11 +99,11 @@ nouveau_context_create(gl_api api, void *share_ctx); GLboolean -nouveau_context_init(GLcontext *ctx, struct nouveau_screen *screen, - const struct gl_config *visual, GLcontext *share_ctx); +nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen, + const struct gl_config *visual, struct gl_context *share_ctx); void -nouveau_context_deinit(GLcontext *ctx); +nouveau_context_deinit(struct gl_context *ctx); void nouveau_context_destroy(__DRIcontext *dri_ctx); @@ -119,10 +119,10 @@ GLboolean nouveau_context_unbind(__DRIcontext *dri_ctx); void -nouveau_fallback(GLcontext *ctx, enum nouveau_fallback mode); +nouveau_fallback(struct gl_context *ctx, enum nouveau_fallback mode); void -nouveau_validate_framebuffer(GLcontext *ctx); +nouveau_validate_framebuffer(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.c b/src/mesa/drivers/dri/nouveau/nouveau_driver.c index 6452fe218e5..27e2892f711 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_driver.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.c @@ -32,7 +32,7 @@ #include "drivers/common/meta.h" static const GLubyte * -nouveau_get_string(GLcontext *ctx, GLenum name) +nouveau_get_string(struct gl_context *ctx, GLenum name) { static char buffer[128]; char hardware_name[32]; @@ -52,7 +52,7 @@ nouveau_get_string(GLcontext *ctx, GLenum name) } static void -nouveau_flush(GLcontext *ctx) +nouveau_flush(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -70,13 +70,13 @@ nouveau_flush(GLcontext *ctx) } static void -nouveau_finish(GLcontext *ctx) +nouveau_finish(struct gl_context *ctx) { nouveau_flush(ctx); } void -nouveau_clear(GLcontext *ctx, GLbitfield buffers) +nouveau_clear(struct gl_context *ctx, GLbitfield buffers) { struct gl_framebuffer *fb = ctx->DrawBuffer; int x, y, w, h; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.h b/src/mesa/drivers/dri/nouveau/nouveau_driver.h index fa2bc7abd1d..8036b18edc0 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_driver.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.h @@ -51,16 +51,16 @@ #define DRIVER_AUTHOR "Nouveau" struct nouveau_driver { - GLcontext *(*context_create)(struct nouveau_screen *screen, + struct gl_context *(*context_create)(struct nouveau_screen *screen, const struct gl_config *visual, - GLcontext *share_ctx); - void (*context_destroy)(GLcontext *ctx); + struct gl_context *share_ctx); + void (*context_destroy)(struct gl_context *ctx); - void (*surface_copy)(GLcontext *ctx, + void (*surface_copy)(struct gl_context *ctx, struct nouveau_surface *dst, struct nouveau_surface *src, int dx, int dy, int sx, int sy, int w, int h); - void (*surface_fill)(GLcontext *ctx, + void (*surface_fill)(struct gl_context *ctx, struct nouveau_surface *dst, unsigned mask, unsigned value, int dx, int dy, int w, int h); @@ -73,10 +73,10 @@ struct nouveau_driver { fprintf(stderr, "%s: " format, __func__, ## __VA_ARGS__) void -nouveau_clear(GLcontext *ctx, GLbitfield buffers); +nouveau_clear(struct gl_context *ctx, GLbitfield buffers); void -nouveau_span_functions_init(GLcontext *ctx); +nouveau_span_functions_init(struct gl_context *ctx); void nouveau_driver_functions_init(struct dd_function_table *functions); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_fbo.c b/src/mesa/drivers/dri/nouveau/nouveau_fbo.c index 397d4ad1eb4..079b5d63e4c 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_fbo.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_fbo.c @@ -86,7 +86,7 @@ set_renderbuffer_format(struct gl_renderbuffer *rb, GLenum internalFormat) } static GLboolean -nouveau_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +nouveau_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { @@ -115,7 +115,7 @@ nouveau_renderbuffer_del(struct gl_renderbuffer *rb) } static struct gl_renderbuffer * -nouveau_renderbuffer_new(GLcontext *ctx, GLuint name) +nouveau_renderbuffer_new(struct gl_context *ctx, GLuint name) { struct gl_renderbuffer *rb; @@ -133,7 +133,7 @@ nouveau_renderbuffer_new(GLcontext *ctx, GLuint name) } static GLboolean -nouveau_renderbuffer_dri_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +nouveau_renderbuffer_dri_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { @@ -166,7 +166,7 @@ nouveau_renderbuffer_dri_new(GLenum format, __DRIdrawable *drawable) } static struct gl_framebuffer * -nouveau_framebuffer_new(GLcontext *ctx, GLuint name) +nouveau_framebuffer_new(struct gl_context *ctx, GLuint name) { struct nouveau_framebuffer *nfb; @@ -195,7 +195,7 @@ nouveau_framebuffer_dri_new(const struct gl_config *visual) } static void -nouveau_bind_framebuffer(GLcontext *ctx, GLenum target, +nouveau_bind_framebuffer(struct gl_context *ctx, GLenum target, struct gl_framebuffer *dfb, struct gl_framebuffer *rfb) { @@ -203,7 +203,7 @@ nouveau_bind_framebuffer(GLcontext *ctx, GLenum target, } static void -nouveau_framebuffer_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +nouveau_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb) { _mesa_framebuffer_renderbuffer(ctx, fb, attachment, rb); @@ -227,7 +227,7 @@ get_tex_format(struct gl_texture_image *ti) } static void -nouveau_render_texture(GLcontext *ctx, struct gl_framebuffer *fb, +nouveau_render_texture(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att) { struct gl_renderbuffer *rb = att->Renderbuffer; @@ -255,7 +255,7 @@ nouveau_render_texture(GLcontext *ctx, struct gl_framebuffer *fb, } static void -nouveau_finish_render_texture(GLcontext *ctx, +nouveau_finish_render_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { texture_dirty(att->Texture); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_render.h b/src/mesa/drivers/dri/nouveau/nouveau_render.h index 29d96eda77c..81c6119fcc6 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_render.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_render.h @@ -31,7 +31,7 @@ struct nouveau_array_state; -typedef void (*dispatch_t)(GLcontext *, unsigned int, int, unsigned int); +typedef void (*dispatch_t)(struct gl_context *, unsigned int, int, unsigned int); typedef unsigned (*extract_u_t)(struct nouveau_array_state *, int, int); typedef float (*extract_f_t)(struct nouveau_array_state *, int, int); @@ -40,7 +40,7 @@ struct nouveau_attr_info { int imm_method; int imm_fields; - void (*emit)(GLcontext *, struct nouveau_array_state *, const void *); + void (*emit)(struct gl_context *, struct nouveau_array_state *, const void *); }; struct nouveau_array_state { diff --git a/src/mesa/drivers/dri/nouveau/nouveau_render_t.c b/src/mesa/drivers/dri/nouveau/nouveau_render_t.c index 7ccd7e64165..dd38c14aa7c 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_render_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_render_t.c @@ -104,9 +104,9 @@ static void get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch) { if (!a->fields) { - auto void f(GLcontext *, unsigned int, int, unsigned int); + auto void f(struct gl_context *, unsigned int, int, unsigned int); - void f(GLcontext *ctx, unsigned int start, int delta, + void f(struct gl_context *ctx, unsigned int start, int delta, unsigned int n) { struct nouveau_channel *chan = context_chan(ctx); RENDER_LOCALS(ctx); @@ -117,9 +117,9 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch) *dispatch = f; } else if (a->type == GL_UNSIGNED_INT) { - auto void f(GLcontext *, unsigned int, int, unsigned int); + auto void f(struct gl_context *, unsigned int, int, unsigned int); - void f(GLcontext *ctx, unsigned int start, int delta, + void f(struct gl_context *ctx, unsigned int start, int delta, unsigned int n) { struct nouveau_channel *chan = context_chan(ctx); RENDER_LOCALS(ctx); @@ -130,9 +130,9 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch) *dispatch = f; } else { - auto void f(GLcontext *, unsigned int, int, unsigned int); + auto void f(struct gl_context *, unsigned int, int, unsigned int); - void f(GLcontext *ctx, unsigned int start, int delta, + void f(struct gl_context *ctx, unsigned int start, int delta, unsigned int n) { struct nouveau_channel *chan = context_chan(ctx); RENDER_LOCALS(ctx); @@ -208,7 +208,7 @@ get_array_extract(struct nouveau_array_state *a, * always be located right at the beginning of . */ static inline void * -get_scratch_vbo(GLcontext *ctx, unsigned size, struct nouveau_bo **bo, +get_scratch_vbo(struct gl_context *ctx, unsigned size, struct nouveau_bo **bo, unsigned *offset) { struct nouveau_scratch_state *scratch = &to_render_state(ctx)->scratch; @@ -253,7 +253,7 @@ get_scratch_vbo(GLcontext *ctx, unsigned size, struct nouveau_bo **bo, * Returns how many vertices you can draw using pushbuf dwords. */ static inline unsigned -get_max_vertices(GLcontext *ctx, const struct _mesa_index_buffer *ib, +get_max_vertices(struct gl_context *ctx, const struct _mesa_index_buffer *ib, int n) { struct nouveau_render_state *render = to_render_state(ctx); @@ -290,7 +290,7 @@ get_max_vertices(GLcontext *ctx, const struct _mesa_index_buffer *ib, #include "nouveau_swtnl_t.c" static void -TAG(emit_material)(GLcontext *ctx, struct nouveau_array_state *a, +TAG(emit_material)(struct gl_context *ctx, struct nouveau_array_state *a, const void *v) { const int attr = a->attr - VERT_ATTRIB_GENERIC0; @@ -314,7 +314,7 @@ TAG(emit_material)(GLcontext *ctx, struct nouveau_array_state *a, } static void -TAG(render_prims)(GLcontext *ctx, const struct gl_client_array **arrays, +TAG(render_prims)(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLboolean index_bounds_valid, @@ -334,7 +334,7 @@ TAG(render_prims)(GLcontext *ctx, const struct gl_client_array **arrays, } void -TAG(render_init)(GLcontext *ctx) +TAG(render_init)(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_scratch_state *scratch = &render->scratch; @@ -355,7 +355,7 @@ TAG(render_init)(GLcontext *ctx) } void -TAG(render_destroy)(GLcontext *ctx) +TAG(render_destroy)(struct gl_context *ctx) { TAG(swtnl_destroy)(ctx); } diff --git a/src/mesa/drivers/dri/nouveau/nouveau_span.c b/src/mesa/drivers/dri/nouveau/nouveau_span.c index 1bfdecc6a21..761cc769efe 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_span.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_span.c @@ -131,7 +131,7 @@ renderbuffer_map_unmap(struct gl_renderbuffer *rb, GLboolean map) } static void -texture_unit_map_unmap(GLcontext *ctx, struct gl_texture_unit *u, GLboolean map) +texture_unit_map_unmap(struct gl_context *ctx, struct gl_texture_unit *u, GLboolean map) { if (!u->_ReallyEnabled) return; @@ -157,7 +157,7 @@ framebuffer_map_unmap(struct gl_framebuffer *fb, GLboolean map) } static void -span_map_unmap(GLcontext *ctx, GLboolean map) +span_map_unmap(struct gl_context *ctx, GLboolean map) { int i; @@ -171,21 +171,21 @@ span_map_unmap(GLcontext *ctx, GLboolean map) } static void -nouveau_span_start(GLcontext *ctx) +nouveau_span_start(struct gl_context *ctx) { nouveau_fallback(ctx, SWRAST); span_map_unmap(ctx, GL_TRUE); } static void -nouveau_span_finish(GLcontext *ctx) +nouveau_span_finish(struct gl_context *ctx) { span_map_unmap(ctx, GL_FALSE); nouveau_fallback(ctx, HWTNL); } void -nouveau_span_functions_init(GLcontext *ctx) +nouveau_span_functions_init(struct gl_context *ctx) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_state.c b/src/mesa/drivers/dri/nouveau/nouveau_state.c index 01bcbc4b3cc..7b7ddd2f54d 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_state.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_state.c @@ -33,45 +33,45 @@ #include "tnl/tnl.h" static void -nouveau_alpha_func(GLcontext *ctx, GLenum func, GLfloat ref) +nouveau_alpha_func(struct gl_context *ctx, GLenum func, GLfloat ref) { context_dirty(ctx, ALPHA_FUNC); } static void -nouveau_blend_color(GLcontext *ctx, const GLfloat color[4]) +nouveau_blend_color(struct gl_context *ctx, const GLfloat color[4]) { context_dirty(ctx, BLEND_COLOR); } static void -nouveau_blend_equation_separate(GLcontext *ctx, GLenum modeRGB, GLenum modeA) +nouveau_blend_equation_separate(struct gl_context *ctx, GLenum modeRGB, GLenum modeA) { context_dirty(ctx, BLEND_EQUATION); } static void -nouveau_blend_func_separate(GLcontext *ctx, GLenum sfactorRGB, +nouveau_blend_func_separate(struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA) { context_dirty(ctx, BLEND_FUNC); } static void -nouveau_clip_plane(GLcontext *ctx, GLenum plane, const GLfloat *equation) +nouveau_clip_plane(struct gl_context *ctx, GLenum plane, const GLfloat *equation) { context_dirty_i(ctx, CLIP_PLANE, plane - GL_CLIP_PLANE0); } static void -nouveau_color_mask(GLcontext *ctx, GLboolean rmask, GLboolean gmask, +nouveau_color_mask(struct gl_context *ctx, GLboolean rmask, GLboolean gmask, GLboolean bmask, GLboolean amask) { context_dirty(ctx, COLOR_MASK); } static void -nouveau_color_material(GLcontext *ctx, GLenum face, GLenum mode) +nouveau_color_material(struct gl_context *ctx, GLenum face, GLenum mode) { context_dirty(ctx, COLOR_MATERIAL); context_dirty(ctx, MATERIAL_FRONT_AMBIENT); @@ -83,44 +83,44 @@ nouveau_color_material(GLcontext *ctx, GLenum face, GLenum mode) } static void -nouveau_cull_face(GLcontext *ctx, GLenum mode) +nouveau_cull_face(struct gl_context *ctx, GLenum mode) { context_dirty(ctx, CULL_FACE); } static void -nouveau_front_face(GLcontext *ctx, GLenum mode) +nouveau_front_face(struct gl_context *ctx, GLenum mode) { context_dirty(ctx, FRONT_FACE); } static void -nouveau_depth_func(GLcontext *ctx, GLenum func) +nouveau_depth_func(struct gl_context *ctx, GLenum func) { context_dirty(ctx, DEPTH); } static void -nouveau_depth_mask(GLcontext *ctx, GLboolean flag) +nouveau_depth_mask(struct gl_context *ctx, GLboolean flag) { context_dirty(ctx, DEPTH); } static void -nouveau_depth_range(GLcontext *ctx, GLclampd nearval, GLclampd farval) +nouveau_depth_range(struct gl_context *ctx, GLclampd nearval, GLclampd farval) { context_dirty(ctx, VIEWPORT); } static void -nouveau_draw_buffers(GLcontext *ctx, GLsizei n, const GLenum *buffers) +nouveau_draw_buffers(struct gl_context *ctx, GLsizei n, const GLenum *buffers) { nouveau_validate_framebuffer(ctx); context_dirty(ctx, FRAMEBUFFER); } static void -nouveau_enable(GLcontext *ctx, GLenum cap, GLboolean state) +nouveau_enable(struct gl_context *ctx, GLenum cap, GLboolean state) { int i; @@ -242,13 +242,13 @@ nouveau_enable(GLcontext *ctx, GLenum cap, GLboolean state) } static void -nouveau_fog(GLcontext *ctx, GLenum pname, const GLfloat *params) +nouveau_fog(struct gl_context *ctx, GLenum pname, const GLfloat *params) { context_dirty(ctx, FOG); } static void -nouveau_light(GLcontext *ctx, GLenum light, GLenum pname, const GLfloat *params) +nouveau_light(struct gl_context *ctx, GLenum light, GLenum pname, const GLfloat *params) { switch (pname) { case GL_AMBIENT: @@ -276,100 +276,100 @@ nouveau_light(GLcontext *ctx, GLenum light, GLenum pname, const GLfloat *params) } static void -nouveau_light_model(GLcontext *ctx, GLenum pname, const GLfloat *params) +nouveau_light_model(struct gl_context *ctx, GLenum pname, const GLfloat *params) { context_dirty(ctx, LIGHT_MODEL); context_dirty(ctx, MODELVIEW); } static void -nouveau_line_stipple(GLcontext *ctx, GLint factor, GLushort pattern ) +nouveau_line_stipple(struct gl_context *ctx, GLint factor, GLushort pattern ) { context_dirty(ctx, LINE_STIPPLE); } static void -nouveau_line_width(GLcontext *ctx, GLfloat width) +nouveau_line_width(struct gl_context *ctx, GLfloat width) { context_dirty(ctx, LINE_MODE); } static void -nouveau_logic_opcode(GLcontext *ctx, GLenum opcode) +nouveau_logic_opcode(struct gl_context *ctx, GLenum opcode) { context_dirty(ctx, LOGIC_OPCODE); } static void -nouveau_point_parameter(GLcontext *ctx, GLenum pname, const GLfloat *params) +nouveau_point_parameter(struct gl_context *ctx, GLenum pname, const GLfloat *params) { context_dirty(ctx, POINT_PARAMETER); } static void -nouveau_point_size(GLcontext *ctx, GLfloat size) +nouveau_point_size(struct gl_context *ctx, GLfloat size) { context_dirty(ctx, POINT_MODE); } static void -nouveau_polygon_mode(GLcontext *ctx, GLenum face, GLenum mode) +nouveau_polygon_mode(struct gl_context *ctx, GLenum face, GLenum mode) { context_dirty(ctx, POLYGON_MODE); } static void -nouveau_polygon_offset(GLcontext *ctx, GLfloat factor, GLfloat units) +nouveau_polygon_offset(struct gl_context *ctx, GLfloat factor, GLfloat units) { context_dirty(ctx, POLYGON_OFFSET); } static void -nouveau_polygon_stipple(GLcontext *ctx, const GLubyte *mask) +nouveau_polygon_stipple(struct gl_context *ctx, const GLubyte *mask) { context_dirty(ctx, POLYGON_STIPPLE); } static void -nouveau_render_mode(GLcontext *ctx, GLenum mode) +nouveau_render_mode(struct gl_context *ctx, GLenum mode) { context_dirty(ctx, RENDER_MODE); } static void -nouveau_scissor(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) +nouveau_scissor(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { context_dirty(ctx, SCISSOR); } static void -nouveau_shade_model(GLcontext *ctx, GLenum mode) +nouveau_shade_model(struct gl_context *ctx, GLenum mode) { context_dirty(ctx, SHADE_MODEL); } static void -nouveau_stencil_func_separate(GLcontext *ctx, GLenum face, GLenum func, +nouveau_stencil_func_separate(struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask) { context_dirty(ctx, STENCIL_FUNC); } static void -nouveau_stencil_mask_separate(GLcontext *ctx, GLenum face, GLuint mask) +nouveau_stencil_mask_separate(struct gl_context *ctx, GLenum face, GLuint mask) { context_dirty(ctx, STENCIL_MASK); } static void -nouveau_stencil_op_separate(GLcontext *ctx, GLenum face, GLenum fail, +nouveau_stencil_op_separate(struct gl_context *ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { context_dirty(ctx, STENCIL_OP); } static void -nouveau_tex_gen(GLcontext *ctx, GLenum coord, GLenum pname, +nouveau_tex_gen(struct gl_context *ctx, GLenum coord, GLenum pname, const GLfloat *params) { switch (pname) { @@ -384,7 +384,7 @@ nouveau_tex_gen(GLcontext *ctx, GLenum coord, GLenum pname, } static void -nouveau_tex_env(GLcontext *ctx, GLenum target, GLenum pname, +nouveau_tex_env(struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param) { switch (target) { @@ -398,7 +398,7 @@ nouveau_tex_env(GLcontext *ctx, GLenum target, GLenum pname, } static void -nouveau_tex_parameter(GLcontext *ctx, GLenum target, +nouveau_tex_parameter(struct gl_context *ctx, GLenum target, struct gl_texture_object *t, GLenum pname, const GLfloat *params) { @@ -424,18 +424,18 @@ nouveau_tex_parameter(GLcontext *ctx, GLenum target, } static void -nouveau_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) +nouveau_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { context_dirty(ctx, VIEWPORT); } void -nouveau_emit_nothing(GLcontext *ctx, int emit) +nouveau_emit_nothing(struct gl_context *ctx, int emit) { } int -nouveau_next_dirty_state(GLcontext *ctx) +nouveau_next_dirty_state(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); int i = BITSET_FFS(nctx->dirty) - 1; @@ -447,7 +447,7 @@ nouveau_next_dirty_state(GLcontext *ctx) } void -nouveau_state_emit(GLcontext *ctx) +nouveau_state_emit(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); const struct nouveau_driver *drv = context_drv(ctx); @@ -462,7 +462,7 @@ nouveau_state_emit(GLcontext *ctx) } static void -nouveau_update_state(GLcontext *ctx, GLbitfield new_state) +nouveau_update_state(struct gl_context *ctx, GLbitfield new_state) { int i; @@ -496,7 +496,7 @@ nouveau_update_state(GLcontext *ctx, GLbitfield new_state) } void -nouveau_state_init(GLcontext *ctx) +nouveau_state_init(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_state.h b/src/mesa/drivers/dri/nouveau/nouveau_state.h index 38ac9753c8c..cc61cf1a527 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_state.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_state.h @@ -105,18 +105,18 @@ enum { MAX_NOUVEAU_STATE = NUM_NOUVEAU_STATE + 16, }; -typedef void (*nouveau_state_func)(GLcontext *ctx, int emit); +typedef void (*nouveau_state_func)(struct gl_context *ctx, int emit); void -nouveau_state_init(GLcontext *ctx); +nouveau_state_init(struct gl_context *ctx); void -nouveau_emit_nothing(GLcontext *ctx, int emit); +nouveau_emit_nothing(struct gl_context *ctx, int emit); int -nouveau_next_dirty_state(GLcontext *ctx); +nouveau_next_dirty_state(struct gl_context *ctx); void -nouveau_state_emit(GLcontext *ctx); +nouveau_state_emit(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_surface.c b/src/mesa/drivers/dri/nouveau/nouveau_surface.c index b6b5c641c04..e6a712095c6 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_surface.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_surface.c @@ -29,7 +29,7 @@ #include "nouveau_util.h" void -nouveau_surface_alloc(GLcontext *ctx, struct nouveau_surface *s, +nouveau_surface_alloc(struct gl_context *ctx, struct nouveau_surface *s, enum nouveau_surface_layout layout, unsigned flags, unsigned format, unsigned width, unsigned height) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_surface.h b/src/mesa/drivers/dri/nouveau/nouveau_surface.h index ebdc89afb4e..8915ee4ca0f 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_surface.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_surface.h @@ -46,7 +46,7 @@ struct nouveau_surface { }; void -nouveau_surface_alloc(GLcontext *ctx, struct nouveau_surface *s, +nouveau_surface_alloc(struct gl_context *ctx, struct nouveau_surface *s, enum nouveau_surface_layout layout, unsigned flags, unsigned format, unsigned width, unsigned height); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c b/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c index a1609a0dd57..b3588e8fd39 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c @@ -99,7 +99,7 @@ static struct swtnl_attr_info { }; static void -swtnl_choose_attrs(GLcontext *ctx) +swtnl_choose_attrs(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -153,7 +153,7 @@ swtnl_choose_attrs(GLcontext *ctx) } static void -swtnl_alloc_vertices(GLcontext *ctx) +swtnl_alloc_vertices(struct gl_context *ctx) { struct nouveau_swtnl_state *swtnl = &to_render_state(ctx)->swtnl; @@ -164,7 +164,7 @@ swtnl_alloc_vertices(GLcontext *ctx) } static void -swtnl_bind_vertices(GLcontext *ctx) +swtnl_bind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_swtnl_state *swtnl = &render->swtnl; @@ -182,7 +182,7 @@ swtnl_bind_vertices(GLcontext *ctx) } static void -swtnl_unbind_vertices(GLcontext *ctx) +swtnl_unbind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); int i; @@ -200,7 +200,7 @@ swtnl_unbind_vertices(GLcontext *ctx) } static void -swtnl_flush_vertices(GLcontext *ctx) +swtnl_flush_vertices(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_swtnl_state *swtnl = &to_render_state(ctx)->swtnl; @@ -232,25 +232,25 @@ swtnl_flush_vertices(GLcontext *ctx) /* TnL renderer entry points */ static void -swtnl_start(GLcontext *ctx) +swtnl_start(struct gl_context *ctx) { swtnl_choose_attrs(ctx); } static void -swtnl_finish(GLcontext *ctx) +swtnl_finish(struct gl_context *ctx) { swtnl_flush_vertices(ctx); swtnl_unbind_vertices(ctx); } static void -swtnl_primitive(GLcontext *ctx, GLenum mode) +swtnl_primitive(struct gl_context *ctx, GLenum mode) { } static void -swtnl_reset_stipple(GLcontext *ctx) +swtnl_reset_stipple(struct gl_context *ctx) { } @@ -273,7 +273,7 @@ swtnl_reset_stipple(GLcontext *ctx) } while (0) static void -swtnl_points(GLcontext *ctx, GLuint first, GLuint last) +swtnl_points(struct gl_context *ctx, GLuint first, GLuint last) { int i, count; @@ -289,7 +289,7 @@ swtnl_points(GLcontext *ctx, GLuint first, GLuint last) } static void -swtnl_line(GLcontext *ctx, GLuint v1, GLuint v2) +swtnl_line(struct gl_context *ctx, GLuint v1, GLuint v2) { BEGIN_PRIMITIVE(GL_LINES, 2); OUT_VERTEX(v1); @@ -297,7 +297,7 @@ swtnl_line(GLcontext *ctx, GLuint v1, GLuint v2) } static void -swtnl_triangle(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3) +swtnl_triangle(struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3) { BEGIN_PRIMITIVE(GL_TRIANGLES, 3); OUT_VERTEX(v1); @@ -306,7 +306,7 @@ swtnl_triangle(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3) } static void -swtnl_quad(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4) +swtnl_quad(struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4) { BEGIN_PRIMITIVE(GL_QUADS, 4); OUT_VERTEX(v1); @@ -317,7 +317,7 @@ swtnl_quad(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4) /* TnL initialization. */ static void -TAG(swtnl_init)(GLcontext *ctx) +TAG(swtnl_init)(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -348,7 +348,7 @@ TAG(swtnl_init)(GLcontext *ctx) } static void -TAG(swtnl_destroy)(GLcontext *ctx) +TAG(swtnl_destroy)(struct gl_context *ctx) { nouveau_bo_ref(NULL, &to_render_state(ctx)->swtnl.vbo); } diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c index 14c7b5f64b7..cd063702af0 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c @@ -41,7 +41,7 @@ #include "drivers/common/meta.h" static struct gl_texture_object * -nouveau_texture_new(GLcontext *ctx, GLuint name, GLenum target) +nouveau_texture_new(struct gl_context *ctx, GLuint name, GLenum target) { struct nouveau_texture *nt = CALLOC_STRUCT(nouveau_texture); @@ -51,7 +51,7 @@ nouveau_texture_new(GLcontext *ctx, GLuint name, GLenum target) } static void -nouveau_texture_free(GLcontext *ctx, struct gl_texture_object *t) +nouveau_texture_free(struct gl_context *ctx, struct gl_texture_object *t) { struct nouveau_texture *nt = to_nouveau_texture(t); int i; @@ -63,7 +63,7 @@ nouveau_texture_free(GLcontext *ctx, struct gl_texture_object *t) } static struct gl_texture_image * -nouveau_teximage_new(GLcontext *ctx) +nouveau_teximage_new(struct gl_context *ctx) { struct nouveau_teximage *nti = CALLOC_STRUCT(nouveau_teximage); @@ -71,7 +71,7 @@ nouveau_teximage_new(GLcontext *ctx) } static void -nouveau_teximage_free(GLcontext *ctx, struct gl_texture_image *ti) +nouveau_teximage_free(struct gl_context *ctx, struct gl_texture_image *ti) { struct nouveau_teximage *nti = to_nouveau_teximage(ti); @@ -79,7 +79,7 @@ nouveau_teximage_free(GLcontext *ctx, struct gl_texture_image *ti) } static void -nouveau_teximage_map(GLcontext *ctx, struct gl_texture_image *ti) +nouveau_teximage_map(struct gl_context *ctx, struct gl_texture_image *ti) { struct nouveau_surface *s = &to_nouveau_teximage(ti)->surface; int ret; @@ -93,7 +93,7 @@ nouveau_teximage_map(GLcontext *ctx, struct gl_texture_image *ti) } static void -nouveau_teximage_unmap(GLcontext *ctx, struct gl_texture_image *ti) +nouveau_teximage_unmap(struct gl_context *ctx, struct gl_texture_image *ti) { struct nouveau_surface *s = &to_nouveau_teximage(ti)->surface; @@ -103,7 +103,7 @@ nouveau_teximage_unmap(GLcontext *ctx, struct gl_texture_image *ti) } static gl_format -nouveau_choose_tex_format(GLcontext *ctx, GLint internalFormat, +nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType) { switch (internalFormat) { @@ -195,7 +195,7 @@ teximage_fits(struct gl_texture_object *t, int level) } static GLboolean -validate_teximage(GLcontext *ctx, struct gl_texture_object *t, +validate_teximage(struct gl_context *ctx, struct gl_texture_object *t, int level, int x, int y, int z, int width, int height, int depth) { @@ -231,7 +231,7 @@ get_last_level(struct gl_texture_object *t) } static void -relayout_texture(GLcontext *ctx, struct gl_texture_object *t) +relayout_texture(struct gl_context *ctx, struct gl_texture_object *t) { struct gl_texture_image *base = t->Image[0][t->BaseLevel]; @@ -284,7 +284,7 @@ relayout_texture(GLcontext *ctx, struct gl_texture_object *t) } GLboolean -nouveau_texture_validate(GLcontext *ctx, struct gl_texture_object *t) +nouveau_texture_validate(struct gl_context *ctx, struct gl_texture_object *t) { struct nouveau_texture *nt = to_nouveau_texture(t); int i, last = get_last_level(t); @@ -311,7 +311,7 @@ nouveau_texture_validate(GLcontext *ctx, struct gl_texture_object *t) } void -nouveau_texture_reallocate(GLcontext *ctx, struct gl_texture_object *t) +nouveau_texture_reallocate(struct gl_context *ctx, struct gl_texture_object *t) { if (!teximage_fits(t, t->BaseLevel) || !teximage_fits(t, get_last_level(t))) { @@ -335,7 +335,7 @@ get_teximage_placement(struct gl_texture_image *ti) } static void -nouveau_teximage(GLcontext *ctx, GLint dims, GLenum target, GLint level, +nouveau_teximage(struct gl_context *ctx, GLint dims, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -386,7 +386,7 @@ nouveau_teximage(GLcontext *ctx, GLint dims, GLenum target, GLint level, } static void -nouveau_teximage_1d(GLcontext *ctx, GLenum target, GLint level, +nouveau_teximage_1d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -400,7 +400,7 @@ nouveau_teximage_1d(GLcontext *ctx, GLenum target, GLint level, } static void -nouveau_teximage_2d(GLcontext *ctx, GLenum target, GLint level, +nouveau_teximage_2d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -414,7 +414,7 @@ nouveau_teximage_2d(GLcontext *ctx, GLenum target, GLint level, } static void -nouveau_teximage_3d(GLcontext *ctx, GLenum target, GLint level, +nouveau_teximage_3d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -428,7 +428,7 @@ nouveau_teximage_3d(GLcontext *ctx, GLenum target, GLint level, } static void -nouveau_texsubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level, +nouveau_texsubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, GLenum format, GLenum type, const void *pixels, @@ -462,7 +462,7 @@ nouveau_texsubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level, } static void -nouveau_texsubimage_3d(GLcontext *ctx, GLenum target, GLint level, +nouveau_texsubimage_3d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, GLenum format, GLenum type, const void *pixels, @@ -476,7 +476,7 @@ nouveau_texsubimage_3d(GLcontext *ctx, GLenum target, GLint level, } static void -nouveau_texsubimage_2d(GLcontext *ctx, GLenum target, GLint level, +nouveau_texsubimage_2d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint width, GLint height, GLenum format, GLenum type, const void *pixels, @@ -490,7 +490,7 @@ nouveau_texsubimage_2d(GLcontext *ctx, GLenum target, GLint level, } static void -nouveau_texsubimage_1d(GLcontext *ctx, GLenum target, GLint level, +nouveau_texsubimage_1d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint width, GLenum format, GLenum type, const void *pixels, const struct gl_pixelstore_attrib *packing, @@ -503,7 +503,7 @@ nouveau_texsubimage_1d(GLcontext *ctx, GLenum target, GLint level, } static void -nouveau_get_teximage(GLcontext *ctx, GLenum target, GLint level, +nouveau_get_teximage(struct gl_context *ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels, struct gl_texture_object *t, struct gl_texture_image *ti) @@ -515,7 +515,7 @@ nouveau_get_teximage(GLcontext *ctx, GLenum target, GLint level, } static void -nouveau_bind_texture(GLcontext *ctx, GLenum target, +nouveau_bind_texture(struct gl_context *ctx, GLenum target, struct gl_texture_object *t) { context_dirty_i(ctx, TEX_OBJ, ctx->Texture.CurrentUnit); @@ -541,7 +541,7 @@ nouveau_set_texbuffer(__DRIcontext *dri_ctx, __DRIdrawable *draw) { struct nouveau_context *nctx = dri_ctx->driverPrivate; - GLcontext *ctx = &nctx->base; + struct gl_context *ctx = &nctx->base; struct gl_framebuffer *fb = draw->driverPrivate; struct gl_renderbuffer *rb = fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer; @@ -574,7 +574,7 @@ nouveau_set_texbuffer(__DRIcontext *dri_ctx, } static void -nouveau_texture_map(GLcontext *ctx, struct gl_texture_object *t) +nouveau_texture_map(struct gl_context *ctx, struct gl_texture_object *t) { int i; @@ -585,7 +585,7 @@ nouveau_texture_map(GLcontext *ctx, struct gl_texture_object *t) } static void -nouveau_texture_unmap(GLcontext *ctx, struct gl_texture_object *t) +nouveau_texture_unmap(struct gl_context *ctx, struct gl_texture_object *t) { int i; @@ -596,7 +596,7 @@ nouveau_texture_unmap(GLcontext *ctx, struct gl_texture_object *t) } static void -store_mipmap(GLcontext *ctx, GLenum target, int first, int last, +store_mipmap(struct gl_context *ctx, GLenum target, int first, int last, struct gl_texture_object *t) { struct gl_pixelstore_attrib packing = { @@ -624,7 +624,7 @@ store_mipmap(GLcontext *ctx, GLenum target, int first, int last, } static void -nouveau_generate_mipmap(GLcontext *ctx, GLenum target, +nouveau_generate_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *t) { if (_mesa_meta_check_generate_mipmap_fallback(ctx, target, t)) { diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.h b/src/mesa/drivers/dri/nouveau/nouveau_texture.h index 251f537bba7..fc170215f35 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.h @@ -49,9 +49,9 @@ nouveau_set_texbuffer(__DRIcontext *dri_ctx, __DRIdrawable *draw); GLboolean -nouveau_texture_validate(GLcontext *ctx, struct gl_texture_object *t); +nouveau_texture_validate(struct gl_context *ctx, struct gl_texture_object *t); void -nouveau_texture_reallocate(GLcontext *ctx, struct gl_texture_object *t); +nouveau_texture_reallocate(struct gl_context *ctx, struct gl_texture_object *t); #endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_util.h b/src/mesa/drivers/dri/nouveau/nouveau_util.h index 584cb80ef62..8df8867d14c 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_util.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_util.h @@ -130,7 +130,7 @@ get_scissors(struct gl_framebuffer *fb, int *x, int *y, int *w, int *h) } static inline void -get_viewport_scale(GLcontext *ctx, float a[16]) +get_viewport_scale(struct gl_context *ctx, float a[16]) { struct gl_viewport_attrib *vp = &ctx->Viewport; struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -147,7 +147,7 @@ get_viewport_scale(GLcontext *ctx, float a[16]) } static inline void -get_viewport_translate(GLcontext *ctx, float a[4]) +get_viewport_translate(struct gl_context *ctx, float a[4]) { struct gl_viewport_attrib *vp = &ctx->Viewport; struct gl_framebuffer *fb = ctx->DrawBuffer; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c index 9373b936ab7..394f3c9b500 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c @@ -86,7 +86,7 @@ vbo_deinit_array(struct nouveau_array_state *a) } static int -get_array_stride(GLcontext *ctx, const struct gl_client_array *a) +get_array_stride(struct gl_context *ctx, const struct gl_client_array *a) { struct nouveau_render_state *render = to_render_state(ctx); @@ -98,7 +98,7 @@ get_array_stride(GLcontext *ctx, const struct gl_client_array *a) } static void -vbo_init_arrays(GLcontext *ctx, const struct _mesa_index_buffer *ib, +vbo_init_arrays(struct gl_context *ctx, const struct _mesa_index_buffer *ib, const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); @@ -124,7 +124,7 @@ vbo_init_arrays(GLcontext *ctx, const struct _mesa_index_buffer *ib, } static void -vbo_deinit_arrays(GLcontext *ctx, const struct _mesa_index_buffer *ib, +vbo_deinit_arrays(struct gl_context *ctx, const struct _mesa_index_buffer *ib, const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); @@ -149,7 +149,7 @@ vbo_deinit_arrays(GLcontext *ctx, const struct _mesa_index_buffer *ib, /* Make some rendering decisions from the GL context. */ static void -vbo_choose_render_mode(GLcontext *ctx, const struct gl_client_array **arrays) +vbo_choose_render_mode(struct gl_context *ctx, const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); int i; @@ -172,7 +172,7 @@ vbo_choose_render_mode(GLcontext *ctx, const struct gl_client_array **arrays) } static void -vbo_emit_attr(GLcontext *ctx, const struct gl_client_array **arrays, int attr) +vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, int attr) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_render_state *render = to_render_state(ctx); @@ -209,7 +209,7 @@ vbo_emit_attr(GLcontext *ctx, const struct gl_client_array **arrays, int attr) #define MAT(a) (VERT_ATTRIB_GENERIC0 + MAT_ATTRIB_##a) static void -vbo_choose_attrs(GLcontext *ctx, const struct gl_client_array **arrays) +vbo_choose_attrs(struct gl_context *ctx, const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); int i; @@ -251,7 +251,7 @@ vbo_choose_attrs(GLcontext *ctx, const struct gl_client_array **arrays) } static int -get_max_client_stride(GLcontext *ctx, const struct gl_client_array **arrays) +get_max_client_stride(struct gl_context *ctx, const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); int i, s = 0; @@ -271,14 +271,14 @@ get_max_client_stride(GLcontext *ctx, const struct gl_client_array **arrays) } static void -TAG(vbo_render_prims)(GLcontext *ctx, const struct gl_client_array **arrays, +TAG(vbo_render_prims)(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLboolean index_bounds_valid, GLuint min_index, GLuint max_index); static GLboolean -vbo_maybe_split(GLcontext *ctx, const struct gl_client_array **arrays, +vbo_maybe_split(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLuint min_index, GLuint max_index) @@ -316,7 +316,7 @@ vbo_maybe_split(GLcontext *ctx, const struct gl_client_array **arrays, /* VBO rendering path. */ static void -vbo_bind_vertices(GLcontext *ctx, const struct gl_client_array **arrays, +vbo_bind_vertices(struct gl_context *ctx, const struct gl_client_array **arrays, GLint basevertex, GLuint min_index, GLuint max_index) { struct nouveau_render_state *render = to_render_state(ctx); @@ -354,7 +354,7 @@ vbo_bind_vertices(GLcontext *ctx, const struct gl_client_array **arrays, } static void -vbo_draw_vbo(GLcontext *ctx, const struct gl_client_array **arrays, +vbo_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLuint min_index, GLuint max_index) @@ -396,7 +396,7 @@ extract_id(struct nouveau_array_state *a, int i, int j) } static void -vbo_draw_imm(GLcontext *ctx, const struct gl_client_array **arrays, +vbo_draw_imm(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLuint min_index, GLuint max_index) @@ -433,7 +433,7 @@ vbo_draw_imm(GLcontext *ctx, const struct gl_client_array **arrays, /* draw_prims entry point when we're doing hw-tnl. */ static void -TAG(vbo_render_prims)(GLcontext *ctx, const struct gl_client_array **arrays, +TAG(vbo_render_prims)(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLboolean index_bounds_valid, diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c index 9906cac07a9..8683343b393 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.c +++ b/src/mesa/drivers/dri/nouveau/nv04_context.c @@ -46,7 +46,7 @@ texunit_needs_combiners(struct gl_texture_unit *u) } struct nouveau_grobj * -nv04_context_engine(GLcontext *ctx) +nv04_context_engine(struct gl_context *ctx) { struct nv04_context *nctx = to_nv04_context(ctx); struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; @@ -90,7 +90,7 @@ static void nv04_channel_flush_notify(struct nouveau_channel *chan) { struct nouveau_context *nctx = chan->user_private; - GLcontext *ctx = &nctx->base; + struct gl_context *ctx = &nctx->base; if (nctx->fallback < SWRAST) { nouveau_bo_state_emit(ctx); @@ -106,7 +106,7 @@ nv04_channel_flush_notify(struct nouveau_channel *chan) } static void -nv04_hwctx_init(GLcontext *ctx) +nv04_hwctx_init(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; @@ -136,7 +136,7 @@ nv04_hwctx_init(GLcontext *ctx) } static void -init_dummy_texture(GLcontext *ctx) +init_dummy_texture(struct gl_context *ctx) { struct nouveau_surface *s = &to_nv04_context(ctx)->dummy_texture; @@ -150,7 +150,7 @@ init_dummy_texture(GLcontext *ctx) } static void -nv04_context_destroy(GLcontext *ctx) +nv04_context_destroy(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -166,13 +166,13 @@ nv04_context_destroy(GLcontext *ctx) FREE(ctx); } -static GLcontext * +static struct gl_context * nv04_context_create(struct nouveau_screen *screen, const struct gl_config *visual, - GLcontext *share_ctx) + struct gl_context *share_ctx) { struct nv04_context *nctx; struct nouveau_hw_state *hw; - GLcontext *ctx; + struct gl_context *ctx; int ret; nctx = CALLOC_STRUCT(nv04_context); diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.h b/src/mesa/drivers/dri/nouveau/nv04_context.h index ccd3b61e267..45e70d2bc3c 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.h +++ b/src/mesa/drivers/dri/nouveau/nv04_context.h @@ -40,7 +40,7 @@ struct nv04_context { #define nv04_mtex_engine(obj) ((obj)->grclass == NV04_MULTITEX_TRIANGLE) struct nouveau_grobj * -nv04_context_engine(GLcontext *ctx); +nv04_context_engine(struct gl_context *ctx); extern const struct nouveau_driver nv04_driver; diff --git a/src/mesa/drivers/dri/nouveau/nv04_driver.h b/src/mesa/drivers/dri/nouveau/nv04_driver.h index 4d599e683a6..554914d1c30 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_driver.h +++ b/src/mesa/drivers/dri/nouveau/nv04_driver.h @@ -39,55 +39,55 @@ enum { /* nv04_render.c */ void -nv04_render_init(GLcontext *ctx); +nv04_render_init(struct gl_context *ctx); void -nv04_render_destroy(GLcontext *ctx); +nv04_render_destroy(struct gl_context *ctx); /* nv04_surface.c */ GLboolean -nv04_surface_init(GLcontext *ctx); +nv04_surface_init(struct gl_context *ctx); void -nv04_surface_takedown(GLcontext *ctx); +nv04_surface_takedown(struct gl_context *ctx); void -nv04_surface_copy(GLcontext *ctx, +nv04_surface_copy(struct gl_context *ctx, struct nouveau_surface *dst, struct nouveau_surface *src, int dx, int dy, int sx, int sy, int w, int h); void -nv04_surface_fill(GLcontext *ctx, +nv04_surface_fill(struct gl_context *ctx, struct nouveau_surface *dst, unsigned mask, unsigned value, int dx, int dy, int w, int h); /* nv04_state_fb.c */ void -nv04_emit_framebuffer(GLcontext *ctx, int emit); +nv04_emit_framebuffer(struct gl_context *ctx, int emit); void -nv04_emit_scissor(GLcontext *ctx, int emit); +nv04_emit_scissor(struct gl_context *ctx, int emit); /* nv04_state_raster.c */ void -nv04_defer_control(GLcontext *ctx, int emit); +nv04_defer_control(struct gl_context *ctx, int emit); void -nv04_emit_control(GLcontext *ctx, int emit); +nv04_emit_control(struct gl_context *ctx, int emit); void -nv04_defer_blend(GLcontext *ctx, int emit); +nv04_defer_blend(struct gl_context *ctx, int emit); void -nv04_emit_blend(GLcontext *ctx, int emit); +nv04_emit_blend(struct gl_context *ctx, int emit); /* nv04_state_frag.c */ void -nv04_emit_tex_env(GLcontext *ctx, int emit); +nv04_emit_tex_env(struct gl_context *ctx, int emit); /* nv04_state_tex.c */ void -nv04_emit_tex_obj(GLcontext *ctx, int emit); +nv04_emit_tex_obj(struct gl_context *ctx, int emit); #endif diff --git a/src/mesa/drivers/dri/nouveau/nv04_render.c b/src/mesa/drivers/dri/nouveau/nv04_render.c index 56e396d51f2..47bad24f9d9 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_render.c +++ b/src/mesa/drivers/dri/nouveau/nv04_render.c @@ -37,7 +37,7 @@ #define NUM_VERTEX_ATTRS 6 static void -swtnl_update_viewport(GLcontext *ctx) +swtnl_update_viewport(struct gl_context *ctx) { float *viewport = to_nv04_context(ctx)->viewport; struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -51,7 +51,7 @@ swtnl_update_viewport(GLcontext *ctx) } static void -swtnl_emit_attr(GLcontext *ctx, struct tnl_attr_map *m, int attr, int emit) +swtnl_emit_attr(struct gl_context *ctx, struct tnl_attr_map *m, int attr, int emit) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -68,7 +68,7 @@ swtnl_emit_attr(GLcontext *ctx, struct tnl_attr_map *m, int attr, int emit) } static void -swtnl_choose_attrs(GLcontext *ctx) +swtnl_choose_attrs(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct nouveau_grobj *fahrenheit = nv04_context_engine(ctx); @@ -94,24 +94,24 @@ swtnl_choose_attrs(GLcontext *ctx) /* TnL renderer entry points */ static void -swtnl_start(GLcontext *ctx) +swtnl_start(struct gl_context *ctx) { swtnl_choose_attrs(ctx); } static void -swtnl_finish(GLcontext *ctx) +swtnl_finish(struct gl_context *ctx) { FIRE_RING(context_chan(ctx)); } static void -swtnl_primitive(GLcontext *ctx, GLenum mode) +swtnl_primitive(struct gl_context *ctx, GLenum mode) { } static void -swtnl_reset_stipple(GLcontext *ctx) +swtnl_reset_stipple(struct gl_context *ctx) { } @@ -146,17 +146,17 @@ swtnl_reset_stipple(GLcontext *ctx) } static void -swtnl_points(GLcontext *ctx, GLuint first, GLuint last) +swtnl_points(struct gl_context *ctx, GLuint first, GLuint last) { } static void -swtnl_line(GLcontext *ctx, GLuint v1, GLuint v2) +swtnl_line(struct gl_context *ctx, GLuint v1, GLuint v2) { } static void -swtnl_triangle(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3) +swtnl_triangle(struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3) { BEGIN_PRIMITIVE(3); OUT_VERTEX(v1); @@ -166,7 +166,7 @@ swtnl_triangle(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3) } static void -swtnl_quad(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4) +swtnl_quad(struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4) { BEGIN_PRIMITIVE(4); OUT_VERTEX(v1); @@ -178,7 +178,7 @@ swtnl_quad(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4) /* TnL initialization. */ void -nv04_render_init(GLcontext *ctx) +nv04_render_init(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -207,6 +207,6 @@ nv04_render_init(GLcontext *ctx) } void -nv04_render_destroy(GLcontext *ctx) +nv04_render_destroy(struct gl_context *ctx) { } diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c index b9d232dbb80..a3e343660f8 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c @@ -47,7 +47,7 @@ get_rt_format(gl_format format) } void -nv04_emit_framebuffer(GLcontext *ctx, int emit) +nv04_emit_framebuffer(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; @@ -97,7 +97,7 @@ nv04_emit_framebuffer(GLcontext *ctx, int emit) } void -nv04_emit_scissor(GLcontext *ctx, int emit) +nv04_emit_scissor(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c index bb5d7dc20fc..658b23a4d91 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c @@ -41,7 +41,7 @@ NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0 struct combiner_state { - GLcontext *ctx; + struct gl_context *ctx; int unit; GLboolean alpha; GLboolean premodulate; @@ -234,7 +234,7 @@ setup_combiner(struct combiner_state *rc) } void -nv04_emit_tex_env(GLcontext *ctx, int emit) +nv04_emit_tex_env(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_ENV0; struct nouveau_channel *chan = context_chan(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c index c191571a5f8..a114f44b22b 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c @@ -127,13 +127,13 @@ get_blend_func(unsigned func) } void -nv04_defer_control(GLcontext *ctx, int emit) +nv04_defer_control(struct gl_context *ctx, int emit) { context_dirty(ctx, CONTROL); } void -nv04_emit_control(GLcontext *ctx, int emit) +nv04_emit_control(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *fahrenheit = nv04_context_engine(ctx); @@ -247,13 +247,13 @@ nv04_emit_control(GLcontext *ctx, int emit) } void -nv04_defer_blend(GLcontext *ctx, int emit) +nv04_defer_blend(struct gl_context *ctx, int emit) { context_dirty(ctx, BLEND); } void -nv04_emit_blend(GLcontext *ctx, int emit) +nv04_emit_blend(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *fahrenheit = nv04_context_engine(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c index b720089fbf0..1fe47a30e45 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c @@ -56,7 +56,7 @@ get_tex_format(struct gl_texture_image *ti) } void -nv04_emit_tex_obj(GLcontext *ctx, int emit) +nv04_emit_tex_obj(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_OBJ0; struct nouveau_channel *chan = context_chan(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv04_surface.c b/src/mesa/drivers/dri/nouveau/nv04_surface.c index ce0103604c2..6d3ffa26d3d 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_surface.c +++ b/src/mesa/drivers/dri/nouveau/nv04_surface.c @@ -191,7 +191,7 @@ sifm_format(gl_format format) } static void -nv04_surface_copy_swizzle(GLcontext *ctx, +nv04_surface_copy_swizzle(struct gl_context *ctx, struct nouveau_surface *dst, struct nouveau_surface *src, int dx, int dy, int sx, int sy, @@ -269,7 +269,7 @@ nv04_surface_copy_swizzle(GLcontext *ctx, } static void -nv04_surface_copy_m2mf(GLcontext *ctx, +nv04_surface_copy_m2mf(struct gl_context *ctx, struct nouveau_surface *dst, struct nouveau_surface *src, int dx, int dy, int sx, int sy, @@ -362,7 +362,7 @@ get_swizzled_offset(struct nouveau_surface *s, unsigned x, unsigned y) } static void -nv04_surface_copy_cpu(GLcontext *ctx, +nv04_surface_copy_cpu(struct gl_context *ctx, struct nouveau_surface *dst, struct nouveau_surface *src, int dx, int dy, int sx, int sy, @@ -393,7 +393,7 @@ nv04_surface_copy_cpu(GLcontext *ctx, } void -nv04_surface_copy(GLcontext *ctx, +nv04_surface_copy(struct gl_context *ctx, struct nouveau_surface *dst, struct nouveau_surface *src, int dx, int dy, int sx, int sy, @@ -418,7 +418,7 @@ nv04_surface_copy(GLcontext *ctx, } void -nv04_surface_fill(GLcontext *ctx, +nv04_surface_fill(struct gl_context *ctx, struct nouveau_surface *dst, unsigned mask, unsigned value, int dx, int dy, int w, int h) @@ -460,7 +460,7 @@ nv04_surface_fill(GLcontext *ctx, } void -nv04_surface_takedown(GLcontext *ctx) +nv04_surface_takedown(struct gl_context *ctx) { struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; @@ -475,7 +475,7 @@ nv04_surface_takedown(GLcontext *ctx) } GLboolean -nv04_surface_init(GLcontext *ctx) +nv04_surface_init(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c index 04b0fc37a83..fdcb43b7718 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_context.c +++ b/src/mesa/drivers/dri/nouveau/nv10_context.c @@ -41,7 +41,7 @@ static const struct dri_extension nv10_extensions[] = { }; static GLboolean -use_fast_zclear(GLcontext *ctx, GLbitfield buffers) +use_fast_zclear(struct gl_context *ctx, GLbitfield buffers) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -62,7 +62,7 @@ use_fast_zclear(GLcontext *ctx, GLbitfield buffers) } GLboolean -nv10_use_viewport_zclear(GLcontext *ctx) +nv10_use_viewport_zclear(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -74,7 +74,7 @@ nv10_use_viewport_zclear(GLcontext *ctx) } float -nv10_transform_depth(GLcontext *ctx, float z) +nv10_transform_depth(struct gl_context *ctx, float z) { struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -85,7 +85,7 @@ nv10_transform_depth(GLcontext *ctx, float z) } static void -nv10_zclear(GLcontext *ctx, GLbitfield *buffers) +nv10_zclear(struct gl_context *ctx, GLbitfield *buffers) { /* * Pre-nv17 cards don't have native support for fast Z clears, @@ -145,7 +145,7 @@ nv10_zclear(GLcontext *ctx, GLbitfield *buffers) } static void -nv17_zclear(GLcontext *ctx, GLbitfield *buffers) +nv17_zclear(struct gl_context *ctx, GLbitfield *buffers) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -175,7 +175,7 @@ nv17_zclear(GLcontext *ctx, GLbitfield *buffers) } static void -nv10_clear(GLcontext *ctx, GLbitfield buffers) +nv10_clear(struct gl_context *ctx, GLbitfield buffers) { nouveau_validate_framebuffer(ctx); @@ -190,7 +190,7 @@ nv10_clear(GLcontext *ctx, GLbitfield buffers) } static void -nv10_hwctx_init(GLcontext *ctx) +nv10_hwctx_init(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -402,7 +402,7 @@ nv10_hwctx_init(GLcontext *ctx) } static void -nv10_context_destroy(GLcontext *ctx) +nv10_context_destroy(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -415,12 +415,12 @@ nv10_context_destroy(GLcontext *ctx) FREE(ctx); } -static GLcontext * +static struct gl_context * nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visual, - GLcontext *share_ctx) + struct gl_context *share_ctx) { struct nouveau_context *nctx; - GLcontext *ctx; + struct gl_context *ctx; unsigned celsius_class; int ret; diff --git a/src/mesa/drivers/dri/nouveau/nv10_driver.h b/src/mesa/drivers/dri/nouveau/nv10_driver.h index 61dceab7b61..dec3d64e7d2 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_driver.h +++ b/src/mesa/drivers/dri/nouveau/nv10_driver.h @@ -38,124 +38,124 @@ enum { extern const struct nouveau_driver nv10_driver; GLboolean -nv10_use_viewport_zclear(GLcontext *ctx); +nv10_use_viewport_zclear(struct gl_context *ctx); float -nv10_transform_depth(GLcontext *ctx, float z); +nv10_transform_depth(struct gl_context *ctx, float z); /* nv10_render.c */ void -nv10_render_init(GLcontext *ctx); +nv10_render_init(struct gl_context *ctx); void -nv10_render_destroy(GLcontext *ctx); +nv10_render_destroy(struct gl_context *ctx); /* nv10_state_fb.c */ void -nv10_emit_framebuffer(GLcontext *ctx, int emit); +nv10_emit_framebuffer(struct gl_context *ctx, int emit); void -nv10_emit_render_mode(GLcontext *ctx, int emit); +nv10_emit_render_mode(struct gl_context *ctx, int emit); void -nv10_emit_scissor(GLcontext *ctx, int emit); +nv10_emit_scissor(struct gl_context *ctx, int emit); void -nv10_emit_viewport(GLcontext *ctx, int emit); +nv10_emit_viewport(struct gl_context *ctx, int emit); void -nv10_emit_zclear(GLcontext *ctx, int emit); +nv10_emit_zclear(struct gl_context *ctx, int emit); /* nv10_state_polygon.c */ void -nv10_emit_cull_face(GLcontext *ctx, int emit); +nv10_emit_cull_face(struct gl_context *ctx, int emit); void -nv10_emit_front_face(GLcontext *ctx, int emit); +nv10_emit_front_face(struct gl_context *ctx, int emit); void -nv10_emit_line_mode(GLcontext *ctx, int emit); +nv10_emit_line_mode(struct gl_context *ctx, int emit); void -nv10_emit_line_stipple(GLcontext *ctx, int emit); +nv10_emit_line_stipple(struct gl_context *ctx, int emit); void -nv10_emit_point_mode(GLcontext *ctx, int emit); +nv10_emit_point_mode(struct gl_context *ctx, int emit); void -nv10_emit_polygon_mode(GLcontext *ctx, int emit); +nv10_emit_polygon_mode(struct gl_context *ctx, int emit); void -nv10_emit_polygon_offset(GLcontext *ctx, int emit); +nv10_emit_polygon_offset(struct gl_context *ctx, int emit); void -nv10_emit_polygon_stipple(GLcontext *ctx, int emit); +nv10_emit_polygon_stipple(struct gl_context *ctx, int emit); /* nv10_state_raster.c */ void -nv10_emit_alpha_func(GLcontext *ctx, int emit); +nv10_emit_alpha_func(struct gl_context *ctx, int emit); void -nv10_emit_blend_color(GLcontext *ctx, int emit); +nv10_emit_blend_color(struct gl_context *ctx, int emit); void -nv10_emit_blend_equation(GLcontext *ctx, int emit); +nv10_emit_blend_equation(struct gl_context *ctx, int emit); void -nv10_emit_blend_func(GLcontext *ctx, int emit); +nv10_emit_blend_func(struct gl_context *ctx, int emit); void -nv10_emit_color_mask(GLcontext *ctx, int emit); +nv10_emit_color_mask(struct gl_context *ctx, int emit); void -nv10_emit_depth(GLcontext *ctx, int emit); +nv10_emit_depth(struct gl_context *ctx, int emit); void -nv10_emit_dither(GLcontext *ctx, int emit); +nv10_emit_dither(struct gl_context *ctx, int emit); void -nv10_emit_logic_opcode(GLcontext *ctx, int emit); +nv10_emit_logic_opcode(struct gl_context *ctx, int emit); void -nv10_emit_shade_model(GLcontext *ctx, int emit); +nv10_emit_shade_model(struct gl_context *ctx, int emit); void -nv10_emit_stencil_func(GLcontext *ctx, int emit); +nv10_emit_stencil_func(struct gl_context *ctx, int emit); void -nv10_emit_stencil_mask(GLcontext *ctx, int emit); +nv10_emit_stencil_mask(struct gl_context *ctx, int emit); void -nv10_emit_stencil_op(GLcontext *ctx, int emit); +nv10_emit_stencil_op(struct gl_context *ctx, int emit); /* nv10_state_frag.c */ void -nv10_get_general_combiner(GLcontext *ctx, int i, +nv10_get_general_combiner(struct gl_context *ctx, int i, uint32_t *a_in, uint32_t *a_out, uint32_t *c_in, uint32_t *c_out, uint32_t *k); void -nv10_get_final_combiner(GLcontext *ctx, uint64_t *in, int *n); +nv10_get_final_combiner(struct gl_context *ctx, uint64_t *in, int *n); void -nv10_emit_tex_env(GLcontext *ctx, int emit); +nv10_emit_tex_env(struct gl_context *ctx, int emit); void -nv10_emit_frag(GLcontext *ctx, int emit); +nv10_emit_frag(struct gl_context *ctx, int emit); /* nv10_state_tex.c */ void -nv10_emit_tex_gen(GLcontext *ctx, int emit); +nv10_emit_tex_gen(struct gl_context *ctx, int emit); void -nv10_emit_tex_mat(GLcontext *ctx, int emit); +nv10_emit_tex_mat(struct gl_context *ctx, int emit); void -nv10_emit_tex_obj(GLcontext *ctx, int emit); +nv10_emit_tex_obj(struct gl_context *ctx, int emit); /* nv10_state_tnl.c */ void -nv10_get_fog_coeff(GLcontext *ctx, float k[3]); +nv10_get_fog_coeff(struct gl_context *ctx, float k[3]); void nv10_get_spot_coeff(struct gl_light *l, float k[7]); @@ -164,42 +164,42 @@ void nv10_get_shininess_coeff(float s, float k[6]); void -nv10_emit_clip_plane(GLcontext *ctx, int emit); +nv10_emit_clip_plane(struct gl_context *ctx, int emit); void -nv10_emit_color_material(GLcontext *ctx, int emit); +nv10_emit_color_material(struct gl_context *ctx, int emit); void -nv10_emit_fog(GLcontext *ctx, int emit); +nv10_emit_fog(struct gl_context *ctx, int emit); void -nv10_emit_light_enable(GLcontext *ctx, int emit); +nv10_emit_light_enable(struct gl_context *ctx, int emit); void -nv10_emit_light_model(GLcontext *ctx, int emit); +nv10_emit_light_model(struct gl_context *ctx, int emit); void -nv10_emit_light_source(GLcontext *ctx, int emit); +nv10_emit_light_source(struct gl_context *ctx, int emit); void -nv10_emit_material_ambient(GLcontext *ctx, int emit); +nv10_emit_material_ambient(struct gl_context *ctx, int emit); void -nv10_emit_material_diffuse(GLcontext *ctx, int emit); +nv10_emit_material_diffuse(struct gl_context *ctx, int emit); void -nv10_emit_material_specular(GLcontext *ctx, int emit); +nv10_emit_material_specular(struct gl_context *ctx, int emit); void -nv10_emit_material_shininess(GLcontext *ctx, int emit); +nv10_emit_material_shininess(struct gl_context *ctx, int emit); void -nv10_emit_modelview(GLcontext *ctx, int emit); +nv10_emit_modelview(struct gl_context *ctx, int emit); void -nv10_emit_point_parameter(GLcontext *ctx, int emit); +nv10_emit_point_parameter(struct gl_context *ctx, int emit); void -nv10_emit_projection(GLcontext *ctx, int emit); +nv10_emit_projection(struct gl_context *ctx, int emit); #endif diff --git a/src/mesa/drivers/dri/nouveau/nv10_render.c b/src/mesa/drivers/dri/nouveau/nv10_render.c index e4c51f804cf..a03ace35366 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_render.c +++ b/src/mesa/drivers/dri/nouveau/nv10_render.c @@ -32,7 +32,7 @@ #define NUM_VERTEX_ATTRS 8 static void -nv10_emit_material(GLcontext *ctx, struct nouveau_array_state *a, +nv10_emit_material(struct gl_context *ctx, struct nouveau_array_state *a, const void *v); /* Vertex attribute format. */ @@ -106,7 +106,7 @@ get_hw_format(int type) } static void -nv10_render_set_format(GLcontext *ctx) +nv10_render_set_format(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -136,7 +136,7 @@ nv10_render_set_format(GLcontext *ctx) } static void -nv10_render_bind_vertices(GLcontext *ctx) +nv10_render_bind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_bo_context *bctx = context_bctx(ctx, VERTEX); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c index 81edbe8172d..d87fe96b1c0 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c @@ -51,7 +51,7 @@ get_rt_format(gl_format format) } static void -setup_lma_buffer(GLcontext *ctx) +setup_lma_buffer(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -86,7 +86,7 @@ setup_lma_buffer(GLcontext *ctx) } void -nv10_emit_framebuffer(GLcontext *ctx, int emit) +nv10_emit_framebuffer(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -149,12 +149,12 @@ nv10_emit_framebuffer(GLcontext *ctx, int emit) } void -nv10_emit_render_mode(GLcontext *ctx, int emit) +nv10_emit_render_mode(struct gl_context *ctx, int emit) { } void -nv10_emit_scissor(GLcontext *ctx, int emit) +nv10_emit_scissor(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -168,7 +168,7 @@ nv10_emit_scissor(GLcontext *ctx, int emit) } void -nv10_emit_viewport(GLcontext *ctx, int emit) +nv10_emit_viewport(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -194,7 +194,7 @@ nv10_emit_viewport(GLcontext *ctx, int emit) } void -nv10_emit_zclear(GLcontext *ctx, int emit) +nv10_emit_zclear(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c index ab713f9dbf5..5138c36df7b 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c @@ -61,7 +61,7 @@ #define RC_OUT_SUM NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 struct combiner_state { - GLcontext *ctx; + struct gl_context *ctx; int unit; GLboolean premodulate; @@ -298,7 +298,7 @@ setup_combiner(struct combiner_state *rc) } void -nv10_get_general_combiner(GLcontext *ctx, int i, +nv10_get_general_combiner(struct gl_context *ctx, int i, uint32_t *a_in, uint32_t *a_out, uint32_t *c_in, uint32_t *c_out, uint32_t *k) { @@ -328,7 +328,7 @@ nv10_get_general_combiner(GLcontext *ctx, int i, } void -nv10_get_final_combiner(GLcontext *ctx, uint64_t *in, int *n) +nv10_get_final_combiner(struct gl_context *ctx, uint64_t *in, int *n) { struct combiner_state rc = {}; @@ -366,7 +366,7 @@ nv10_get_final_combiner(GLcontext *ctx, uint64_t *in, int *n) } void -nv10_emit_tex_env(GLcontext *ctx, int emit) +nv10_emit_tex_env(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_ENV0; struct nouveau_channel *chan = context_chan(ctx); @@ -398,7 +398,7 @@ nv10_emit_tex_env(GLcontext *ctx, int emit) } void -nv10_emit_frag(GLcontext *ctx, int emit) +nv10_emit_frag(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c index deddca10118..4e49b0278cd 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c @@ -31,7 +31,7 @@ #include "nv10_driver.h" void -nv10_emit_cull_face(GLcontext *ctx, int emit) +nv10_emit_cull_face(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -47,7 +47,7 @@ nv10_emit_cull_face(GLcontext *ctx, int emit) } void -nv10_emit_front_face(GLcontext *ctx, int emit) +nv10_emit_front_face(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -58,7 +58,7 @@ nv10_emit_front_face(GLcontext *ctx, int emit) } void -nv10_emit_line_mode(GLcontext *ctx, int emit) +nv10_emit_line_mode(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -73,12 +73,12 @@ nv10_emit_line_mode(GLcontext *ctx, int emit) } void -nv10_emit_line_stipple(GLcontext *ctx, int emit) +nv10_emit_line_stipple(struct gl_context *ctx, int emit) { } void -nv10_emit_point_mode(GLcontext *ctx, int emit) +nv10_emit_point_mode(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -91,7 +91,7 @@ nv10_emit_point_mode(GLcontext *ctx, int emit) } void -nv10_emit_polygon_mode(GLcontext *ctx, int emit) +nv10_emit_polygon_mode(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -105,7 +105,7 @@ nv10_emit_polygon_mode(GLcontext *ctx, int emit) } void -nv10_emit_polygon_offset(GLcontext *ctx, int emit) +nv10_emit_polygon_offset(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -121,6 +121,6 @@ nv10_emit_polygon_offset(GLcontext *ctx, int emit) } void -nv10_emit_polygon_stipple(GLcontext *ctx, int emit) +nv10_emit_polygon_stipple(struct gl_context *ctx, int emit) { } diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c index a62cd807a91..99609844a18 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c @@ -31,7 +31,7 @@ #include "nv10_driver.h" void -nv10_emit_alpha_func(GLcontext *ctx, int emit) +nv10_emit_alpha_func(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -45,7 +45,7 @@ nv10_emit_alpha_func(GLcontext *ctx, int emit) } void -nv10_emit_blend_color(GLcontext *ctx, int emit) +nv10_emit_blend_color(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -58,7 +58,7 @@ nv10_emit_blend_color(GLcontext *ctx, int emit) } void -nv10_emit_blend_equation(GLcontext *ctx, int emit) +nv10_emit_blend_equation(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -71,7 +71,7 @@ nv10_emit_blend_equation(GLcontext *ctx, int emit) } void -nv10_emit_blend_func(GLcontext *ctx, int emit) +nv10_emit_blend_func(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -82,7 +82,7 @@ nv10_emit_blend_func(GLcontext *ctx, int emit) } void -nv10_emit_color_mask(GLcontext *ctx, int emit) +nv10_emit_color_mask(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -95,7 +95,7 @@ nv10_emit_color_mask(GLcontext *ctx, int emit) } void -nv10_emit_depth(GLcontext *ctx, int emit) +nv10_emit_depth(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -109,7 +109,7 @@ nv10_emit_depth(GLcontext *ctx, int emit) } void -nv10_emit_dither(GLcontext *ctx, int emit) +nv10_emit_dither(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -119,7 +119,7 @@ nv10_emit_dither(GLcontext *ctx, int emit) } void -nv10_emit_logic_opcode(GLcontext *ctx, int emit) +nv10_emit_logic_opcode(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -133,7 +133,7 @@ nv10_emit_logic_opcode(GLcontext *ctx, int emit) } void -nv10_emit_shade_model(GLcontext *ctx, int emit) +nv10_emit_shade_model(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -144,7 +144,7 @@ nv10_emit_shade_model(GLcontext *ctx, int emit) } void -nv10_emit_stencil_func(GLcontext *ctx, int emit) +nv10_emit_stencil_func(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -159,7 +159,7 @@ nv10_emit_stencil_func(GLcontext *ctx, int emit) } void -nv10_emit_stencil_mask(GLcontext *ctx, int emit) +nv10_emit_stencil_mask(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -169,7 +169,7 @@ nv10_emit_stencil_mask(GLcontext *ctx, int emit) } void -nv10_emit_stencil_op(GLcontext *ctx, int emit) +nv10_emit_stencil_op(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c index 6961ccbb450..0092ad0c20c 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c @@ -37,7 +37,7 @@ #define TX_MATRIX(i) (NV10TCL_TX0_MATRIX(0) + 64 * (i)) void -nv10_emit_tex_gen(GLcontext *ctx, int emit) +nv10_emit_tex_gen(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_GEN0; struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -70,7 +70,7 @@ nv10_emit_tex_gen(GLcontext *ctx, int emit) } void -nv10_emit_tex_mat(GLcontext *ctx, int emit) +nv10_emit_tex_mat(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_MAT0; struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -151,7 +151,7 @@ get_tex_format_rect(struct gl_texture_image *ti) } void -nv10_emit_tex_obj(GLcontext *ctx, int emit) +nv10_emit_tex_obj(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_OBJ0; struct nouveau_channel *chan = context_chan(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c index 6b2ede88e67..175abfca5c1 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c @@ -32,7 +32,7 @@ #include "nv10_driver.h" void -nv10_emit_clip_plane(GLcontext *ctx, int emit) +nv10_emit_clip_plane(struct gl_context *ctx, int emit) { } @@ -54,7 +54,7 @@ get_material_bitmask(unsigned m) } void -nv10_emit_color_material(GLcontext *ctx, int emit) +nv10_emit_color_material(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -93,7 +93,7 @@ get_fog_source(unsigned source) } void -nv10_get_fog_coeff(GLcontext *ctx, float k[3]) +nv10_get_fog_coeff(struct gl_context *ctx, float k[3]) { struct gl_fog_attrib *f = &ctx->Fog; @@ -121,7 +121,7 @@ nv10_get_fog_coeff(GLcontext *ctx, float k[3]) } void -nv10_emit_fog(GLcontext *ctx, int emit) +nv10_emit_fog(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -161,7 +161,7 @@ get_light_mode(struct gl_light *l) } void -nv10_emit_light_enable(GLcontext *ctx, int emit) +nv10_emit_light_enable(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -187,7 +187,7 @@ nv10_emit_light_enable(GLcontext *ctx, int emit) } void -nv10_emit_light_model(GLcontext *ctx, int emit) +nv10_emit_light_model(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -273,7 +273,7 @@ nv10_get_spot_coeff(struct gl_light *l, float k[7]) } void -nv10_emit_light_source(GLcontext *ctx, int emit) +nv10_emit_light_source(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_LIGHT_SOURCE0; struct nouveau_channel *chan = context_chan(ctx); @@ -313,7 +313,7 @@ nv10_emit_light_source(GLcontext *ctx, int emit) ctx->Light.ColorMaterialBitmask & (1 << MAT_ATTRIB_FRONT_##attr)) void -nv10_emit_material_ambient(GLcontext *ctx, int emit) +nv10_emit_material_ambient(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -355,7 +355,7 @@ nv10_emit_material_ambient(GLcontext *ctx, int emit) } void -nv10_emit_material_diffuse(GLcontext *ctx, int emit) +nv10_emit_material_diffuse(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -377,7 +377,7 @@ nv10_emit_material_diffuse(GLcontext *ctx, int emit) } void -nv10_emit_material_specular(GLcontext *ctx, int emit) +nv10_emit_material_specular(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -419,7 +419,7 @@ nv10_get_shininess_coeff(float s, float k[6]) } void -nv10_emit_material_shininess(GLcontext *ctx, int emit) +nv10_emit_material_shininess(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); @@ -435,7 +435,7 @@ nv10_emit_material_shininess(GLcontext *ctx, int emit) } void -nv10_emit_modelview(GLcontext *ctx, int emit) +nv10_emit_modelview(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -464,12 +464,12 @@ nv10_emit_modelview(GLcontext *ctx, int emit) } void -nv10_emit_point_parameter(GLcontext *ctx, int emit) +nv10_emit_point_parameter(struct gl_context *ctx, int emit) { } void -nv10_emit_projection(GLcontext *ctx, int emit) +nv10_emit_projection(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c index bc424f8b28b..c6111a2a9a0 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_context.c +++ b/src/mesa/drivers/dri/nouveau/nv20_context.c @@ -40,7 +40,7 @@ static const struct dri_extension nv20_extensions[] = { }; static void -nv20_hwctx_init(GLcontext *ctx) +nv20_hwctx_init(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); @@ -371,7 +371,7 @@ nv20_hwctx_init(GLcontext *ctx) } static void -nv20_context_destroy(GLcontext *ctx) +nv20_context_destroy(struct gl_context *ctx) { struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -384,12 +384,12 @@ nv20_context_destroy(GLcontext *ctx) FREE(ctx); } -static GLcontext * +static struct gl_context * nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visual, - GLcontext *share_ctx) + struct gl_context *share_ctx) { struct nouveau_context *nctx; - GLcontext *ctx; + struct gl_context *ctx; unsigned kelvin_class; int ret; diff --git a/src/mesa/drivers/dri/nouveau/nv20_driver.h b/src/mesa/drivers/dri/nouveau/nv20_driver.h index 8adecef2c4e..7fbe6ccfa68 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_driver.h +++ b/src/mesa/drivers/dri/nouveau/nv20_driver.h @@ -39,78 +39,78 @@ extern const struct nouveau_driver nv20_driver; /* nv20_render.c */ void -nv20_render_init(GLcontext *ctx); +nv20_render_init(struct gl_context *ctx); void -nv20_render_destroy(GLcontext *ctx); +nv20_render_destroy(struct gl_context *ctx); /* nv20_state_fb.c */ void -nv20_emit_framebuffer(GLcontext *ctx, int emit); +nv20_emit_framebuffer(struct gl_context *ctx, int emit); void -nv20_emit_viewport(GLcontext *ctx, int emit); +nv20_emit_viewport(struct gl_context *ctx, int emit); /* nv20_state_polygon.c */ void -nv20_emit_point_mode(GLcontext *ctx, int emit); +nv20_emit_point_mode(struct gl_context *ctx, int emit); /* nv20_state_raster.c */ void -nv20_emit_logic_opcode(GLcontext *ctx, int emit); +nv20_emit_logic_opcode(struct gl_context *ctx, int emit); /* nv20_state_frag.c */ void -nv20_emit_tex_env(GLcontext *ctx, int emit); +nv20_emit_tex_env(struct gl_context *ctx, int emit); void -nv20_emit_frag(GLcontext *ctx, int emit); +nv20_emit_frag(struct gl_context *ctx, int emit); /* nv20_state_tex.c */ void -nv20_emit_tex_gen(GLcontext *ctx, int emit); +nv20_emit_tex_gen(struct gl_context *ctx, int emit); void -nv20_emit_tex_mat(GLcontext *ctx, int emit); +nv20_emit_tex_mat(struct gl_context *ctx, int emit); void -nv20_emit_tex_obj(GLcontext *ctx, int emit); +nv20_emit_tex_obj(struct gl_context *ctx, int emit); void -nv20_emit_tex_shader(GLcontext *ctx, int emit); +nv20_emit_tex_shader(struct gl_context *ctx, int emit); /* nv20_state_tnl.c */ void -nv20_emit_clip_plane(GLcontext *ctx, int emit); +nv20_emit_clip_plane(struct gl_context *ctx, int emit); void -nv20_emit_color_material(GLcontext *ctx, int emit); +nv20_emit_color_material(struct gl_context *ctx, int emit); void -nv20_emit_fog(GLcontext *ctx, int emit); +nv20_emit_fog(struct gl_context *ctx, int emit); void -nv20_emit_light_model(GLcontext *ctx, int emit); +nv20_emit_light_model(struct gl_context *ctx, int emit); void -nv20_emit_light_source(GLcontext *ctx, int emit); +nv20_emit_light_source(struct gl_context *ctx, int emit); void -nv20_emit_material_ambient(GLcontext *ctx, int emit); +nv20_emit_material_ambient(struct gl_context *ctx, int emit); void -nv20_emit_material_diffuse(GLcontext *ctx, int emit); +nv20_emit_material_diffuse(struct gl_context *ctx, int emit); void -nv20_emit_material_specular(GLcontext *ctx, int emit); +nv20_emit_material_specular(struct gl_context *ctx, int emit); void -nv20_emit_material_shininess(GLcontext *ctx, int emit); +nv20_emit_material_shininess(struct gl_context *ctx, int emit); void -nv20_emit_modelview(GLcontext *ctx, int emit); +nv20_emit_modelview(struct gl_context *ctx, int emit); void -nv20_emit_projection(GLcontext *ctx, int emit); +nv20_emit_projection(struct gl_context *ctx, int emit); #endif diff --git a/src/mesa/drivers/dri/nouveau/nv20_render.c b/src/mesa/drivers/dri/nouveau/nv20_render.c index d7c3e747f02..6b668544627 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_render.c +++ b/src/mesa/drivers/dri/nouveau/nv20_render.c @@ -32,7 +32,7 @@ #define NUM_VERTEX_ATTRS 16 static void -nv20_emit_material(GLcontext *ctx, struct nouveau_array_state *a, +nv20_emit_material(struct gl_context *ctx, struct nouveau_array_state *a, const void *v); /* Vertex attribute format. */ @@ -130,7 +130,7 @@ get_hw_format(int type) } static void -nv20_render_set_format(GLcontext *ctx) +nv20_render_set_format(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -158,7 +158,7 @@ nv20_render_set_format(GLcontext *ctx) } static void -nv20_render_bind_vertices(GLcontext *ctx) +nv20_render_bind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_bo_context *bctx = context_bctx(ctx, VERTEX); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c index 95691cad047..7822ca2a098 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c @@ -52,7 +52,7 @@ get_rt_format(gl_format format) } void -nv20_emit_framebuffer(GLcontext *ctx, int emit) +nv20_emit_framebuffer(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); @@ -103,7 +103,7 @@ nv20_emit_framebuffer(GLcontext *ctx, int emit) } void -nv20_emit_viewport(GLcontext *ctx, int emit) +nv20_emit_viewport(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c index 74803d2ae84..f9212d8b396 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c @@ -31,7 +31,7 @@ #include "nv20_driver.h" void -nv20_emit_tex_env(GLcontext *ctx, int emit) +nv20_emit_tex_env(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_ENV0; struct nouveau_channel *chan = context_chan(ctx); @@ -55,7 +55,7 @@ nv20_emit_tex_env(GLcontext *ctx, int emit) } void -nv20_emit_frag(GLcontext *ctx, int emit) +nv20_emit_frag(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c index 3a320e2dac5..a6e237f8c42 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c @@ -31,7 +31,7 @@ #include "nv20_driver.h" void -nv20_emit_point_mode(GLcontext *ctx, int emit) +nv20_emit_point_mode(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c index b43b29bb23b..0fc7a3259d7 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c @@ -31,7 +31,7 @@ #include "nv20_driver.h" void -nv20_emit_logic_opcode(GLcontext *ctx, int emit) +nv20_emit_logic_opcode(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c index ea6b9b96db3..cfff1fe8397 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c @@ -37,7 +37,7 @@ #define TX_MATRIX(i) (NV20TCL_TX0_MATRIX(0) + 64 * (i)) void -nv20_emit_tex_gen(GLcontext *ctx, int emit) +nv20_emit_tex_gen(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_GEN0; struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -67,7 +67,7 @@ nv20_emit_tex_gen(GLcontext *ctx, int emit) } void -nv20_emit_tex_mat(GLcontext *ctx, int emit) +nv20_emit_tex_mat(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_MAT0; struct nouveau_context *nctx = to_nouveau_context(ctx); @@ -154,7 +154,7 @@ get_tex_format_rect(struct gl_texture_image *ti) } void -nv20_emit_tex_obj(GLcontext *ctx, int emit) +nv20_emit_tex_obj(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_TEX_OBJ0; struct nouveau_channel *chan = context_chan(ctx); @@ -251,7 +251,7 @@ nv20_emit_tex_obj(GLcontext *ctx, int emit) } void -nv20_emit_tex_shader(GLcontext *ctx, int emit) +nv20_emit_tex_shader(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c index 2daaae260c5..b65cd9ad871 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c @@ -55,7 +55,7 @@ NV20TCL_FRONT_MATERIAL_SHININESS(0)) void -nv20_emit_clip_plane(GLcontext *ctx, int emit) +nv20_emit_clip_plane(struct gl_context *ctx, int emit) { } @@ -86,7 +86,7 @@ get_material_bitmask(unsigned m) } void -nv20_emit_color_material(GLcontext *ctx, int emit) +nv20_emit_color_material(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); @@ -140,7 +140,7 @@ get_fog_source(unsigned source) } void -nv20_emit_fog(GLcontext *ctx, int emit) +nv20_emit_fog(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -165,7 +165,7 @@ nv20_emit_fog(GLcontext *ctx, int emit) } void -nv20_emit_light_model(GLcontext *ctx, int emit) +nv20_emit_light_model(struct gl_context *ctx, int emit) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); @@ -187,7 +187,7 @@ nv20_emit_light_model(GLcontext *ctx, int emit) } void -nv20_emit_light_source(GLcontext *ctx, int emit) +nv20_emit_light_source(struct gl_context *ctx, int emit) { const int i = emit - NOUVEAU_STATE_LIGHT_SOURCE0; struct nouveau_channel *chan = context_chan(ctx); @@ -226,7 +226,7 @@ nv20_emit_light_source(GLcontext *ctx, int emit) ctx->Light.ColorMaterialBitmask & (1 << MAT_ATTRIB_##attr(side))) void -nv20_emit_material_ambient(GLcontext *ctx, int emit) +nv20_emit_material_ambient(struct gl_context *ctx, int emit) { const int side = emit - NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT; struct nouveau_channel *chan = context_chan(ctx); @@ -269,7 +269,7 @@ nv20_emit_material_ambient(GLcontext *ctx, int emit) } void -nv20_emit_material_diffuse(GLcontext *ctx, int emit) +nv20_emit_material_diffuse(struct gl_context *ctx, int emit) { const int side = emit - NOUVEAU_STATE_MATERIAL_FRONT_DIFFUSE; struct nouveau_channel *chan = context_chan(ctx); @@ -292,7 +292,7 @@ nv20_emit_material_diffuse(GLcontext *ctx, int emit) } void -nv20_emit_material_specular(GLcontext *ctx, int emit) +nv20_emit_material_specular(struct gl_context *ctx, int emit) { const int side = emit - NOUVEAU_STATE_MATERIAL_FRONT_SPECULAR; struct nouveau_channel *chan = context_chan(ctx); @@ -311,7 +311,7 @@ nv20_emit_material_specular(GLcontext *ctx, int emit) } void -nv20_emit_material_shininess(GLcontext *ctx, int emit) +nv20_emit_material_shininess(struct gl_context *ctx, int emit) { const int side = emit - NOUVEAU_STATE_MATERIAL_FRONT_SHININESS; struct nouveau_channel *chan = context_chan(ctx); @@ -328,7 +328,7 @@ nv20_emit_material_shininess(GLcontext *ctx, int emit) } void -nv20_emit_modelview(GLcontext *ctx, int emit) +nv20_emit_modelview(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); @@ -357,7 +357,7 @@ nv20_emit_modelview(GLcontext *ctx, int emit) } void -nv20_emit_projection(GLcontext *ctx, int emit) +nv20_emit_projection(struct gl_context *ctx, int emit) { struct nouveau_context *nctx = to_nouveau_context(ctx); struct nouveau_channel *chan = context_chan(ctx); diff --git a/src/mesa/drivers/dri/r128/r128_context.c b/src/mesa/drivers/dri/r128/r128_context.c index accd9a5ddbe..274108005f3 100644 --- a/src/mesa/drivers/dri/r128/r128_context.c +++ b/src/mesa/drivers/dri/r128/r128_context.c @@ -103,7 +103,7 @@ GLboolean r128CreateContext( gl_api api, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; __DRIscreen *sPriv = driContextPriv->driScreenPriv; struct dd_function_table functions; r128ContextPtr rmesa; diff --git a/src/mesa/drivers/dri/r128/r128_context.h b/src/mesa/drivers/dri/r128/r128_context.h index e9ff2fe9de4..0a06c43878d 100644 --- a/src/mesa/drivers/dri/r128/r128_context.h +++ b/src/mesa/drivers/dri/r128/r128_context.h @@ -113,7 +113,7 @@ typedef void (*r128_point_func)( r128ContextPtr, struct r128_context { - GLcontext *glCtx; /* Mesa context */ + struct gl_context *glCtx; /* Mesa context */ /* Driver and hardware state management */ diff --git a/src/mesa/drivers/dri/r128/r128_dd.c b/src/mesa/drivers/dri/r128/r128_dd.c index 7dcfa3b2854..0b7005eba69 100644 --- a/src/mesa/drivers/dri/r128/r128_dd.c +++ b/src/mesa/drivers/dri/r128/r128_dd.c @@ -59,7 +59,7 @@ static void r128GetBufferSize( struct gl_framebuffer *buffer, /* Return various strings for glGetString(). */ -static const GLubyte *r128GetString( GLcontext *ctx, GLenum name ) +static const GLubyte *r128GetString( struct gl_context *ctx, GLenum name ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); static char buffer[128]; @@ -97,7 +97,7 @@ static const GLubyte *r128GetString( GLcontext *ctx, GLenum name ) * hardware. All commands that are normally sent to the ring are * already considered `flushed'. */ -static void r128Flush( GLcontext *ctx ) +static void r128Flush( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -118,7 +118,7 @@ static void r128Flush( GLcontext *ctx ) /* Make sure all commands have been sent to the hardware and have * completed processing. */ -static void r128Finish( GLcontext *ctx ) +static void r128Finish( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r128/r128_ioctl.c b/src/mesa/drivers/dri/r128/r128_ioctl.c index 56758d971c3..950e1d4fbd5 100644 --- a/src/mesa/drivers/dri/r128/r128_ioctl.c +++ b/src/mesa/drivers/dri/r128/r128_ioctl.c @@ -398,7 +398,7 @@ void r128PageFlip( __DRIdrawable *dPriv ) * Buffer clear */ -static void r128Clear( GLcontext *ctx, GLbitfield mask ) +static void r128Clear( struct gl_context *ctx, GLbitfield mask ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); __DRIdrawable *dPriv = rmesa->driDrawable; diff --git a/src/mesa/drivers/dri/r128/r128_screen.c b/src/mesa/drivers/dri/r128/r128_screen.c index 43ab0fc64dd..bbcb6ee1808 100644 --- a/src/mesa/drivers/dri/r128/r128_screen.c +++ b/src/mesa/drivers/dri/r128/r128_screen.c @@ -359,7 +359,7 @@ r128SwapBuffers(__DRIdrawable *dPriv) { if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { r128ContextPtr rmesa; - GLcontext *ctx; + struct gl_context *ctx; rmesa = (r128ContextPtr) dPriv->driContextPriv->driverPrivate; ctx = rmesa->glCtx; if (ctx->Visual.doubleBufferMode) { diff --git a/src/mesa/drivers/dri/r128/r128_span.c b/src/mesa/drivers/dri/r128/r128_span.c index d9d109c17ed..307de56ee13 100644 --- a/src/mesa/drivers/dri/r128/r128_span.c +++ b/src/mesa/drivers/dri/r128/r128_span.c @@ -400,7 +400,7 @@ do { \ #include "stenciltmp.h" static void -r128SpanRenderStart( GLcontext *ctx ) +r128SpanRenderStart( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); FLUSH_BATCH(rmesa); @@ -409,7 +409,7 @@ r128SpanRenderStart( GLcontext *ctx ) } static void -r128SpanRenderFinish( GLcontext *ctx ) +r128SpanRenderFinish( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); _swrast_flush( ctx ); @@ -417,7 +417,7 @@ r128SpanRenderFinish( GLcontext *ctx ) UNLOCK_HARDWARE( rmesa ); } -void r128DDInitSpanFuncs( GLcontext *ctx ) +void r128DDInitSpanFuncs( struct gl_context *ctx ) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = r128SpanRenderStart; diff --git a/src/mesa/drivers/dri/r128/r128_span.h b/src/mesa/drivers/dri/r128/r128_span.h index 259810ee792..adb571d4d0f 100644 --- a/src/mesa/drivers/dri/r128/r128_span.h +++ b/src/mesa/drivers/dri/r128/r128_span.h @@ -37,7 +37,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" -extern void r128DDInitSpanFuncs( GLcontext *ctx ); +extern void r128DDInitSpanFuncs( struct gl_context *ctx ); extern void r128SetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); diff --git a/src/mesa/drivers/dri/r128/r128_state.c b/src/mesa/drivers/dri/r128/r128_state.c index 9ad25f7f463..4a49e8fc70f 100644 --- a/src/mesa/drivers/dri/r128/r128_state.c +++ b/src/mesa/drivers/dri/r128/r128_state.c @@ -125,7 +125,7 @@ static int blend_factor( r128ContextPtr rmesa, GLenum factor, GLboolean is_src ) } -static void r128UpdateAlphaMode( GLcontext *ctx ) +static void r128UpdateAlphaMode( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint a = rmesa->setup.misc_3d_state_cntl_reg; @@ -209,7 +209,7 @@ static void r128UpdateAlphaMode( GLcontext *ctx ) } } -static void r128DDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) +static void r128DDAlphaFunc( struct gl_context *ctx, GLenum func, GLfloat ref ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -217,7 +217,7 @@ static void r128DDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) rmesa->new_state |= R128_NEW_ALPHA; } -static void r128DDBlendEquationSeparate( GLcontext *ctx, +static void r128DDBlendEquationSeparate( struct gl_context *ctx, GLenum modeRGB, GLenum modeA ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -239,7 +239,7 @@ static void r128DDBlendEquationSeparate( GLcontext *ctx, rmesa->new_state |= R128_NEW_ALPHA; } -static void r128DDBlendFuncSeparate( GLcontext *ctx, +static void r128DDBlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -254,7 +254,7 @@ static void r128DDBlendFuncSeparate( GLcontext *ctx, */ static void -r128DDStencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, +r128DDStencilFuncSeparate( struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -302,7 +302,7 @@ r128DDStencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, } static void -r128DDStencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) +r128DDStencilMaskSeparate( struct gl_context *ctx, GLenum face, GLuint mask ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint refmask = (((ctx->Stencil.Ref[0] & 0xff) << 0) | @@ -315,7 +315,7 @@ r128DDStencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) } } -static void r128DDStencilOpSeparate( GLcontext *ctx, GLenum face, GLenum fail, +static void r128DDStencilOpSeparate( struct gl_context *ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -414,7 +414,7 @@ static void r128DDStencilOpSeparate( GLcontext *ctx, GLenum face, GLenum fail, } } -static void r128DDClearStencil( GLcontext *ctx, GLint s ) +static void r128DDClearStencil( struct gl_context *ctx, GLint s ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -428,7 +428,7 @@ static void r128DDClearStencil( GLcontext *ctx, GLint s ) * Depth testing */ -static void r128UpdateZMode( GLcontext *ctx ) +static void r128UpdateZMode( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint z = rmesa->setup.z_sten_cntl_c; @@ -485,7 +485,7 @@ static void r128UpdateZMode( GLcontext *ctx ) } } -static void r128DDDepthFunc( GLcontext *ctx, GLenum func ) +static void r128DDDepthFunc( struct gl_context *ctx, GLenum func ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -493,7 +493,7 @@ static void r128DDDepthFunc( GLcontext *ctx, GLenum func ) rmesa->new_state |= R128_NEW_DEPTH; } -static void r128DDDepthMask( GLcontext *ctx, GLboolean flag ) +static void r128DDDepthMask( struct gl_context *ctx, GLboolean flag ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -501,7 +501,7 @@ static void r128DDDepthMask( GLcontext *ctx, GLboolean flag ) rmesa->new_state |= R128_NEW_DEPTH; } -static void r128DDClearDepth( GLcontext *ctx, GLclampd d ) +static void r128DDClearDepth( struct gl_context *ctx, GLclampd d ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -524,7 +524,7 @@ static void r128DDClearDepth( GLcontext *ctx, GLclampd d ) * Fog */ -static void r128UpdateFogAttrib( GLcontext *ctx ) +static void r128UpdateFogAttrib( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint t = rmesa->setup.tex_cntl_c; @@ -553,7 +553,7 @@ static void r128UpdateFogAttrib( GLcontext *ctx ) } } -static void r128DDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) +static void r128DDFogfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -566,7 +566,7 @@ static void r128DDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) * Clipping */ -static void r128UpdateClipping( GLcontext *ctx ) +static void r128UpdateClipping( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -622,7 +622,7 @@ static void r128UpdateClipping( GLcontext *ctx ) } } -static void r128DDScissor( GLcontext *ctx, +static void r128DDScissor( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -636,7 +636,7 @@ static void r128DDScissor( GLcontext *ctx, * Culling */ -static void r128UpdateCull( GLcontext *ctx ) +static void r128UpdateCull( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint f = rmesa->setup.pm4_vc_fpu_setup; @@ -675,7 +675,7 @@ static void r128UpdateCull( GLcontext *ctx ) } } -static void r128DDCullFace( GLcontext *ctx, GLenum mode ) +static void r128DDCullFace( struct gl_context *ctx, GLenum mode ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -683,7 +683,7 @@ static void r128DDCullFace( GLcontext *ctx, GLenum mode ) rmesa->new_state |= R128_NEW_CULL; } -static void r128DDFrontFace( GLcontext *ctx, GLenum mode ) +static void r128DDFrontFace( struct gl_context *ctx, GLenum mode ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -696,7 +696,7 @@ static void r128DDFrontFace( GLcontext *ctx, GLenum mode ) * Masks */ -static void r128UpdateMasks( GLcontext *ctx ) +static void r128UpdateMasks( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -712,7 +712,7 @@ static void r128UpdateMasks( GLcontext *ctx ) } } -static void r128DDColorMask( GLcontext *ctx, +static void r128DDColorMask( struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -731,7 +731,7 @@ static void r128DDColorMask( GLcontext *ctx, * sense to break them out of the core texture state update routines. */ -static void updateSpecularLighting( GLcontext *ctx ) +static void updateSpecularLighting( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint t = rmesa->setup.tex_cntl_c; @@ -761,7 +761,7 @@ static void updateSpecularLighting( GLcontext *ctx ) } -static void r128DDLightModelfv( GLcontext *ctx, GLenum pname, +static void r128DDLightModelfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -777,7 +777,7 @@ static void r128DDLightModelfv( GLcontext *ctx, GLenum pname, } } -static void r128DDShadeModel( GLcontext *ctx, GLenum mode ) +static void r128DDShadeModel( struct gl_context *ctx, GLenum mode ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint s = rmesa->setup.pm4_vc_fpu_setup; @@ -811,7 +811,7 @@ static void r128DDShadeModel( GLcontext *ctx, GLenum mode ) * Window position */ -static void r128UpdateWindow( GLcontext *ctx ) +static void r128UpdateWindow( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); int x = rmesa->driDrawable->x; @@ -834,7 +834,7 @@ static void r128UpdateWindow( GLcontext *ctx ) * Viewport */ -static void r128CalcViewport( GLcontext *ctx ) +static void r128CalcViewport( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -850,14 +850,14 @@ static void r128CalcViewport( GLcontext *ctx ) m[MAT_TZ] = v[MAT_TZ] * rmesa->depth_scale; } -static void r128Viewport( GLcontext *ctx, +static void r128Viewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { r128CalcViewport( ctx ); } -static void r128DepthRange( GLcontext *ctx, +static void r128DepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { r128CalcViewport( ctx ); @@ -868,7 +868,7 @@ static void r128DepthRange( GLcontext *ctx, * Miscellaneous */ -static void r128DDClearColor( GLcontext *ctx, +static void r128DDClearColor( struct gl_context *ctx, const GLfloat color[4] ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -883,7 +883,7 @@ static void r128DDClearColor( GLcontext *ctx, c[0], c[1], c[2], c[3] ); } -static void r128DDLogicOpCode( GLcontext *ctx, GLenum opcode ) +static void r128DDLogicOpCode( struct gl_context *ctx, GLenum opcode ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -894,7 +894,7 @@ static void r128DDLogicOpCode( GLcontext *ctx, GLenum opcode ) } } -static void r128DDDrawBuffer( GLcontext *ctx, GLenum mode ) +static void r128DDDrawBuffer( struct gl_context *ctx, GLenum mode ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -921,7 +921,7 @@ static void r128DDDrawBuffer( GLcontext *ctx, GLenum mode ) rmesa->new_state |= R128_NEW_WINDOW; } -static void r128DDReadBuffer( GLcontext *ctx, GLenum mode ) +static void r128DDReadBuffer( struct gl_context *ctx, GLenum mode ) { /* nothing, until we implement h/w glRead/CopyPixels or CopyTexImage */ } @@ -931,7 +931,7 @@ static void r128DDReadBuffer( GLcontext *ctx, GLenum mode ) * Polygon stipple */ -static void r128DDPolygonStipple( GLcontext *ctx, const GLubyte *mask ) +static void r128DDPolygonStipple( struct gl_context *ctx, const GLubyte *mask ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint stipple[32], i; @@ -962,7 +962,7 @@ static void r128DDPolygonStipple( GLcontext *ctx, const GLubyte *mask ) * Render mode */ -static void r128DDRenderMode( GLcontext *ctx, GLenum mode ) +static void r128DDRenderMode( struct gl_context *ctx, GLenum mode ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); FALLBACK( rmesa, R128_FALLBACK_RENDER_MODE, (mode != GL_RENDER) ); @@ -974,7 +974,7 @@ static void r128DDRenderMode( GLcontext *ctx, GLenum mode ) * State enable/disable */ -static void r128DDEnable( GLcontext *ctx, GLenum cap, GLboolean state ) +static void r128DDEnable( struct gl_context *ctx, GLenum cap, GLboolean state ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -1206,7 +1206,7 @@ static void r128DDPrintState( const char *msg, GLuint flags ) (flags & R128_NEW_WINDOW) ? "window, " : "" ); } -void r128DDUpdateHWState( GLcontext *ctx ) +void r128DDUpdateHWState( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); int new_state = rmesa->new_state; @@ -1253,7 +1253,7 @@ void r128DDUpdateHWState( GLcontext *ctx ) } -static void r128DDInvalidateState( GLcontext *ctx, GLuint new_state ) +static void r128DDInvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -1404,7 +1404,7 @@ void r128DDInitState( r128ContextPtr rmesa ) /* Initialize the driver's state functions. */ -void r128DDInitStateFuncs( GLcontext *ctx ) +void r128DDInitStateFuncs( struct gl_context *ctx ) { ctx->Driver.UpdateState = r128DDInvalidateState; diff --git a/src/mesa/drivers/dri/r128/r128_state.h b/src/mesa/drivers/dri/r128/r128_state.h index a44327dfb39..55b0cbf4b77 100644 --- a/src/mesa/drivers/dri/r128/r128_state.h +++ b/src/mesa/drivers/dri/r128/r128_state.h @@ -38,10 +38,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r128_context.h" extern void r128DDInitState( r128ContextPtr rmesa ); -extern void r128DDInitStateFuncs( GLcontext *ctx ); +extern void r128DDInitStateFuncs( struct gl_context *ctx ); -extern void r128DDUpdateState( GLcontext *ctx ); -extern void r128DDUpdateHWState( GLcontext *ctx ); +extern void r128DDUpdateState( struct gl_context *ctx ); +extern void r128DDUpdateHWState( struct gl_context *ctx ); extern void r128EmitHwStateLocked( r128ContextPtr rmesa ); diff --git a/src/mesa/drivers/dri/r128/r128_tex.c b/src/mesa/drivers/dri/r128/r128_tex.c index 2dd47b06a56..ba3305e076e 100644 --- a/src/mesa/drivers/dri/r128/r128_tex.c +++ b/src/mesa/drivers/dri/r128/r128_tex.c @@ -173,7 +173,7 @@ static r128TexObjPtr r128AllocTexObj( struct gl_texture_object *texObj ) /* Called by the _mesa_store_teximage[123]d() functions. */ static gl_format -r128ChooseTextureFormat( GLcontext *ctx, GLint internalFormat, +r128ChooseTextureFormat( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -287,7 +287,7 @@ r128ChooseTextureFormat( GLcontext *ctx, GLint internalFormat, } -static void r128TexImage1D( GLcontext *ctx, GLenum target, GLint level, +static void r128TexImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -317,7 +317,7 @@ static void r128TexImage1D( GLcontext *ctx, GLenum target, GLint level, } -static void r128TexSubImage1D( GLcontext *ctx, +static void r128TexSubImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -350,7 +350,7 @@ static void r128TexSubImage1D( GLcontext *ctx, } -static void r128TexImage2D( GLcontext *ctx, GLenum target, GLint level, +static void r128TexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -380,7 +380,7 @@ static void r128TexImage2D( GLcontext *ctx, GLenum target, GLint level, } -static void r128TexSubImage2D( GLcontext *ctx, +static void r128TexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -412,7 +412,7 @@ static void r128TexSubImage2D( GLcontext *ctx, } -static void r128TexEnv( GLcontext *ctx, GLenum target, +static void r128TexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -500,7 +500,7 @@ static void r128TexEnv( GLcontext *ctx, GLenum target, } -static void r128TexParameter( GLcontext *ctx, GLenum target, +static void r128TexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat *params ) { @@ -551,7 +551,7 @@ static void r128TexParameter( GLcontext *ctx, GLenum target, } } -static void r128BindTexture( GLcontext *ctx, GLenum target, +static void r128BindTexture( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj ) { if ( R128_DEBUG & DEBUG_VERBOSE_API ) { @@ -564,7 +564,7 @@ static void r128BindTexture( GLcontext *ctx, GLenum target, } -static void r128DeleteTexture( GLcontext *ctx, +static void r128DeleteTexture( struct gl_context *ctx, struct gl_texture_object *tObj ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -588,7 +588,7 @@ static void r128DeleteTexture( GLcontext *ctx, * texture object from the core mesa gl_texture_object. Not done at this time. */ static struct gl_texture_object * -r128NewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +r128NewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; obj = _mesa_new_texture_object(ctx, name, target); diff --git a/src/mesa/drivers/dri/r128/r128_tex.h b/src/mesa/drivers/dri/r128/r128_tex.h index 7df8decf76b..98e9b04ad01 100644 --- a/src/mesa/drivers/dri/r128/r128_tex.h +++ b/src/mesa/drivers/dri/r128/r128_tex.h @@ -35,7 +35,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __R128_TEX_H__ #define __R128_TEX_H__ -extern void r128UpdateTextureState( GLcontext *ctx ); +extern void r128UpdateTextureState( struct gl_context *ctx ); extern void r128UploadTexImages( r128ContextPtr rmesa, r128TexObjPtr t ); diff --git a/src/mesa/drivers/dri/r128/r128_texstate.c b/src/mesa/drivers/dri/r128/r128_texstate.c index 2505b5cd655..11441639411 100644 --- a/src/mesa/drivers/dri/r128/r128_texstate.c +++ b/src/mesa/drivers/dri/r128/r128_texstate.c @@ -192,7 +192,7 @@ static void r128SetTexImages( r128ContextPtr rmesa, #define INPUT_PREVIOUS (R128_INPUT_FACTOR_PREV_COLOR | \ R128_INP_FACTOR_A_PREV_ALPHA) -static GLboolean r128UpdateTextureEnv( GLcontext *ctx, int unit ) +static GLboolean r128UpdateTextureEnv( struct gl_context *ctx, int unit ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLint source = rmesa->tmu_source[unit]; @@ -476,7 +476,7 @@ static GLboolean r128UpdateTextureEnv( GLcontext *ctx, int unit ) return GL_TRUE; } -static void disable_tex( GLcontext *ctx, int unit ) +static void disable_tex( struct gl_context *ctx, int unit ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -499,7 +499,7 @@ static void disable_tex( GLcontext *ctx, int unit ) rmesa->blend_flags &= ~R128_BLEND_MULTITEX; } -static GLboolean enable_tex_2d( GLcontext *ctx, int unit ) +static GLboolean enable_tex_2d( struct gl_context *ctx, int unit ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); const int source = rmesa->tmu_source[unit]; @@ -524,7 +524,7 @@ static GLboolean enable_tex_2d( GLcontext *ctx, int unit ) return GL_TRUE; } -static GLboolean update_tex_common( GLcontext *ctx, int unit ) +static GLboolean update_tex_common( struct gl_context *ctx, int unit ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); const int source = rmesa->tmu_source[unit]; @@ -597,7 +597,7 @@ static GLboolean update_tex_common( GLcontext *ctx, int unit ) return r128UpdateTextureEnv( ctx, unit ); } -static GLboolean updateTextureUnit( GLcontext *ctx, int unit ) +static GLboolean updateTextureUnit( struct gl_context *ctx, int unit ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); const int source = rmesa->tmu_source[unit]; @@ -618,7 +618,7 @@ static GLboolean updateTextureUnit( GLcontext *ctx, int unit ) } -void r128UpdateTextureState( GLcontext *ctx ) +void r128UpdateTextureState( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLboolean ok; diff --git a/src/mesa/drivers/dri/r128/r128_tris.c b/src/mesa/drivers/dri/r128/r128_tris.c index 9ea2a9d1624..92c8a4eb6b8 100644 --- a/src/mesa/drivers/dri/r128/r128_tris.c +++ b/src/mesa/drivers/dri/r128/r128_tris.c @@ -62,8 +62,8 @@ static const GLuint hw_prim[GL_POLYGON+1] = { R128_CCE_VC_CNTL_PRIM_TYPE_TRI_LIST, }; -static void r128RasterPrimitive( GLcontext *ctx, GLuint hwprim ); -static void r128RenderPrimitive( GLcontext *ctx, GLenum prim ); +static void r128RasterPrimitive( struct gl_context *ctx, GLuint hwprim ); +static void r128RenderPrimitive( struct gl_context *ctx, GLenum prim ); /*********************************************************************** @@ -344,7 +344,7 @@ r128_fallback_tri( r128ContextPtr rmesa, r128Vertex *v1, r128Vertex *v2 ) { - GLcontext *ctx = rmesa->glCtx; + struct gl_context *ctx = rmesa->glCtx; SWvertex v[3]; _swsetup_Translate( ctx, v0, &v[0] ); _swsetup_Translate( ctx, v1, &v[1] ); @@ -358,7 +358,7 @@ r128_fallback_line( r128ContextPtr rmesa, r128Vertex *v0, r128Vertex *v1 ) { - GLcontext *ctx = rmesa->glCtx; + struct gl_context *ctx = rmesa->glCtx; SWvertex v[2]; _swsetup_Translate( ctx, v0, &v[0] ); _swsetup_Translate( ctx, v1, &v[1] ); @@ -370,7 +370,7 @@ static void r128_fallback_point( r128ContextPtr rmesa, r128Vertex *v0 ) { - GLcontext *ctx = rmesa->glCtx; + struct gl_context *ctx = rmesa->glCtx; SWvertex v[1]; _swsetup_Translate( ctx, v0, &v[0] ); _swrast_Point( ctx, &v[0] ); @@ -426,7 +426,7 @@ r128_fallback_point( r128ContextPtr rmesa, #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED) #define _R128_NEW_RENDER_STATE (ANY_FALLBACK_FLAGS | ANY_RASTER_FLAGS) -void r128ChooseRenderState(GLcontext *ctx) +void r128ChooseRenderState(struct gl_context *ctx) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint flags = ctx->_TriangleCaps; @@ -479,7 +479,7 @@ void r128ChooseRenderState(GLcontext *ctx) /* Validate state at pipeline start */ /**********************************************************************/ -static void r128RunPipeline( GLcontext *ctx ) +static void r128RunPipeline( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -509,7 +509,7 @@ static void r128RunPipeline( GLcontext *ctx ) * primitives. */ -static void r128RasterPrimitive( GLcontext *ctx, GLuint hwprim ) +static void r128RasterPrimitive( struct gl_context *ctx, GLuint hwprim ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -531,7 +531,7 @@ static void r128RasterPrimitive( GLcontext *ctx, GLuint hwprim ) } } -static void r128SetupAntialias( GLcontext *ctx, GLenum prim ) +static void r128SetupAntialias( struct gl_context *ctx, GLenum prim ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -553,7 +553,7 @@ static void r128SetupAntialias( GLcontext *ctx, GLenum prim ) } } -static void r128RenderPrimitive( GLcontext *ctx, GLenum prim ) +static void r128RenderPrimitive( struct gl_context *ctx, GLenum prim ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); GLuint hw = hw_prim[prim]; @@ -584,7 +584,7 @@ do { \ offset += (SIZE); \ } while (0) -static void r128RenderStart( GLcontext *ctx ) +static void r128RenderStart( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -681,7 +681,7 @@ static void r128RenderStart( GLcontext *ctx ) } } -static void r128RenderFinish( GLcontext *ctx ) +static void r128RenderFinish( struct gl_context *ctx ) { if (R128_CONTEXT(ctx)->RenderIndex & R128_FALLBACK_BIT) _swrast_flush( ctx ); @@ -717,7 +717,7 @@ static const char *getFallbackString(GLuint bit) return fallbackStrings[i]; } -void r128Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void r128Fallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -768,7 +768,7 @@ void r128Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ) /* Initialization. */ /**********************************************************************/ -void r128InitTriFuncs( GLcontext *ctx ) +void r128InitTriFuncs( struct gl_context *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r128/r128_tris.h b/src/mesa/drivers/dri/r128/r128_tris.h index c0667edb61f..a1394977656 100644 --- a/src/mesa/drivers/dri/r128/r128_tris.h +++ b/src/mesa/drivers/dri/r128/r128_tris.h @@ -37,10 +37,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/mtypes.h" -extern void r128InitTriFuncs( GLcontext *ctx ); -extern void r128ChooseRenderState( GLcontext *ctx ); +extern void r128InitTriFuncs( struct gl_context *ctx ); +extern void r128ChooseRenderState( struct gl_context *ctx ); -extern void r128Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void r128Fallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( rmesa, bit, mode ) r128Fallback( rmesa->glCtx, bit, mode ) diff --git a/src/mesa/drivers/dri/r200/r200_blit.c b/src/mesa/drivers/dri/r200/r200_blit.c index e187fc0f61e..05a15c444cc 100644 --- a/src/mesa/drivers/dri/r200/r200_blit.c +++ b/src/mesa/drivers/dri/r200/r200_blit.c @@ -444,7 +444,7 @@ static inline void emit_draw_packet(struct r200_context *r200, * @param[in] height region height * @param[in] flip_y set if y coords of the source image need to be flipped */ -unsigned r200_blit(GLcontext *ctx, +unsigned r200_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r200/r200_blit.h b/src/mesa/drivers/dri/r200/r200_blit.h index 53206f0b471..56018b9c0ea 100644 --- a/src/mesa/drivers/dri/r200/r200_blit.h +++ b/src/mesa/drivers/dri/r200/r200_blit.h @@ -32,7 +32,7 @@ void r200_blit_init(struct r200_context *r200); unsigned r200_check_blit(gl_format mesa_format); -unsigned r200_blit(GLcontext *ctx, +unsigned r200_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c b/src/mesa/drivers/dri/r200/r200_cmdbuf.c index ad43a8ca920..931a9ecf8fe 100644 --- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c +++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c @@ -167,7 +167,7 @@ static void r200FireEB(r200ContextPtr rmesa, int vertex_count, int type) } } -void r200FlushElts(GLcontext *ctx) +void r200FlushElts(struct gl_context *ctx) { r200ContextPtr rmesa = R200_CONTEXT(ctx); int nr, elt_used = rmesa->tcl.elt_used; diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 2a35e2d6e44..723e31401de 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -80,7 +80,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* Return various strings for glGetString(). */ -static const GLubyte *r200GetString( GLcontext *ctx, GLenum name ) +static const GLubyte *r200GetString( struct gl_context *ctx, GLenum name ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); static char buffer[128]; @@ -279,7 +279,7 @@ GLboolean r200CreateContext( gl_api api, radeonScreenPtr screen = (radeonScreenPtr)(sPriv->private); struct dd_function_table functions; r200ContextPtr rmesa; - GLcontext *ctx; + struct gl_context *ctx; int i; int tcl_mode; diff --git a/src/mesa/drivers/dri/r200/r200_fragshader.c b/src/mesa/drivers/dri/r200/r200_fragshader.c index 2a9268dd343..b1d045c5cae 100644 --- a/src/mesa/drivers/dri/r200/r200_fragshader.c +++ b/src/mesa/drivers/dri/r200/r200_fragshader.c @@ -121,7 +121,7 @@ static GLuint dstmask_table[8] = R200_TXC_OUTPUT_MASK_RGB }; -static void r200UpdateFSArith( GLcontext *ctx ) +static void r200UpdateFSArith( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint *afs_cmd; @@ -322,7 +322,7 @@ static void r200UpdateFSArith( GLcontext *ctx ) rmesa->afs_loaded = ctx->ATIFragmentShader.Current; } -static void r200UpdateFSRouting( GLcontext *ctx ) { +static void r200UpdateFSRouting( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); const struct ati_fragment_shader *shader = ctx->ATIFragmentShader.Current; GLuint reg; @@ -499,7 +499,7 @@ static void r200UpdateFSRouting( GLcontext *ctx ) { } } -static void r200UpdateFSConstants( GLcontext *ctx ) +static void r200UpdateFSConstants( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); const struct ati_fragment_shader *shader = ctx->ATIFragmentShader.Current; @@ -537,7 +537,7 @@ static void r200UpdateFSConstants( GLcontext *ctx ) * stored in some DriverData object attached to the mesa atifs object, i.e. binding a * shader wouldn't force us to "recompile" the shader). */ -void r200UpdateFragmentShader( GLcontext *ctx ) +void r200UpdateFragmentShader( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r200/r200_ioctl.c b/src/mesa/drivers/dri/r200/r200_ioctl.c index df73de5394a..02201cb53d6 100644 --- a/src/mesa/drivers/dri/r200/r200_ioctl.c +++ b/src/mesa/drivers/dri/r200/r200_ioctl.c @@ -54,7 +54,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define R200_TIMEOUT 512 #define R200_IDLE_RETRY 16 -static void r200KernelClear(GLcontext *ctx, GLuint flags) +static void r200KernelClear(struct gl_context *ctx, GLuint flags) { r200ContextPtr rmesa = R200_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -180,7 +180,7 @@ static void r200KernelClear(GLcontext *ctx, GLuint flags) /* ================================================================ * Buffer clear */ -static void r200Clear( GLcontext *ctx, GLbitfield mask ) +static void r200Clear( struct gl_context *ctx, GLbitfield mask ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); diff --git a/src/mesa/drivers/dri/r200/r200_ioctl.h b/src/mesa/drivers/dri/r200/r200_ioctl.h index c5dca89bc76..f2527189aa8 100644 --- a/src/mesa/drivers/dri/r200/r200_ioctl.h +++ b/src/mesa/drivers/dri/r200/r200_ioctl.h @@ -54,7 +54,7 @@ extern void r200EmitVbufPrim( r200ContextPtr rmesa, GLuint primitive, GLuint vertex_nr ); -extern void r200FlushElts(GLcontext *ctx); +extern void r200FlushElts(struct gl_context *ctx); extern GLushort *r200AllocEltsOpenEnded( r200ContextPtr rmesa, GLuint primitive, diff --git a/src/mesa/drivers/dri/r200/r200_maos.h b/src/mesa/drivers/dri/r200/r200_maos.h index 16a70475e18..f58f77d8db8 100644 --- a/src/mesa/drivers/dri/r200/r200_maos.h +++ b/src/mesa/drivers/dri/r200/r200_maos.h @@ -37,6 +37,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r200_context.h" -extern void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev ); +extern void r200EmitArrays( struct gl_context *ctx, GLubyte *vimap_rev ); #endif diff --git a/src/mesa/drivers/dri/r200/r200_maos_arrays.c b/src/mesa/drivers/dri/r200/r200_maos_arrays.c index aecba7f8949..8a047e6419b 100644 --- a/src/mesa/drivers/dri/r200/r200_maos_arrays.c +++ b/src/mesa/drivers/dri/r200/r200_maos_arrays.c @@ -70,7 +70,7 @@ do { \ } while (0) #endif -static void r200_emit_vecfog(GLcontext *ctx, struct radeon_aos *aos, +static void r200_emit_vecfog(struct gl_context *ctx, struct radeon_aos *aos, GLvoid *data, int stride, int count) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); @@ -103,7 +103,7 @@ static void r200_emit_vecfog(GLcontext *ctx, struct radeon_aos *aos, /* Emit any changed arrays to new GART memory, re-emit a packet to * update the arrays. */ -void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev ) +void r200EmitArrays( struct gl_context *ctx, GLubyte *vimap_rev ) { r200ContextPtr rmesa = R200_CONTEXT( ctx ); struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb; diff --git a/src/mesa/drivers/dri/r200/r200_state.c b/src/mesa/drivers/dri/r200/r200_state.c index 29d7bed8b6a..b523edcb5d9 100644 --- a/src/mesa/drivers/dri/r200/r200_state.c +++ b/src/mesa/drivers/dri/r200/r200_state.c @@ -63,7 +63,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Alpha blending */ -static void r200AlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) +static void r200AlphaFunc( struct gl_context *ctx, GLenum func, GLfloat ref ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); int pp_misc = rmesa->hw.ctx.cmd[CTX_PP_MISC]; @@ -106,7 +106,7 @@ static void r200AlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) rmesa->hw.ctx.cmd[CTX_PP_MISC] = pp_misc; } -static void r200BlendColor( GLcontext *ctx, const GLfloat cf[4] ) +static void r200BlendColor( struct gl_context *ctx, const GLfloat cf[4] ) { GLubyte color[4]; r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -199,7 +199,7 @@ static int blend_factor( GLenum factor, GLboolean is_src ) * and GL_FUNC_REVERSE_SUBTRACT will cause wrong results otherwise for * unknown reasons. */ -static void r200_set_blend_state( GLcontext * ctx ) +static void r200_set_blend_state( struct gl_context * ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint cntl = rmesa->hw.ctx.cmd[CTX_RB3D_CNTL] & @@ -323,13 +323,13 @@ static void r200_set_blend_state( GLcontext * ctx ) } -static void r200BlendEquationSeparate( GLcontext *ctx, +static void r200BlendEquationSeparate( struct gl_context *ctx, GLenum modeRGB, GLenum modeA ) { r200_set_blend_state( ctx ); } -static void r200BlendFuncSeparate( GLcontext *ctx, +static void r200BlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -341,7 +341,7 @@ static void r200BlendFuncSeparate( GLcontext *ctx, * Depth testing */ -static void r200DepthFunc( GLcontext *ctx, GLenum func ) +static void r200DepthFunc( struct gl_context *ctx, GLenum func ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -376,7 +376,7 @@ static void r200DepthFunc( GLcontext *ctx, GLenum func ) } } -static void r200ClearDepth( GLcontext *ctx, GLclampd d ) +static void r200ClearDepth( struct gl_context *ctx, GLclampd d ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint format = (rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] & @@ -392,7 +392,7 @@ static void r200ClearDepth( GLcontext *ctx, GLclampd d ) } } -static void r200DepthMask( GLcontext *ctx, GLboolean flag ) +static void r200DepthMask( struct gl_context *ctx, GLboolean flag ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); R200_STATECHANGE( rmesa, ctx ); @@ -410,7 +410,7 @@ static void r200DepthMask( GLcontext *ctx, GLboolean flag ) */ -static void r200Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) +static void r200Fogfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); union { int i; float f; } c, d; @@ -526,7 +526,7 @@ static void r200Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) * Culling */ -static void r200CullFace( GLcontext *ctx, GLenum unused ) +static void r200CullFace( struct gl_context *ctx, GLenum unused ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint s = rmesa->hw.set.cmd[SET_SE_CNTL]; @@ -563,7 +563,7 @@ static void r200CullFace( GLcontext *ctx, GLenum unused ) } } -static void r200FrontFace( GLcontext *ctx, GLenum mode ) +static void r200FrontFace( struct gl_context *ctx, GLenum mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -591,7 +591,7 @@ static void r200FrontFace( GLcontext *ctx, GLenum mode ) /* ============================================================= * Point state */ -static void r200PointSize( GLcontext *ctx, GLfloat size ) +static void r200PointSize( struct gl_context *ctx, GLfloat size ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLfloat *fcmd = (GLfloat *)rmesa->hw.ptp.cmd; @@ -612,7 +612,7 @@ static void r200PointSize( GLcontext *ctx, GLfloat size ) fcmd[PTP_VPORT_SCALE_PTSIZE] = ctx->Point.Size; } -static void r200PointParameter( GLcontext *ctx, GLenum pname, const GLfloat *params) +static void r200PointParameter( struct gl_context *ctx, GLenum pname, const GLfloat *params) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLfloat *fcmd = (GLfloat *)rmesa->hw.ptp.cmd; @@ -680,7 +680,7 @@ static void r200PointParameter( GLcontext *ctx, GLenum pname, const GLfloat *par /* ============================================================= * Line state */ -static void r200LineWidth( GLcontext *ctx, GLfloat widthf ) +static void r200LineWidth( struct gl_context *ctx, GLfloat widthf ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -701,7 +701,7 @@ static void r200LineWidth( GLcontext *ctx, GLfloat widthf ) } } -static void r200LineStipple( GLcontext *ctx, GLint factor, GLushort pattern ) +static void r200LineStipple( struct gl_context *ctx, GLint factor, GLushort pattern ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -714,7 +714,7 @@ static void r200LineStipple( GLcontext *ctx, GLint factor, GLushort pattern ) /* ============================================================= * Masks */ -static void r200ColorMask( GLcontext *ctx, +static void r200ColorMask( struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -752,7 +752,7 @@ static void r200ColorMask( GLcontext *ctx, * Polygon state */ -static void r200PolygonOffset( GLcontext *ctx, +static void r200PolygonOffset( struct gl_context *ctx, GLfloat factor, GLfloat units ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -770,7 +770,7 @@ static void r200PolygonOffset( GLcontext *ctx, rmesa->hw.zbs.cmd[ZBS_SE_ZBIAS_CONSTANT] = constant.ui32; } -static void r200PolygonMode( GLcontext *ctx, GLenum face, GLenum mode ) +static void r200PolygonMode( struct gl_context *ctx, GLenum face, GLenum mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLboolean flag = (ctx->_TriangleCaps & DD_TRI_UNFILLED) != 0; @@ -797,7 +797,7 @@ static void r200PolygonMode( GLcontext *ctx, GLenum face, GLenum mode ) /* Examine lighting and texture state to determine if separate specular * should be enabled. */ -static void r200UpdateSpecular( GLcontext *ctx ) +static void r200UpdateSpecular( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); uint32_t p = rmesa->hw.ctx.cmd[CTX_PP_CNTL]; @@ -871,7 +871,7 @@ static void r200UpdateSpecular( GLcontext *ctx ) /* Update on colormaterial, material emmissive/ambient, * lightmodel.globalambient */ -static void update_global_ambient( GLcontext *ctx ) +static void update_global_ambient( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); float *fcmd = (float *)R200_DB_STATE( glt ); @@ -902,7 +902,7 @@ static void update_global_ambient( GLcontext *ctx ) * - light[p].colors * - light[p].enabled */ -static void update_light_colors( GLcontext *ctx, GLuint p ) +static void update_light_colors( struct gl_context *ctx, GLuint p ) { struct gl_light *l = &ctx->Light.Light[p]; @@ -920,7 +920,7 @@ static void update_light_colors( GLcontext *ctx, GLuint p ) } } -static void r200ColorMaterial( GLcontext *ctx, GLenum face, GLenum mode ) +static void r200ColorMaterial( struct gl_context *ctx, GLenum face, GLenum mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint light_model_ctl1 = rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL_1]; @@ -1022,7 +1022,7 @@ static void r200ColorMaterial( GLcontext *ctx, GLenum face, GLenum mode ) } -void r200UpdateMaterial( GLcontext *ctx ) +void r200UpdateMaterial( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLfloat (*mat)[4] = ctx->Light.Material.Attrib; @@ -1117,7 +1117,7 @@ void r200UpdateMaterial( GLcontext *ctx ) * lighting space (model or eye), hence dependencies on _NEW_MODELVIEW * and _MESA_NEW_NEED_EYE_COORDS. */ -static void update_light( GLcontext *ctx ) +static void update_light( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1177,7 +1177,7 @@ static void update_light( GLcontext *ctx ) } } -static void r200Lightfv( GLcontext *ctx, GLenum light, +static void r200Lightfv( struct gl_context *ctx, GLenum light, GLenum pname, const GLfloat *params ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1288,7 +1288,7 @@ static void r200Lightfv( GLcontext *ctx, GLenum light, } } -static void r200UpdateLocalViewer ( GLcontext *ctx ) +static void r200UpdateLocalViewer ( struct gl_context *ctx ) { /* It looks like for the texgen modes GL_SPHERE_MAP, GL_NORMAL_MAP and GL_REFLECTION_MAP we need R200_LOCAL_VIEWER set (fglrx does exactly that @@ -1308,7 +1308,7 @@ static void r200UpdateLocalViewer ( GLcontext *ctx ) rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL_0] &= ~R200_LOCAL_VIEWER; } -static void r200LightModelfv( GLcontext *ctx, GLenum pname, +static void r200LightModelfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1343,7 +1343,7 @@ static void r200LightModelfv( GLcontext *ctx, GLenum pname, } } -static void r200ShadeModel( GLcontext *ctx, GLenum mode ) +static void r200ShadeModel( struct gl_context *ctx, GLenum mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint s = rmesa->hw.set.cmd[SET_SE_CNTL]; @@ -1384,7 +1384,7 @@ static void r200ShadeModel( GLcontext *ctx, GLenum mode ) * User clip planes */ -static void r200ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) +static void r200ClipPlane( struct gl_context *ctx, GLenum plane, const GLfloat *eq ) { GLint p = (GLint) plane - (GLint) GL_CLIP_PLANE0; r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1397,7 +1397,7 @@ static void r200ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) rmesa->hw.ucp[p].cmd[UCP_W] = ip[3]; } -static void r200UpdateClipPlanes( GLcontext *ctx ) +static void r200UpdateClipPlanes( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint p; @@ -1421,7 +1421,7 @@ static void r200UpdateClipPlanes( GLcontext *ctx ) */ static void -r200StencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, +r200StencilFuncSeparate( struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1466,7 +1466,7 @@ r200StencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, } static void -r200StencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) +r200StencilMaskSeparate( struct gl_context *ctx, GLenum face, GLuint mask ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1477,7 +1477,7 @@ r200StencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) } static void -r200StencilOpSeparate( GLcontext *ctx, GLenum face, GLenum fail, +r200StencilOpSeparate( struct gl_context *ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1569,7 +1569,7 @@ r200StencilOpSeparate( GLcontext *ctx, GLenum face, GLenum fail, } } -static void r200ClearStencil( GLcontext *ctx, GLint s ) +static void r200ClearStencil( struct gl_context *ctx, GLint s ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1588,7 +1588,7 @@ static void r200ClearStencil( GLcontext *ctx, GLint s ) * Called when window size or position changes or viewport or depth range * state is changed. We update the hardware viewport state here. */ -void r200UpdateWindow( GLcontext *ctx ) +void r200UpdateWindow( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -1624,7 +1624,7 @@ void r200UpdateWindow( GLcontext *ctx ) rmesa->hw.vpt.cmd[VPT_SE_VPORT_ZOFFSET] = tz.ui32; } -void r200_vtbl_update_scissor( GLcontext *ctx ) +void r200_vtbl_update_scissor( struct gl_context *ctx ) { r200ContextPtr r200 = R200_CONTEXT(ctx); unsigned x1, y1, x2, y2; @@ -1650,7 +1650,7 @@ void r200_vtbl_update_scissor( GLcontext *ctx ) } -static void r200Viewport( GLcontext *ctx, GLint x, GLint y, +static void r200Viewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { /* Don't pipeline viewport changes, conflict with window offset @@ -1662,13 +1662,13 @@ static void r200Viewport( GLcontext *ctx, GLint x, GLint y, radeon_viewport(ctx, x, y, width, height); } -static void r200DepthRange( GLcontext *ctx, GLclampd nearval, +static void r200DepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { r200UpdateWindow( ctx ); } -void r200UpdateViewportOffset( GLcontext *ctx ) +void r200UpdateViewportOffset( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -1724,7 +1724,7 @@ void r200UpdateViewportOffset( GLcontext *ctx ) * Miscellaneous */ -static void r200ClearColor( GLcontext *ctx, const GLfloat c[4] ) +static void r200ClearColor( struct gl_context *ctx, const GLfloat c[4] ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLubyte color[4]; @@ -1743,7 +1743,7 @@ static void r200ClearColor( GLcontext *ctx, const GLfloat c[4] ) } -static void r200RenderMode( GLcontext *ctx, GLenum mode ) +static void r200RenderMode( struct gl_context *ctx, GLenum mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); FALLBACK( rmesa, R200_FALLBACK_RENDER_MODE, (mode != GL_RENDER) ); @@ -1769,7 +1769,7 @@ static GLuint r200_rop_tab[] = { R200_ROP_SET, }; -static void r200LogicOpCode( GLcontext *ctx, GLenum opcode ) +static void r200LogicOpCode( struct gl_context *ctx, GLenum opcode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint rop = (GLuint)opcode - GL_CLEAR; @@ -1784,7 +1784,7 @@ static void r200LogicOpCode( GLcontext *ctx, GLenum opcode ) * State enable/disable */ -static void r200Enable( GLcontext *ctx, GLenum cap, GLboolean state ) +static void r200Enable( struct gl_context *ctx, GLenum cap, GLboolean state ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint p, flag; @@ -2168,7 +2168,7 @@ static void r200Enable( GLcontext *ctx, GLenum cap, GLboolean state ) } -void r200LightingSpaceChange( GLcontext *ctx ) +void r200LightingSpaceChange( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLboolean tmp; @@ -2225,7 +2225,7 @@ static void upload_matrix_t( r200ContextPtr rmesa, const GLfloat *src, int idx ) } -static void update_texturematrix( GLcontext *ctx ) +static void update_texturematrix( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT( ctx ); GLuint tpc = rmesa->hw.tcg.cmd[TCG_TEX_PROC_CTL_0]; @@ -2283,7 +2283,7 @@ static void update_texturematrix( GLcontext *ctx ) } } -static GLboolean r200ValidateBuffers(GLcontext *ctx) +static GLboolean r200ValidateBuffers(struct gl_context *ctx) { r200ContextPtr rmesa = R200_CONTEXT(ctx); struct radeon_renderbuffer *rrb; @@ -2333,7 +2333,7 @@ static GLboolean r200ValidateBuffers(GLcontext *ctx) return GL_TRUE; } -GLboolean r200ValidateState( GLcontext *ctx ) +GLboolean r200ValidateState( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint new_state = rmesa->radeon.NewGLState; @@ -2405,7 +2405,7 @@ GLboolean r200ValidateState( GLcontext *ctx ) } -static void r200InvalidateState( GLcontext *ctx, GLuint new_state ) +static void r200InvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -2420,7 +2420,7 @@ static void r200InvalidateState( GLcontext *ctx, GLuint new_state ) * Should map to inputs just like the generic vertex arrays for vertex progs. * In theory there could still be too many and we'd still need a fallback. */ -static GLboolean check_material( GLcontext *ctx ) +static GLboolean check_material( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); GLint i; @@ -2435,7 +2435,7 @@ static GLboolean check_material( GLcontext *ctx ) return GL_FALSE; } -static void r200WrapRunPipeline( GLcontext *ctx ) +static void r200WrapRunPipeline( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLboolean has_material; @@ -2465,7 +2465,7 @@ static void r200WrapRunPipeline( GLcontext *ctx ) } -static void r200PolygonStipple( GLcontext *ctx, const GLubyte *mask ) +static void r200PolygonStipple( struct gl_context *ctx, const GLubyte *mask ) { r200ContextPtr r200 = R200_CONTEXT(ctx); GLint i; @@ -2538,7 +2538,7 @@ void r200InitStateFuncs( radeonContextPtr radeon, struct dd_function_table *func } -void r200InitTnlFuncs( GLcontext *ctx ) +void r200InitTnlFuncs( struct gl_context *ctx ) { TNL_CONTEXT(ctx)->Driver.NotifyMaterialChange = r200UpdateMaterial; TNL_CONTEXT(ctx)->Driver.RunPipeline = r200WrapRunPipeline; diff --git a/src/mesa/drivers/dri/r200/r200_state.h b/src/mesa/drivers/dri/r200/r200_state.h index 327ba837e25..340bd8234ac 100644 --- a/src/mesa/drivers/dri/r200/r200_state.h +++ b/src/mesa/drivers/dri/r200/r200_state.h @@ -39,25 +39,25 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. extern void r200InitState( r200ContextPtr rmesa ); extern void r200InitStateFuncs( radeonContextPtr radeon, struct dd_function_table *functions ); -extern void r200InitTnlFuncs( GLcontext *ctx ); +extern void r200InitTnlFuncs( struct gl_context *ctx ); -extern void r200UpdateMaterial( GLcontext *ctx ); +extern void r200UpdateMaterial( struct gl_context *ctx ); -extern void r200UpdateViewportOffset( GLcontext *ctx ); -extern void r200UpdateWindow( GLcontext *ctx ); -extern void r200UpdateDrawBuffer(GLcontext *ctx); +extern void r200UpdateViewportOffset( struct gl_context *ctx ); +extern void r200UpdateWindow( struct gl_context *ctx ); +extern void r200UpdateDrawBuffer(struct gl_context *ctx); -extern GLboolean r200ValidateState( GLcontext *ctx ); +extern GLboolean r200ValidateState( struct gl_context *ctx ); -extern void r200_vtbl_update_scissor( GLcontext *ctx ); +extern void r200_vtbl_update_scissor( struct gl_context *ctx ); -extern void r200Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void r200Fallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( rmesa, bit, mode ) do { \ if ( 0 ) fprintf( stderr, "FALLBACK in %s: #%d=%d\n", \ __FUNCTION__, bit, mode ); \ r200Fallback( rmesa->radeon.glCtx, bit, mode ); \ } while (0) -extern void r200LightingSpaceChange( GLcontext *ctx ); +extern void r200LightingSpaceChange( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c b/src/mesa/drivers/dri/r200/r200_state_init.c index 16065530093..f6afb90d595 100644 --- a/src/mesa/drivers/dri/r200/r200_state_init.c +++ b/src/mesa/drivers/dri/r200/r200_state_init.c @@ -228,7 +228,7 @@ static int cmdscl2( int offset, int stride, int count ) * If it is active check function returns maximum emit size. */ #define CHECK( NM, FLAG, ADD ) \ -static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom) \ +static int check_##NM( struct gl_context *ctx, struct radeon_state_atom *atom) \ { \ r200ContextPtr rmesa = R200_CONTEXT(ctx); \ (void) rmesa; \ @@ -236,21 +236,21 @@ static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom) \ } #define TCL_CHECK( NM, FLAG, ADD ) \ -static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom) \ +static int check_##NM( struct gl_context *ctx, struct radeon_state_atom *atom) \ { \ r200ContextPtr rmesa = R200_CONTEXT(ctx); \ return (!rmesa->radeon.TclFallback && !ctx->VertexProgram._Enabled && (FLAG)) ? atom->cmd_size + (ADD) : 0; \ } #define TCL_OR_VP_CHECK( NM, FLAG, ADD ) \ -static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \ +static int check_##NM( struct gl_context *ctx, struct radeon_state_atom *atom ) \ { \ r200ContextPtr rmesa = R200_CONTEXT(ctx); \ return (!rmesa->radeon.TclFallback && (FLAG)) ? atom->cmd_size + (ADD) : 0; \ } #define VP_CHECK( NM, FLAG, ADD ) \ -static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \ +static int check_##NM( struct gl_context *ctx, struct radeon_state_atom *atom ) \ { \ r200ContextPtr rmesa = R200_CONTEXT(ctx); \ (void) atom; \ @@ -337,7 +337,7 @@ VP_CHECK( tcl_vpp_size_add4, ctx->VertexProgram.Current->Base.NumNativeParameter OUT_BATCH(CP_PACKET0_ONE(R200_SE_TCL_SCALAR_DATA_REG, h.scalars.count - 1)); \ OUT_BATCH_TABLE((data), h.scalars.count); \ } while(0) -static int check_rrb(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_rrb(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); struct radeon_renderbuffer *rrb; @@ -347,7 +347,7 @@ static int check_rrb(GLcontext *ctx, struct radeon_state_atom *atom) return atom->cmd_size; } -static int check_polygon_stipple(GLcontext *ctx, +static int check_polygon_stipple(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); @@ -356,7 +356,7 @@ static int check_polygon_stipple(GLcontext *ctx, return 0; } -static void mtl_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void mtl_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -368,7 +368,7 @@ static void mtl_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void lit_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void lit_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -380,7 +380,7 @@ static void lit_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void ptp_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void ptp_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -392,7 +392,7 @@ static void ptp_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void veclinear_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void veclinear_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -401,7 +401,7 @@ static void veclinear_emit(GLcontext *ctx, struct radeon_state_atom *atom) OUT_VECLINEAR(atom->cmd[0], atom->cmd+1); } -static void scl_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void scl_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -413,7 +413,7 @@ static void scl_emit(GLcontext *ctx, struct radeon_state_atom *atom) } -static void vec_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void vec_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -424,7 +424,7 @@ static void vec_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void ctx_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void ctx_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -491,7 +491,7 @@ static void ctx_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static int check_always_ctx( GLcontext *ctx, struct radeon_state_atom *atom) +static int check_always_ctx( struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); struct radeon_renderbuffer *rrb, *drb; @@ -516,7 +516,7 @@ static int check_always_ctx( GLcontext *ctx, struct radeon_state_atom *atom) return dwords; } -static void ctx_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) +static void ctx_emit_cs(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -600,7 +600,7 @@ static void ctx_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static int get_tex_size(GLcontext* ctx, struct radeon_state_atom *atom) +static int get_tex_size(struct gl_context* ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); uint32_t dwords = atom->cmd_size + 2; @@ -612,7 +612,7 @@ static int get_tex_size(GLcontext* ctx, struct radeon_state_atom *atom) return dwords; } -static int check_tex_pair(GLcontext* ctx, struct radeon_state_atom *atom) +static int check_tex_pair(struct gl_context* ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); /** XOR is bit flip operation so use it for finding pair */ @@ -622,7 +622,7 @@ static int check_tex_pair(GLcontext* ctx, struct radeon_state_atom *atom) return get_tex_size(ctx, atom); } -static int check_tex(GLcontext* ctx, struct radeon_state_atom *atom) +static int check_tex(struct gl_context* ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); if (!(r200->state.texture.unit[atom->idx].unitneeded)) @@ -632,7 +632,7 @@ static int check_tex(GLcontext* ctx, struct radeon_state_atom *atom) } -static void tex_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void tex_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -657,7 +657,7 @@ static void tex_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static int get_tex_mm_size(GLcontext* ctx, struct radeon_state_atom *atom) +static int get_tex_mm_size(struct gl_context* ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); uint32_t dwords = atom->cmd_size + 2; @@ -676,7 +676,7 @@ static int get_tex_mm_size(GLcontext* ctx, struct radeon_state_atom *atom) return dwords; } -static int check_tex_pair_mm(GLcontext* ctx, struct radeon_state_atom *atom) +static int check_tex_pair_mm(struct gl_context* ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); /** XOR is bit flip operation so use it for finding pair */ @@ -686,7 +686,7 @@ static int check_tex_pair_mm(GLcontext* ctx, struct radeon_state_atom *atom) return get_tex_mm_size(ctx, atom); } -static int check_tex_mm(GLcontext* ctx, struct radeon_state_atom *atom) +static int check_tex_mm(struct gl_context* ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); if (!(r200->state.texture.unit[atom->idx].unitneeded)) @@ -696,7 +696,7 @@ static int check_tex_mm(GLcontext* ctx, struct radeon_state_atom *atom) } -static void tex_emit_mm(GLcontext *ctx, struct radeon_state_atom *atom) +static void tex_emit_mm(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -726,7 +726,7 @@ static void tex_emit_mm(GLcontext *ctx, struct radeon_state_atom *atom) } -static void cube_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void cube_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -753,7 +753,7 @@ static void cube_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void cube_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) +static void cube_emit_cs(struct gl_context *ctx, struct radeon_state_atom *atom) { r200ContextPtr r200 = R200_CONTEXT(ctx); BATCH_LOCALS(&r200->radeon); @@ -782,7 +782,7 @@ static void cube_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) */ void r200InitState( r200ContextPtr rmesa ) { - GLcontext *ctx = rmesa->radeon.glCtx; + struct gl_context *ctx = rmesa->radeon.glCtx; GLuint i; rmesa->radeon.state.color.clear = 0x00000000; diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c b/src/mesa/drivers/dri/r200/r200_swtcl.c index effe6fb933a..38864162ced 100644 --- a/src/mesa/drivers/dri/r200/r200_swtcl.c +++ b/src/mesa/drivers/dri/r200/r200_swtcl.c @@ -75,7 +75,7 @@ do { \ rmesa->radeon.swtcl.vertex_attr_count++; \ } while (0) -static void r200SetVertexFormat( GLcontext *ctx ) +static void r200SetVertexFormat( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT( ctx ); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -221,7 +221,7 @@ static void r200_predict_emit_size( r200ContextPtr rmesa ) } -static void r200RenderStart( GLcontext *ctx ) +static void r200RenderStart( struct gl_context *ctx ) { r200SetVertexFormat( ctx ); if (RADEON_DEBUG & RADEON_VERTS) @@ -234,7 +234,7 @@ static void r200RenderStart( GLcontext *ctx ) * determine in advance whether or not the hardware can / should do the * projection divide or Mesa should do it. */ -void r200ChooseVertexState( GLcontext *ctx ) +void r200ChooseVertexState( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT( ctx ); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -286,7 +286,7 @@ void r200ChooseVertexState( GLcontext *ctx ) } } -void r200_swtcl_flush(GLcontext *ctx, uint32_t current_offset) +void r200_swtcl_flush(struct gl_context *ctx, uint32_t current_offset) { r200ContextPtr rmesa = R200_CONTEXT(ctx); if (RADEON_DEBUG & RADEON_VERTS) @@ -315,7 +315,7 @@ void r200_swtcl_flush(GLcontext *ctx, uint32_t current_offset) /**************************************************************************/ -static INLINE GLuint reduced_hw_prim( GLcontext *ctx, GLuint prim) +static INLINE GLuint reduced_hw_prim( struct gl_context *ctx, GLuint prim) { switch (prim) { case GL_POINTS: @@ -336,9 +336,9 @@ static INLINE GLuint reduced_hw_prim( GLcontext *ctx, GLuint prim) } -static void r200RasterPrimitive( GLcontext *ctx, GLuint hwprim ); -static void r200RenderPrimitive( GLcontext *ctx, GLenum prim ); -static void r200ResetLineStipple( GLcontext *ctx ); +static void r200RasterPrimitive( struct gl_context *ctx, GLuint hwprim ); +static void r200RenderPrimitive( struct gl_context *ctx, GLenum prim ); +static void r200ResetLineStipple( struct gl_context *ctx ); /*********************************************************************** * Emit primitives as inline vertices * @@ -568,7 +568,7 @@ static void init_rast_tab( void ) /* Choose render functions */ /**********************************************************************/ -void r200ChooseRenderState( GLcontext *ctx ) +void r200ChooseRenderState( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -608,7 +608,7 @@ void r200ChooseRenderState( GLcontext *ctx ) /**********************************************************************/ -static void r200RasterPrimitive( GLcontext *ctx, GLuint hwprim ) +static void r200RasterPrimitive( struct gl_context *ctx, GLuint hwprim ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -634,7 +634,7 @@ static void r200RasterPrimitive( GLcontext *ctx, GLuint hwprim ) } } -static void r200RenderPrimitive( GLcontext *ctx, GLenum prim ) +static void r200RenderPrimitive( struct gl_context *ctx, GLenum prim ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); rmesa->radeon.swtcl.render_primitive = prim; @@ -642,11 +642,11 @@ static void r200RenderPrimitive( GLcontext *ctx, GLenum prim ) r200RasterPrimitive( ctx, reduced_hw_prim(ctx, prim) ); } -static void r200RenderFinish( GLcontext *ctx ) +static void r200RenderFinish( struct gl_context *ctx ) { } -static void r200ResetLineStipple( GLcontext *ctx ) +static void r200ResetLineStipple( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); R200_STATECHANGE( rmesa, lin ); @@ -678,7 +678,7 @@ static const char *getFallbackString(GLuint bit) } -void r200Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void r200Fallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -745,7 +745,7 @@ void r200Fallback( GLcontext *ctx, GLuint bit, GLboolean mode ) * NV_texture_rectangle). */ void -r200PointsBitmap( GLcontext *ctx, GLint px, GLint py, +r200PointsBitmap( struct gl_context *ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ) @@ -920,7 +920,7 @@ r200PointsBitmap( GLcontext *ctx, GLint px, GLint py, /* Initialization. */ /**********************************************************************/ -void r200InitSwtcl( GLcontext *ctx ) +void r200InitSwtcl( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.h b/src/mesa/drivers/dri/r200/r200_swtcl.h index b0905879d7a..668e175603f 100644 --- a/src/mesa/drivers/dri/r200/r200_swtcl.h +++ b/src/mesa/drivers/dri/r200/r200_swtcl.h @@ -38,32 +38,32 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "swrast/swrast.h" #include "r200_context.h" -extern void r200InitSwtcl( GLcontext *ctx ); +extern void r200InitSwtcl( struct gl_context *ctx ); -extern void r200ChooseRenderState( GLcontext *ctx ); -extern void r200ChooseVertexState( GLcontext *ctx ); +extern void r200ChooseRenderState( struct gl_context *ctx ); +extern void r200ChooseVertexState( struct gl_context *ctx ); -extern void r200CheckTexSizes( GLcontext *ctx ); +extern void r200CheckTexSizes( struct gl_context *ctx ); -extern void r200BuildVertices( GLcontext *ctx, GLuint start, GLuint count, +extern void r200BuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ); extern void r200PrintSetupFlags(char *msg, GLuint flags ); -extern void r200_translate_vertex( GLcontext *ctx, +extern void r200_translate_vertex( struct gl_context *ctx, const radeonVertex *src, SWvertex *dst ); -extern void r200_print_vertex( GLcontext *ctx, const radeonVertex *v ); +extern void r200_print_vertex( struct gl_context *ctx, const radeonVertex *v ); -extern void r200_import_float_colors( GLcontext *ctx ); -extern void r200_import_float_spec_colors( GLcontext *ctx ); +extern void r200_import_float_colors( struct gl_context *ctx ); +extern void r200_import_float_spec_colors( struct gl_context *ctx ); -extern void r200PointsBitmap( GLcontext *ctx, GLint px, GLint py, +extern void r200PointsBitmap( struct gl_context *ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ); -void r200_swtcl_flush(GLcontext *ctx, uint32_t current_offset); +void r200_swtcl_flush(struct gl_context *ctx, uint32_t current_offset); #endif diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c b/src/mesa/drivers/dri/r200/r200_tcl.c index ba54177476f..84db7c9d4eb 100644 --- a/src/mesa/drivers/dri/r200/r200_tcl.c +++ b/src/mesa/drivers/dri/r200/r200_tcl.c @@ -177,7 +177,7 @@ while (0) * discrete and there are no intervening state changes. (Somewhat * duplicates changes to DrawArrays code) */ -static void r200EmitPrim( GLcontext *ctx, +static void r200EmitPrim( struct gl_context *ctx, GLenum prim, GLuint hwprim, GLuint start, @@ -241,7 +241,7 @@ static void r200EmitPrim( GLcontext *ctx, /* External entrypoints */ /**********************************************************************/ -void r200EmitPrimitive( GLcontext *ctx, +void r200EmitPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ) @@ -249,7 +249,7 @@ void r200EmitPrimitive( GLcontext *ctx, tcl_render_tab_verts[flags&PRIM_MODE_MASK]( ctx, first, last, flags ); } -void r200EmitEltPrimitive( GLcontext *ctx, +void r200EmitEltPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ) @@ -257,7 +257,7 @@ void r200EmitEltPrimitive( GLcontext *ctx, tcl_render_tab_elts[flags&PRIM_MODE_MASK]( ctx, first, last, flags ); } -void r200TclPrimitive( GLcontext *ctx, +void r200TclPrimitive( struct gl_context *ctx, GLenum prim, int hw_prim ) { @@ -339,7 +339,7 @@ r200InitStaticFogData( void ) * Fog blend factors are in the range [0,1]. */ float -r200ComputeFogBlendFactor( GLcontext *ctx, GLfloat fogcoord ) +r200ComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord ) { GLfloat end = ctx->Fog.End; GLfloat d, temp; @@ -374,7 +374,7 @@ r200ComputeFogBlendFactor( GLcontext *ctx, GLfloat fogcoord ) * Predict total emit size for next rendering operation so there is no flush in middle of rendering * Prediction has to aim towards the best possible value that is worse than worst case scenario */ -static GLuint r200EnsureEmitSize( GLcontext * ctx , GLubyte* vimap_rev ) +static GLuint r200EnsureEmitSize( struct gl_context * ctx , GLubyte* vimap_rev ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -439,7 +439,7 @@ static GLuint r200EnsureEmitSize( GLcontext * ctx , GLubyte* vimap_rev ) /* TCL render. */ -static GLboolean r200_run_tcl_render( GLcontext *ctx, +static GLboolean r200_run_tcl_render( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -596,7 +596,7 @@ const struct tnl_pipeline_stage _r200_tcl_stage = */ -static void transition_to_swtnl( GLcontext *ctx ) +static void transition_to_swtnl( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -620,7 +620,7 @@ static void transition_to_swtnl( GLcontext *ctx ) rmesa->hw.vap.cmd[VAP_SE_VAP_CNTL] &= ~(R200_VAP_TCL_ENABLE|R200_VAP_PROG_VTX_SHADER_ENABLE); } -static void transition_to_hwtnl( GLcontext *ctx ) +static void transition_to_hwtnl( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -690,7 +690,7 @@ static char *getFallbackString(GLuint bit) -void r200TclFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void r200TclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint oldfallback = rmesa->radeon.TclFallback; diff --git a/src/mesa/drivers/dri/r200/r200_tcl.h b/src/mesa/drivers/dri/r200/r200_tcl.h index f191ddc7eb9..53a1f11e9db 100644 --- a/src/mesa/drivers/dri/r200/r200_tcl.h +++ b/src/mesa/drivers/dri/r200/r200_tcl.h @@ -37,17 +37,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r200_context.h" -extern void r200TclPrimitive( GLcontext *ctx, GLenum prim, int hw_prim ); -extern void r200EmitEltPrimitive( GLcontext *ctx, GLuint first, GLuint last, +extern void r200TclPrimitive( struct gl_context *ctx, GLenum prim, int hw_prim ); +extern void r200EmitEltPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ); -extern void r200EmitPrimitive( GLcontext *ctx, GLuint first, GLuint last, +extern void r200EmitPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ); -extern void r200TclFallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void r200TclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); extern void r200InitStaticFogData( void ); -extern float r200ComputeFogBlendFactor( GLcontext *ctx, GLfloat fogcoord ); +extern float r200ComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord ); #define R200_TCL_FALLBACK_RASTER 0x1 /* rasterization */ #define R200_TCL_FALLBACK_UNFILLED 0x2 /* unfilled tris */ diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index 6723b12bf49..5207c2901a3 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -294,7 +294,7 @@ static void r200SetTexBorderColor( radeonTexObjPtr t, const GLfloat color[4] ) t->pp_border_color = radeonPackColor( 4, c[0], c[1], c[2], c[3] ); } -static void r200TexEnv( GLcontext *ctx, GLenum target, +static void r200TexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -366,7 +366,7 @@ static void r200TexEnv( GLcontext *ctx, GLenum target, * next UpdateTextureState */ -static void r200TexParameter( GLcontext *ctx, GLenum target, +static void r200TexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat *params ) { @@ -409,7 +409,7 @@ static void r200TexParameter( GLcontext *ctx, GLenum target, } -static void r200DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj) +static void r200DeleteTexture(struct gl_context * ctx, struct gl_texture_object *texObj) { r200ContextPtr rmesa = R200_CONTEXT(ctx); radeonTexObj* t = radeon_tex_obj(texObj); @@ -446,7 +446,7 @@ static void r200DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj) * Basically impossible to do this on the fly - just collect some * basic info & do the checks from ValidateState(). */ -static void r200TexGen( GLcontext *ctx, +static void r200TexGen( struct gl_context *ctx, GLenum coord, GLenum pname, const GLfloat *params ) @@ -464,7 +464,7 @@ static void r200TexGen( GLcontext *ctx, * allocate the default texture objects. * Fixup MaxAnisotropy according to user preference. */ -static struct gl_texture_object *r200NewTextureObject(GLcontext * ctx, +static struct gl_texture_object *r200NewTextureObject(struct gl_context * ctx, GLuint name, GLenum target) { diff --git a/src/mesa/drivers/dri/r200/r200_tex.h b/src/mesa/drivers/dri/r200/r200_tex.h index 1a1e7038df6..8bebf8a037b 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.h +++ b/src/mesa/drivers/dri/r200/r200_tex.h @@ -42,7 +42,7 @@ extern void r200SetTexOffset(__DRIcontext *pDRICtx, GLint texname, unsigned long long offset, GLint depth, GLuint pitch); -extern void r200UpdateTextureState( GLcontext *ctx ); +extern void r200UpdateTextureState( struct gl_context *ctx ); extern int r200UploadTexImages( r200ContextPtr rmesa, radeonTexObjPtr t, GLuint face ); @@ -50,8 +50,8 @@ extern void r200DestroyTexObj( r200ContextPtr rmesa, radeonTexObjPtr t ); extern void r200InitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *functions ); -extern void r200UpdateFragmentShader( GLcontext *ctx ); +extern void r200UpdateFragmentShader( struct gl_context *ctx ); -extern void set_re_cntl_d3d( GLcontext *ctx, int unit, GLboolean use_d3d ); +extern void set_re_cntl_d3d( struct gl_context *ctx, int unit, GLboolean use_d3d ); #endif /* __R200_TEX_H__ */ diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c index 9ccf30c3ac9..690bec640bd 100644 --- a/src/mesa/drivers/dri/r200/r200_texstate.c +++ b/src/mesa/drivers/dri/r200/r200_texstate.c @@ -302,7 +302,7 @@ do { \ * Texture unit state management */ -static GLboolean r200UpdateTextureEnv( GLcontext *ctx, int unit, int slot, GLuint replaceargs ) +static GLboolean r200UpdateTextureEnv( struct gl_context *ctx, int unit, int slot, GLuint replaceargs ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -869,7 +869,7 @@ void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv) #define REF_COLOR 1 #define REF_ALPHA 2 -static GLboolean r200UpdateAllTexEnv( GLcontext *ctx ) +static GLboolean r200UpdateAllTexEnv( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLint i, j, currslot; @@ -1203,7 +1203,7 @@ static GLuint r200_need_dis_texgen(const GLbitfield texGenEnabled, /* * Returns GL_FALSE if fallback required. */ -static GLboolean r200_validate_texgen( GLcontext *ctx, GLuint unit ) +static GLboolean r200_validate_texgen( struct gl_context *ctx, GLuint unit ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -1385,7 +1385,7 @@ static GLboolean r200_validate_texgen( GLcontext *ctx, GLuint unit ) return GL_TRUE; } -void set_re_cntl_d3d( GLcontext *ctx, int unit, GLboolean use_d3d ) +void set_re_cntl_d3d( struct gl_context *ctx, int unit, GLboolean use_d3d ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1521,7 +1521,7 @@ static void setup_hardware_state(r200ContextPtr rmesa, radeonTexObj *t) } -static GLboolean r200_validate_texture(GLcontext *ctx, struct gl_texture_object *texObj, int unit) +static GLboolean r200_validate_texture(struct gl_context *ctx, struct gl_texture_object *texObj, int unit) { r200ContextPtr rmesa = R200_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); @@ -1564,7 +1564,7 @@ static GLboolean r200_validate_texture(GLcontext *ctx, struct gl_texture_object return !t->border_fallback; } -static GLboolean r200UpdateTextureUnit(GLcontext *ctx, int unit) +static GLboolean r200UpdateTextureUnit(struct gl_context *ctx, int unit) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint unitneeded = rmesa->state.texture.unit[unit].unitneeded; @@ -1588,7 +1588,7 @@ static GLboolean r200UpdateTextureUnit(GLcontext *ctx, int unit) } -void r200UpdateTextureState( GLcontext *ctx ) +void r200UpdateTextureState( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLboolean ok; diff --git a/src/mesa/drivers/dri/r200/r200_vertprog.c b/src/mesa/drivers/dri/r200/r200_vertprog.c index 5d268319f3f..5d69012a81f 100644 --- a/src/mesa/drivers/dri/r200/r200_vertprog.c +++ b/src/mesa/drivers/dri/r200/r200_vertprog.c @@ -100,7 +100,7 @@ static struct{ }; #undef OPN -static GLboolean r200VertexProgUpdateParams(GLcontext *ctx, struct r200_vertex_program *vp) +static GLboolean r200VertexProgUpdateParams(struct gl_context *ctx, struct r200_vertex_program *vp) { r200ContextPtr rmesa = R200_CONTEXT( ctx ); GLfloat *fcmd = (GLfloat *)&rmesa->hw.vpp[0].cmd[VPP_CMD_0 + 1]; @@ -396,7 +396,7 @@ static unsigned long op_operands(enum prog_opcode opcode) * * \return GL_TRUE for success, GL_FALSE for failure. */ -static GLboolean r200_translate_vertex_program(GLcontext *ctx, struct r200_vertex_program *vp) +static GLboolean r200_translate_vertex_program(struct gl_context *ctx, struct r200_vertex_program *vp) { struct gl_vertex_program *mesa_vp = &vp->mesa_program; struct prog_instruction *vpi; @@ -1098,7 +1098,7 @@ else { return GL_TRUE; } -void r200SetupVertexProg( GLcontext *ctx ) { +void r200SetupVertexProg( struct gl_context *ctx ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); struct r200_vertex_program *vp = (struct r200_vertex_program *)ctx->VertexProgram.Current; GLboolean fallback; @@ -1179,7 +1179,7 @@ void r200SetupVertexProg( GLcontext *ctx ) { static void -r200BindProgram(GLcontext *ctx, GLenum target, struct gl_program *prog) +r200BindProgram(struct gl_context *ctx, GLenum target, struct gl_program *prog) { r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1194,7 +1194,7 @@ r200BindProgram(GLcontext *ctx, GLenum target, struct gl_program *prog) } static struct gl_program * -r200NewProgram(GLcontext *ctx, GLenum target, GLuint id) +r200NewProgram(struct gl_context *ctx, GLenum target, GLuint id) { struct r200_vertex_program *vp; @@ -1213,13 +1213,13 @@ r200NewProgram(GLcontext *ctx, GLenum target, GLuint id) static void -r200DeleteProgram(GLcontext *ctx, struct gl_program *prog) +r200DeleteProgram(struct gl_context *ctx, struct gl_program *prog) { _mesa_delete_program(ctx, prog); } static GLboolean -r200ProgramStringNotify(GLcontext *ctx, GLenum target, struct gl_program *prog) +r200ProgramStringNotify(struct gl_context *ctx, GLenum target, struct gl_program *prog) { struct r200_vertex_program *vp = (void *)prog; r200ContextPtr rmesa = R200_CONTEXT(ctx); @@ -1244,7 +1244,7 @@ r200ProgramStringNotify(GLcontext *ctx, GLenum target, struct gl_program *prog) } static GLboolean -r200IsProgramNative(GLcontext *ctx, GLenum target, struct gl_program *prog) +r200IsProgramNative(struct gl_context *ctx, GLenum target, struct gl_program *prog) { struct r200_vertex_program *vp = (void *)prog; diff --git a/src/mesa/drivers/dri/r200/r200_vertprog.h b/src/mesa/drivers/dri/r200/r200_vertprog.h index 938237680ce..4757f4b32bc 100644 --- a/src/mesa/drivers/dri/r200/r200_vertprog.h +++ b/src/mesa/drivers/dri/r200/r200_vertprog.h @@ -11,7 +11,7 @@ typedef struct { } VERTEX_SHADER_INSTRUCTION; extern void r200InitShaderFuncs(struct dd_function_table *functions); -extern void r200SetupVertexProg( GLcontext *ctx ); +extern void r200SetupVertexProg( struct gl_context *ctx ); #define VSF_FLAG_X 1 #define VSF_FLAG_Y 2 diff --git a/src/mesa/drivers/dri/r300/r300_blit.c b/src/mesa/drivers/dri/r300/r300_blit.c index 74aef765e30..9fd8e8fde5f 100644 --- a/src/mesa/drivers/dri/r300/r300_blit.c +++ b/src/mesa/drivers/dri/r300/r300_blit.c @@ -569,7 +569,7 @@ unsigned r300_check_blit(gl_format dst_format) * @param[in] height region height * @param[in] flip_y set if y coords of the source image need to be flipped */ -unsigned r300_blit(GLcontext *ctx, +unsigned r300_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r300/r300_blit.h b/src/mesa/drivers/dri/r300/r300_blit.h index 39b157a57b8..286dbe18560 100644 --- a/src/mesa/drivers/dri/r300/r300_blit.h +++ b/src/mesa/drivers/dri/r300/r300_blit.h @@ -32,7 +32,7 @@ void r300_blit_init(struct r300_context *r300); unsigned r300_check_blit(gl_format mesa_format); -unsigned r300_blit(GLcontext *ctx, +unsigned r300_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index c40802aec6e..8a2f5ce0214 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -69,7 +69,7 @@ static unsigned packet0_count(r300ContextPtr r300, uint32_t *pkt) #define vpu_count(ptr) (((drm_r300_cmd_header_t*)(ptr))->vpu.count) #define r500fp_count(ptr) (((drm_r300_cmd_header_t*)(ptr))->r500fp.count) -static int check_vpu(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_vpu(struct gl_context *ctx, struct radeon_state_atom *atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); int cnt; @@ -83,7 +83,7 @@ static int check_vpu(GLcontext *ctx, struct radeon_state_atom *atom) return cnt ? (cnt * 4) + extra : 0; } -static int check_vpp(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_vpp(struct gl_context *ctx, struct radeon_state_atom *atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); int cnt; @@ -114,7 +114,7 @@ void r300_emit_vpu(struct r300_context *r300, END_BATCH(); } -static void emit_vpu_state(GLcontext *ctx, struct radeon_state_atom * atom) +static void emit_vpu_state(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); drm_r300_cmd_header_t cmd; @@ -126,7 +126,7 @@ static void emit_vpu_state(GLcontext *ctx, struct radeon_state_atom * atom) r300_emit_vpu(r300, &atom->cmd[1], vpu_count(atom->cmd) * 4, addr); } -static void emit_vpp_state(GLcontext *ctx, struct radeon_state_atom * atom) +static void emit_vpp_state(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); drm_r300_cmd_header_t cmd; @@ -158,7 +158,7 @@ void r500_emit_fp(struct r300_context *r300, END_BATCH(); } -static void emit_r500fp_atom(GLcontext *ctx, struct radeon_state_atom * atom) +static void emit_r500fp_atom(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); drm_r300_cmd_header_t cmd; @@ -179,7 +179,7 @@ static void emit_r500fp_atom(GLcontext *ctx, struct radeon_state_atom * atom) r500_emit_fp(r300, &atom->cmd[1], count, addr, type, clamp); } -static int check_tex_offsets(GLcontext *ctx, struct radeon_state_atom * atom) +static int check_tex_offsets(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); int numtmus = packet0_count(r300, r300->hw.tex.offset.cmd); @@ -200,7 +200,7 @@ static int check_tex_offsets(GLcontext *ctx, struct radeon_state_atom * atom) return dw; } -static void emit_tex_offsets(GLcontext *ctx, struct radeon_state_atom * atom) +static void emit_tex_offsets(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); BATCH_LOCALS(&r300->radeon); @@ -249,7 +249,7 @@ static void emit_tex_offsets(GLcontext *ctx, struct radeon_state_atom * atom) } } -void r300_emit_scissor(GLcontext *ctx) +void r300_emit_scissor(struct gl_context *ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); BATCH_LOCALS(&r300->radeon); @@ -287,7 +287,7 @@ void r300_emit_scissor(GLcontext *ctx) OUT_BATCH((x2 << R300_SCISSORS_X_SHIFT)|(y2 << R300_SCISSORS_Y_SHIFT)); END_BATCH(); } -static int check_cb_offset(GLcontext *ctx, struct radeon_state_atom * atom) +static int check_cb_offset(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); uint32_t dw = 6 + 3 + 16; @@ -411,7 +411,7 @@ void r300_emit_cb_setup(struct r300_context *r300, END_BATCH(); } -static void emit_cb_offset_atom(GLcontext *ctx, struct radeon_state_atom * atom) +static void emit_cb_offset_atom(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct radeon_renderbuffer *rrb; @@ -433,7 +433,7 @@ static void emit_cb_offset_atom(GLcontext *ctx, struct radeon_state_atom * atom) } } -static int check_zb_offset(GLcontext *ctx, struct radeon_state_atom * atom) +static int check_zb_offset(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); uint32_t dw; @@ -443,7 +443,7 @@ static int check_zb_offset(GLcontext *ctx, struct radeon_state_atom * atom) return dw; } -static void emit_zb_offset(GLcontext *ctx, struct radeon_state_atom * atom) +static void emit_zb_offset(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); BATCH_LOCALS(&r300->radeon); @@ -476,7 +476,7 @@ static void emit_zb_offset(GLcontext *ctx, struct radeon_state_atom * atom) END_BATCH(); } -static void emit_zstencil_format(GLcontext *ctx, struct radeon_state_atom * atom) +static void emit_zstencil_format(struct gl_context *ctx, struct radeon_state_atom * atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); BATCH_LOCALS(&r300->radeon); @@ -504,17 +504,17 @@ static void emit_zstencil_format(GLcontext *ctx, struct radeon_state_atom * atom END_BATCH(); } -static int check_never(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_never(struct gl_context *ctx, struct radeon_state_atom *atom) { return 0; } -static int check_always(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_always(struct gl_context *ctx, struct radeon_state_atom *atom) { return atom->cmd_size; } -static int check_variable(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_variable(struct gl_context *ctx, struct radeon_state_atom *atom) { r300ContextPtr r300 = R300_CONTEXT(ctx); int cnt; @@ -525,7 +525,7 @@ static int check_variable(GLcontext *ctx, struct radeon_state_atom *atom) return cnt ? cnt + 1 : 0; } -static int check_r500fp(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_r500fp(struct gl_context *ctx, struct radeon_state_atom *atom) { int cnt; r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -537,7 +537,7 @@ static int check_r500fp(GLcontext *ctx, struct radeon_state_atom *atom) return cnt ? (cnt * 6) + extra : 0; } -static int check_r500fp_const(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_r500fp_const(struct gl_context *ctx, struct radeon_state_atom *atom) { int cnt; r300ContextPtr r300 = R300_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.h b/src/mesa/drivers/dri/r300/r300_cmdbuf.h index 0e68da928ed..7e6b8c5de62 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.h +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.h @@ -45,7 +45,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define SCISSORS_BUFSZ (3) void r300InitCmdBuf(r300ContextPtr r300); -void r300_emit_scissor(GLcontext *ctx); +void r300_emit_scissor(struct gl_context *ctx); void r300_emit_vpu(struct r300_context *ctx, uint32_t *data, diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index f3f1a59e6a9..9fbd36bfe63 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -219,7 +219,7 @@ static void r300_vtbl_pre_emit_atoms(radeonContextPtr radeon) end_3d(radeon); } -static void r300_fallback(GLcontext *ctx, GLuint bit, GLboolean mode) +static void r300_fallback(struct gl_context *ctx, GLuint bit, GLboolean mode) { r300ContextPtr r300 = R300_CONTEXT(ctx); if (mode) @@ -331,7 +331,7 @@ static void r300_init_vtbl(radeonContextPtr radeon) } } -static void r300InitConstValues(GLcontext *ctx, radeonScreenPtr screen) +static void r300InitConstValues(struct gl_context *ctx, radeonScreenPtr screen) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -439,7 +439,7 @@ static void r300ParseOptions(r300ContextPtr r300, radeonScreenPtr screen) r300->options = options; } -static void r300InitGLExtensions(GLcontext *ctx) +static void r300InitGLExtensions(struct gl_context *ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -485,7 +485,7 @@ GLboolean r300CreateContext(gl_api api, radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private); struct dd_function_table functions; r300ContextPtr r300; - GLcontext *ctx; + struct gl_context *ctx; assert(glVisual); assert(driContextPriv); diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 90933e0af64..349a3d412f1 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -463,9 +463,9 @@ struct r300_swtcl_info { }; struct r300_vtable { - void (* SetupRSUnit)(GLcontext *ctx); - void (* SetupFragmentShaderTextures)(GLcontext *ctx, int *tmu_mappings); - void (* SetupPixelShader)(GLcontext *ctx); + void (* SetupRSUnit)(struct gl_context *ctx); + void (* SetupFragmentShaderTextures)(struct gl_context *ctx, int *tmu_mappings); + void (* SetupPixelShader)(struct gl_context *ctx); }; struct r300_vertex_buffer { @@ -552,7 +552,7 @@ extern void r300InitShaderFuncs(struct dd_function_table *functions); extern void r300InitShaderFunctions(r300ContextPtr r300); -extern void r300InitDraw(GLcontext *ctx); +extern void r300InitDraw(struct gl_context *ctx); #define r300PackFloat32 radeonPackFloat32 #define r300PackFloat24 radeonPackFloat24 diff --git a/src/mesa/drivers/dri/r300/r300_draw.c b/src/mesa/drivers/dri/r300/r300_draw.c index 5ae9f49840b..81769e1ee5f 100644 --- a/src/mesa/drivers/dri/r300/r300_draw.c +++ b/src/mesa/drivers/dri/r300/r300_draw.c @@ -75,7 +75,7 @@ static int getTypeSize(GLenum type) } } -static void r300FixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf) +static void r300FixupIndexBuffer(struct gl_context *ctx, const struct _mesa_index_buffer *mesa_ind_buf) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLvoid *src_ptr; @@ -143,7 +143,7 @@ static void r300FixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer } -static void r300SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf) +static void r300SetupIndexBuffer(struct gl_context *ctx, const struct _mesa_index_buffer *mesa_ind_buf) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -219,7 +219,7 @@ static void r300SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer * Convert attribute data type to float * If the attribute uses named buffer object replace the bo with newly allocated bo */ -static void r300ConvertAttrib(GLcontext *ctx, int count, const struct gl_client_array *input, struct vertex_attribute *attr) +static void r300ConvertAttrib(struct gl_context *ctx, int count, const struct gl_client_array *input, struct vertex_attribute *attr) { r300ContextPtr r300 = R300_CONTEXT(ctx); const GLvoid *src_ptr; @@ -290,7 +290,7 @@ static void r300ConvertAttrib(GLcontext *ctx, int count, const struct gl_client_ } } -static void r300AlignDataToDword(GLcontext *ctx, const struct gl_client_array *input, int count, struct vertex_attribute *attr) +static void r300AlignDataToDword(struct gl_context *ctx, const struct gl_client_array *input, int count, struct vertex_attribute *attr) { r300ContextPtr r300 = R300_CONTEXT(ctx); const int dst_stride = (input->StrideB + 3) & ~3; @@ -328,7 +328,7 @@ static void r300AlignDataToDword(GLcontext *ctx, const struct gl_client_array *i attr->stride = dst_stride; } -static void r300TranslateAttrib(GLcontext *ctx, GLuint attr, int count, const struct gl_client_array *input) +static void r300TranslateAttrib(struct gl_context *ctx, GLuint attr, int count, const struct gl_client_array *input) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct r300_vertex_buffer *vbuf = &r300->vbuf; @@ -467,7 +467,7 @@ static void r300TranslateAttrib(GLcontext *ctx, GLuint attr, int count, const st ++vbuf->num_attribs; } -static void r300SetVertexFormat(GLcontext *ctx, const struct gl_client_array *arrays[], int count) +static void r300SetVertexFormat(struct gl_context *ctx, const struct gl_client_array *arrays[], int count) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct r300_vertex_buffer *vbuf = &r300->vbuf; @@ -497,7 +497,7 @@ static void r300SetVertexFormat(GLcontext *ctx, const struct gl_client_array *ar return; } -static void r300AllocDmaRegions(GLcontext *ctx, const struct gl_client_array *input[], int count) +static void r300AllocDmaRegions(struct gl_context *ctx, const struct gl_client_array *input[], int count) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct r300_vertex_buffer *vbuf = &r300->vbuf; @@ -578,7 +578,7 @@ static void r300AllocDmaRegions(GLcontext *ctx, const struct gl_client_array *in } -static void r300FreeData(GLcontext *ctx) +static void r300FreeData(struct gl_context *ctx) { /* Need to zero tcl.aos[n].bo and tcl.elt_dma_bo * to prevent double unref in radeonReleaseArrays @@ -604,7 +604,7 @@ static void r300FreeData(GLcontext *ctx) } } -static GLuint r300PredictTryDrawPrimsSize(GLcontext *ctx, +static GLuint r300PredictTryDrawPrimsSize(struct gl_context *ctx, GLuint nr_prims, const struct _mesa_prim *prim) { struct r300_context *r300 = R300_CONTEXT(ctx); @@ -641,7 +641,7 @@ static GLuint r300PredictTryDrawPrimsSize(GLcontext *ctx, return dwords; } -static GLboolean r300TryDrawPrims(GLcontext *ctx, +static GLboolean r300TryDrawPrims(struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -707,7 +707,7 @@ static GLboolean r300TryDrawPrims(GLcontext *ctx, return GL_TRUE; } -static void r300DrawPrims(GLcontext *ctx, +static void r300DrawPrims(struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -741,7 +741,7 @@ static void r300DrawPrims(GLcontext *ctx, _tnl_draw_prims(ctx, arrays, prim, nr_prims, ib, min_index, max_index); } -void r300InitDraw(GLcontext *ctx) +void r300InitDraw(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); diff --git a/src/mesa/drivers/dri/r300/r300_emit.c b/src/mesa/drivers/dri/r300/r300_emit.c index a24d4316115..f392006cedc 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.c +++ b/src/mesa/drivers/dri/r300/r300_emit.c @@ -48,14 +48,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_emit.h" -GLuint r300VAPInputCntl0(GLcontext * ctx, GLuint InputsRead) +GLuint r300VAPInputCntl0(struct gl_context * ctx, GLuint InputsRead) { /* No idea what this value means. I have seen other values written to * this register... */ return 0x5555; } -GLuint r300VAPInputCntl1(GLcontext * ctx, GLuint InputsRead) +GLuint r300VAPInputCntl1(struct gl_context * ctx, GLuint InputsRead) { GLuint i, vic_1 = 0; @@ -76,7 +76,7 @@ GLuint r300VAPInputCntl1(GLcontext * ctx, GLuint InputsRead) return vic_1; } -GLuint r300VAPOutputCntl0(GLcontext * ctx, GLuint vp_writes) +GLuint r300VAPOutputCntl0(struct gl_context * ctx, GLuint vp_writes) { GLuint ret = 0; @@ -100,7 +100,7 @@ GLuint r300VAPOutputCntl0(GLcontext * ctx, GLuint vp_writes) return ret; } -GLuint r300VAPOutputCntl1(GLcontext * ctx, GLuint vp_writes) +GLuint r300VAPOutputCntl1(struct gl_context * ctx, GLuint vp_writes) { GLuint i, ret = 0, first_free_texcoord = 0; diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index a456d8867c4..8911ab77283 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -220,9 +220,9 @@ extern int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim); extern void r300EmitCacheFlush(r300ContextPtr rmesa); -extern GLuint r300VAPInputCntl0(GLcontext * ctx, GLuint InputsRead); -extern GLuint r300VAPInputCntl1(GLcontext * ctx, GLuint InputsRead); -extern GLuint r300VAPOutputCntl0(GLcontext * ctx, GLuint vp_writes); -extern GLuint r300VAPOutputCntl1(GLcontext * ctx, GLuint vp_writes); +extern GLuint r300VAPInputCntl0(struct gl_context * ctx, GLuint InputsRead); +extern GLuint r300VAPInputCntl1(struct gl_context * ctx, GLuint InputsRead); +extern GLuint r300VAPOutputCntl0(struct gl_context * ctx, GLuint vp_writes); +extern GLuint r300VAPOutputCntl1(struct gl_context * ctx, GLuint vp_writes); #endif diff --git a/src/mesa/drivers/dri/r300/r300_fragprog_common.c b/src/mesa/drivers/dri/r300/r300_fragprog_common.c index 4af91f114d5..4e457b51eba 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog_common.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog_common.c @@ -208,7 +208,7 @@ static void allocate_hw_inputs( } -static void translate_fragment_program(GLcontext *ctx, struct r300_fragment_program_cont *cont, struct r300_fragment_program *fp) +static void translate_fragment_program(struct gl_context *ctx, struct r300_fragment_program_cont *cont, struct r300_fragment_program *fp) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct r300_fragment_program_compiler compiler; @@ -278,7 +278,7 @@ static void translate_fragment_program(GLcontext *ctx, struct r300_fragment_prog rc_destroy(&compiler.Base); } -struct r300_fragment_program *r300SelectAndTranslateFragmentShader(GLcontext *ctx) +struct r300_fragment_program *r300SelectAndTranslateFragmentShader(struct gl_context *ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct r300_fragment_program_cont *fp_list; diff --git a/src/mesa/drivers/dri/r300/r300_fragprog_common.h b/src/mesa/drivers/dri/r300/r300_fragprog_common.h index 3d64c08cee9..cfa5acf4330 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog_common.h +++ b/src/mesa/drivers/dri/r300/r300_fragprog_common.h @@ -32,6 +32,6 @@ #include "r300_context.h" -struct r300_fragment_program *r300SelectAndTranslateFragmentShader(GLcontext *ctx); +struct r300_fragment_program *r300SelectAndTranslateFragmentShader(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index cf89ab7ec3d..821318e7a59 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -321,7 +321,7 @@ static void r300FireAOS(r300ContextPtr rmesa, int vertex_count, int type) END_BATCH(); } -void r300RunRenderPrimitive(GLcontext * ctx, int start, int end, int prim) +void r300RunRenderPrimitive(struct gl_context * ctx, int start, int end, int prim) { r300ContextPtr rmesa = R300_CONTEXT(ctx); BATCH_LOCALS(&rmesa->radeon); @@ -444,7 +444,7 @@ static const char *getFallbackString(r300ContextPtr rmesa, uint32_t bit) } } -void r300SwitchFallback(GLcontext *ctx, uint32_t bit, GLboolean mode) +void r300SwitchFallback(struct gl_context *ctx, uint32_t bit, GLboolean mode) { TNLcontext *tnl = TNL_CONTEXT(ctx); r300ContextPtr rmesa = R300_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r300/r300_render.h b/src/mesa/drivers/dri/r300/r300_render.h index 581e9fa0ccd..5a78592c751 100644 --- a/src/mesa/drivers/dri/r300/r300_render.h +++ b/src/mesa/drivers/dri/r300/r300_render.h @@ -63,8 +63,8 @@ extern const struct tnl_pipeline_stage _r300_render_stage; -extern void r300SwitchFallback(GLcontext *ctx, uint32_t bit, GLboolean mode); +extern void r300SwitchFallback(struct gl_context *ctx, uint32_t bit, GLboolean mode); -extern void r300RunRenderPrimitive(GLcontext * ctx, int start, int end, int prim); +extern void r300RunRenderPrimitive(struct gl_context * ctx, int start, int end, int prim); #endif diff --git a/src/mesa/drivers/dri/r300/r300_shader.c b/src/mesa/drivers/dri/r300/r300_shader.c index a9bddf05779..f2bbac5b857 100644 --- a/src/mesa/drivers/dri/r300/r300_shader.c +++ b/src/mesa/drivers/dri/r300/r300_shader.c @@ -32,7 +32,7 @@ #include "r300_context.h" #include "r300_fragprog_common.h" -static void freeFragProgCache(GLcontext *ctx, struct r300_fragment_program_cont *cache) +static void freeFragProgCache(struct gl_context *ctx, struct r300_fragment_program_cont *cache) { struct r300_fragment_program *tmp, *fp = cache->progs; @@ -44,7 +44,7 @@ static void freeFragProgCache(GLcontext *ctx, struct r300_fragment_program_cont } } -static void freeVertProgCache(GLcontext *ctx, struct r300_vertex_program_cont *cache) +static void freeVertProgCache(struct gl_context *ctx, struct r300_vertex_program_cont *cache) { struct r300_vertex_program *tmp, *vp = cache->progs; @@ -57,7 +57,7 @@ static void freeVertProgCache(GLcontext *ctx, struct r300_vertex_program_cont *c } } -static struct gl_program *r300NewProgram(GLcontext * ctx, GLenum target, +static struct gl_program *r300NewProgram(struct gl_context * ctx, GLenum target, GLuint id) { struct r300_vertex_program_cont *vp; @@ -81,7 +81,7 @@ static struct gl_program *r300NewProgram(GLcontext * ctx, GLenum target, return NULL; } -static void r300DeleteProgram(GLcontext * ctx, struct gl_program *prog) +static void r300DeleteProgram(struct gl_context * ctx, struct gl_program *prog) { struct r300_vertex_program_cont *vp = (struct r300_vertex_program_cont *)prog; struct r300_fragment_program_cont *fp = (struct r300_fragment_program_cont *)prog; @@ -99,7 +99,7 @@ static void r300DeleteProgram(GLcontext * ctx, struct gl_program *prog) } static GLboolean -r300ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) +r300ProgramStringNotify(struct gl_context * ctx, GLenum target, struct gl_program *prog) { struct r300_vertex_program_cont *vp = (struct r300_vertex_program_cont *)prog; struct r300_fragment_program_cont *fp = (struct r300_fragment_program_cont *)prog; @@ -123,7 +123,7 @@ r300ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) } static GLboolean -r300IsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog) +r300IsProgramNative(struct gl_context * ctx, GLenum target, struct gl_program *prog) { if (target == GL_FRAGMENT_PROGRAM_ARB) { struct r300_fragment_program *fp = r300SelectAndTranslateFragmentShader(ctx); diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index bacb8f5e3a3..ab8c1df5f74 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -62,7 +62,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_render.h" #include "r300_vertprog.h" -static void r300BlendColor(GLcontext * ctx, const GLfloat cf[4]) +static void r300BlendColor(struct gl_context * ctx, const GLfloat cf[4]) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -204,7 +204,7 @@ static void r300SetBlendCntl(r300ContextPtr r300, int func, int eqn, } } -static void r300SetBlendState(GLcontext * ctx) +static void r300SetBlendState(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); int func = (R300_BLEND_GL_ONE << R300_SRC_BLEND_SHIFT) | @@ -302,13 +302,13 @@ static void r300SetBlendState(GLcontext * ctx) R300_ALPHA_BLEND_ENABLE), funcA, eqnA); } -static void r300BlendEquationSeparate(GLcontext * ctx, +static void r300BlendEquationSeparate(struct gl_context * ctx, GLenum modeRGB, GLenum modeA) { r300SetBlendState(ctx); } -static void r300BlendFuncSeparate(GLcontext * ctx, +static void r300BlendFuncSeparate(struct gl_context * ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA) { @@ -331,7 +331,7 @@ static GLuint translate_logicop(GLenum logicop) * Used internally to update the r300->hw hardware state to match the * current OpenGL state. */ -static void r300SetLogicOpState(GLcontext *ctx) +static void r300SetLogicOpState(struct gl_context *ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); R300_STATECHANGE(r300, rop); @@ -347,13 +347,13 @@ static void r300SetLogicOpState(GLcontext *ctx) * Called by Mesa when an application program changes the LogicOp state * via glLogicOp. */ -static void r300LogicOpcode(GLcontext *ctx, GLenum logicop) +static void r300LogicOpcode(struct gl_context *ctx, GLenum logicop) { if (RGBA_LOGICOP_ENABLED(ctx)) r300SetLogicOpState(ctx); } -static void r300ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) +static void r300ClipPlane( struct gl_context *ctx, GLenum plane, const GLfloat *eq ) { r300ContextPtr rmesa = R300_CONTEXT(ctx); GLint p; @@ -373,7 +373,7 @@ static void r300ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) rmesa->hw.vpucp[p].cmd[R300_VPUCP_W] = ip[3]; } -static void r300SetClipPlaneState(GLcontext * ctx, GLenum cap, GLboolean state) +static void r300SetClipPlaneState(struct gl_context * ctx, GLenum cap, GLboolean state) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLuint p; @@ -395,7 +395,7 @@ static void r300SetClipPlaneState(GLcontext * ctx, GLenum cap, GLboolean state) /** * Update our tracked culling state based on Mesa's state. */ -static void r300UpdateCulling(GLcontext * ctx) +static void r300UpdateCulling(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); uint32_t val = 0; @@ -435,7 +435,7 @@ static void r300UpdateCulling(GLcontext * ctx) r300->hw.cul.cmd[R300_CUL_CULL] = val; } -static void r300SetPolygonOffsetState(GLcontext * ctx, GLboolean state) +static void r300SetPolygonOffsetState(struct gl_context * ctx, GLboolean state) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -447,14 +447,14 @@ static void r300SetPolygonOffsetState(GLcontext * ctx, GLboolean state) } } -static GLboolean current_fragment_program_writes_depth(GLcontext* ctx) +static GLboolean current_fragment_program_writes_depth(struct gl_context* ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); return ctx->FragmentProgram._Current && r300->selected_fp->code.writes_depth; } -static void r300SetEarlyZState(GLcontext * ctx) +static void r300SetEarlyZState(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLuint topZ = R300_ZTOP_ENABLE; @@ -499,7 +499,7 @@ static void r300SetEarlyZState(GLcontext * ctx) } } -static void r300SetAlphaState(GLcontext * ctx) +static void r300SetAlphaState(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLubyte refByte; @@ -549,7 +549,7 @@ static void r300SetAlphaState(GLcontext * ctx) r300->hw.at.cmd[R300_AT_UNKNOWN] = 0; } -static void r300AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) +static void r300AlphaFunc(struct gl_context * ctx, GLenum func, GLfloat ref) { (void)func; (void)ref; @@ -579,7 +579,7 @@ static int translate_func(int func) return 0; } -static void r300SetDepthState(GLcontext * ctx) +static void r300SetDepthState(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -598,7 +598,7 @@ static void r300SetDepthState(GLcontext * ctx) } } -static void r300CatchStencilFallback(GLcontext *ctx) +static void r300CatchStencilFallback(struct gl_context *ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); const unsigned back = ctx->Stencil._BackFace; @@ -616,7 +616,7 @@ static void r300CatchStencilFallback(GLcontext *ctx) } } -static void r300SetStencilState(GLcontext * ctx, GLboolean state) +static void r300SetStencilState(struct gl_context * ctx, GLboolean state) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLboolean hw_stencil = GL_FALSE; @@ -641,7 +641,7 @@ static void r300SetStencilState(GLcontext * ctx, GLboolean state) } } -static void r300UpdatePolygonMode(GLcontext * ctx) +static void r300UpdatePolygonMode(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); uint32_t hw_mode = R300_GA_POLY_MODE_DISABLE; @@ -704,7 +704,7 @@ static void r300UpdatePolygonMode(GLcontext * ctx) * * \note Mesa already filters redundant calls to this function. */ -static void r300CullFace(GLcontext * ctx, GLenum mode) +static void r300CullFace(struct gl_context * ctx, GLenum mode) { (void)mode; @@ -716,7 +716,7 @@ static void r300CullFace(GLcontext * ctx, GLenum mode) * * \note Mesa already filters redundant calls to this function. */ -static void r300FrontFace(GLcontext * ctx, GLenum mode) +static void r300FrontFace(struct gl_context * ctx, GLenum mode) { (void)mode; @@ -729,7 +729,7 @@ static void r300FrontFace(GLcontext * ctx, GLenum mode) * * \note Mesa already filters redundant calls to this function. */ -static void r300DepthFunc(GLcontext * ctx, GLenum func) +static void r300DepthFunc(struct gl_context * ctx, GLenum func) { (void)func; r300SetDepthState(ctx); @@ -740,7 +740,7 @@ static void r300DepthFunc(GLcontext * ctx, GLenum func) * * \note Mesa already filters redundant calls to this function. */ -static void r300DepthMask(GLcontext * ctx, GLboolean mask) +static void r300DepthMask(struct gl_context * ctx, GLboolean mask) { (void)mask; r300SetDepthState(ctx); @@ -749,7 +749,7 @@ static void r300DepthMask(GLcontext * ctx, GLboolean mask) /** * Handle glColorMask() */ -static void r300ColorMask(GLcontext * ctx, +static void r300ColorMask(struct gl_context * ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -767,7 +767,7 @@ static void r300ColorMask(GLcontext * ctx, /* ============================================================= * Point state */ -static void r300PointSize(GLcontext * ctx, GLfloat size) +static void r300PointSize(struct gl_context * ctx, GLfloat size) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -784,7 +784,7 @@ static void r300PointSize(GLcontext * ctx, GLfloat size) ((int)(size * 6) << R300_POINTSIZE_Y_SHIFT); } -static void r300PointParameter(GLcontext * ctx, GLenum pname, const GLfloat * param) +static void r300PointParameter(struct gl_context * ctx, GLenum pname, const GLfloat * param) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -814,7 +814,7 @@ static void r300PointParameter(GLcontext * ctx, GLenum pname, const GLfloat * pa /* ============================================================= * Line state */ -static void r300LineWidth(GLcontext * ctx, GLfloat widthf) +static void r300LineWidth(struct gl_context * ctx, GLfloat widthf) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -826,7 +826,7 @@ static void r300LineWidth(GLcontext * ctx, GLfloat widthf) R300_LINE_CNT_HO | R300_LINE_CNT_VE | (int)(widthf * 6.0); } -static void r300PolygonMode(GLcontext * ctx, GLenum face, GLenum mode) +static void r300PolygonMode(struct gl_context * ctx, GLenum face, GLenum mode) { (void)face; (void)mode; @@ -864,7 +864,7 @@ static int translate_stencil_op(int op) return 0; } -static void r300ShadeModel(GLcontext * ctx, GLenum mode) +static void r300ShadeModel(struct gl_context * ctx, GLenum mode) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -885,7 +885,7 @@ static void r300ShadeModel(GLcontext * ctx, GLenum mode) rmesa->hw.shade2.cmd[3] = 0x00000000; } -static void r300StencilFuncSeparate(GLcontext * ctx, GLenum face, +static void r300StencilFuncSeparate(struct gl_context * ctx, GLenum face, GLenum func, GLint ref, GLuint mask) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -932,7 +932,7 @@ static void r300StencilFuncSeparate(GLcontext * ctx, GLenum face, } } -static void r300StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) +static void r300StencilMaskSeparate(struct gl_context * ctx, GLenum face, GLuint mask) { r300ContextPtr rmesa = R300_CONTEXT(ctx); const unsigned back = ctx->Stencil._BackFace; @@ -956,7 +956,7 @@ static void r300StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) } } -static void r300StencilOpSeparate(GLcontext * ctx, GLenum face, +static void r300StencilOpSeparate(struct gl_context * ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -992,7 +992,7 @@ static void r300StencilOpSeparate(GLcontext * ctx, GLenum face, * Window position and viewport transformation */ -static void r300UpdateWindow(GLcontext * ctx) +static void r300UpdateWindow(struct gl_context * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -1028,7 +1028,7 @@ static void r300UpdateWindow(GLcontext * ctx) rmesa->hw.vpt.cmd[R300_VPT_ZOFFSET] = r300PackFloat32(tz); } -static void r300Viewport(GLcontext * ctx, GLint x, GLint y, +static void r300Viewport(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height) { /* Don't pipeline viewport changes, conflict with window offset @@ -1040,12 +1040,12 @@ static void r300Viewport(GLcontext * ctx, GLint x, GLint y, radeon_viewport(ctx, x, y, width, height); } -static void r300DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) +static void r300DepthRange(struct gl_context * ctx, GLclampd nearval, GLclampd farval) { r300UpdateWindow(ctx); } -void r300UpdateViewportOffset(GLcontext * ctx) +void r300UpdateViewportOffset(struct gl_context * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -1074,7 +1074,7 @@ void r300UpdateViewportOffset(GLcontext * ctx) * Update R300's own internal state parameters. * For now just STATE_R300_WINDOW_DIMENSION */ -static void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state) +static void r300UpdateStateParameters(struct gl_context * ctx, GLuint new_state) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct gl_program_parameter_list *paramList; @@ -1096,7 +1096,7 @@ static void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state) /* ============================================================= * Polygon state */ -static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) +static void r300PolygonOffset(struct gl_context * ctx, GLfloat factor, GLfloat units) { r300ContextPtr rmesa = R300_CONTEXT(ctx); GLfloat constant = units; @@ -1193,7 +1193,7 @@ static unsigned long gen_fixed_filter(unsigned long f) return f; } -static void r300SetupFragmentShaderTextures(GLcontext *ctx, int *tmu_mappings) +static void r300SetupFragmentShaderTextures(struct gl_context *ctx, int *tmu_mappings) { r300ContextPtr r300 = R300_CONTEXT(ctx); int i; @@ -1235,7 +1235,7 @@ static void r300SetupFragmentShaderTextures(GLcontext *ctx, int *tmu_mappings) R300_US_TEX_INST_0, code->tex.length); } -static void r500SetupFragmentShaderTextures(GLcontext *ctx, int *tmu_mappings) +static void r500SetupFragmentShaderTextures(struct gl_context *ctx, int *tmu_mappings) { r300ContextPtr r300 = R300_CONTEXT(ctx); int i; @@ -1280,7 +1280,7 @@ static GLuint translate_lod_bias(GLfloat bias) } -static void r300SetupTextures(GLcontext * ctx) +static void r300SetupTextures(struct gl_context * ctx) { int i, mtu; struct radeon_tex_obj *t; @@ -1427,7 +1427,7 @@ union r300_outputs_written { ((hw_tcl_on) ? (ow).vp_outputs & (1 << (vp_result)) : \ RENDERINPUTS_TEST( (ow.index_bitset), (tnl_attrib) )) -static void r300SetupRSUnit(GLcontext * ctx) +static void r300SetupRSUnit(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); union r300_outputs_written OutputsWritten; @@ -1521,7 +1521,7 @@ static void r300SetupRSUnit(GLcontext * ctx) WARN_ONCE("Don't know how to satisfy InputsRead=0x%08x\n", InputsRead); } -static void r500SetupRSUnit(GLcontext * ctx) +static void r500SetupRSUnit(struct gl_context * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); union r300_outputs_written OutputsWritten; @@ -1681,7 +1681,7 @@ void r300VapCntl(r300ContextPtr rmesa, GLuint input_count, * * \note Mesa already filters redundant calls to this function. */ -static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) +static void r300Enable(struct gl_context * ctx, GLenum cap, GLboolean state) { r300ContextPtr rmesa = R300_CONTEXT(ctx); if (RADEON_DEBUG & RADEON_STATE) @@ -1756,7 +1756,7 @@ static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) */ static void r300ResetHwState(r300ContextPtr r300) { - GLcontext *ctx = r300->radeon.glCtx; + struct gl_context *ctx = r300->radeon.glCtx; int has_tcl; has_tcl = r300->options.hw_tcl_enabled; @@ -1965,7 +1965,7 @@ static void r300ResetHwState(r300ContextPtr r300) void r300UpdateShaders(r300ContextPtr rmesa) { - GLcontext *ctx = rmesa->radeon.glCtx; + struct gl_context *ctx = rmesa->radeon.glCtx; /* should only happenen once, just after context is created */ /* TODO: shouldn't we fallback to sw here? */ @@ -1994,7 +1994,7 @@ void r300UpdateShaders(r300ContextPtr rmesa) rmesa->radeon.NewGLState = 0; } -static const GLfloat *get_fragmentprogram_constant(GLcontext *ctx, GLuint index, GLfloat * buffer) +static const GLfloat *get_fragmentprogram_constant(struct gl_context *ctx, GLuint index, GLfloat * buffer) { static const GLfloat dummy[4] = { 0, 0, 0, 0 }; r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -2052,7 +2052,7 @@ static const GLfloat *get_fragmentprogram_constant(GLcontext *ctx, GLuint index, } -static void r300SetupPixelShader(GLcontext *ctx) +static void r300SetupPixelShader(struct gl_context *ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct r300_fragment_program *fp = rmesa->selected_fp; @@ -2109,7 +2109,7 @@ static void r300SetupPixelShader(GLcontext *ctx) if(_nc>_p->r500fp.count)_p->r500fp.count=_nc;\ } while(0) -static void r500SetupPixelShader(GLcontext *ctx) +static void r500SetupPixelShader(struct gl_context *ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct r300_fragment_program *fp = rmesa->selected_fp; @@ -2158,7 +2158,7 @@ static void r500SetupPixelShader(GLcontext *ctx) bump_r500fp_const_count(rmesa->hw.r500fp_const.cmd, fp->code.constants.Count * 4); } -void r300SetupVAP(GLcontext *ctx, GLuint InputsRead, GLuint OutputsWritten) +void r300SetupVAP(struct gl_context *ctx, GLuint InputsRead, GLuint OutputsWritten) { r300ContextPtr rmesa = R300_CONTEXT( ctx ); struct vertex_attribute *attrs = rmesa->vbuf.attribs; @@ -2218,7 +2218,7 @@ void r300SetupVAP(GLcontext *ctx, GLuint InputsRead, GLuint OutputsWritten) void r300UpdateShaderStates(r300ContextPtr rmesa) { - GLcontext *ctx; + struct gl_context *ctx; ctx = rmesa->radeon.glCtx; /* should only happenen once, just after context is created */ @@ -2241,7 +2241,7 @@ void r300UpdateShaderStates(r300ContextPtr rmesa) #define EASY_US_OUT_FMT(comps, c0, c1, c2, c3) \ (R500_OUT_FMT_##comps | R500_C0_SEL_##c0 | R500_C1_SEL_##c1 | \ R500_C2_SEL_##c2 | R500_C3_SEL_##c3) -static void r300SetupUsOutputFormat(GLcontext *ctx) +static void r300SetupUsOutputFormat(struct gl_context *ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); uint32_t hw_format; @@ -2304,7 +2304,7 @@ static void r300SetupUsOutputFormat(GLcontext *ctx) /** * Called by Mesa after an internal state update. */ -static void r300InvalidateState(GLcontext * ctx, GLuint new_state) +static void r300InvalidateState(struct gl_context * ctx, GLuint new_state) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -2347,7 +2347,7 @@ void r300InitState(r300ContextPtr r300) r300ResetHwState(r300); } -static void r300RenderMode(GLcontext * ctx, GLenum mode) +static void r300RenderMode(struct gl_context * ctx, GLenum mode) { r300SwitchFallback(ctx, R300_FALLBACK_RENDER_MODE, ctx->RenderMode != GL_RENDER); } diff --git a/src/mesa/drivers/dri/r300/r300_state.h b/src/mesa/drivers/dri/r300/r300_state.h index e70f84f4e4b..e3b0da4cbde 100644 --- a/src/mesa/drivers/dri/r300/r300_state.h +++ b/src/mesa/drivers/dri/r300/r300_state.h @@ -50,13 +50,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. r300->radeon.hw.is_dirty = GL_TRUE; \ } while(0) -void r300UpdateViewportOffset (GLcontext * ctx); -void r300UpdateDrawBuffer (GLcontext * ctx); +void r300UpdateViewportOffset (struct gl_context * ctx); +void r300UpdateDrawBuffer (struct gl_context * ctx); void r300UpdateShaders (r300ContextPtr rmesa); void r300UpdateShaderStates (r300ContextPtr rmesa); void r300InitState (r300ContextPtr r300); void r300InitStateFuncs (radeonContextPtr radeon, struct dd_function_table *functions); void r300VapCntl(r300ContextPtr rmesa, GLuint input_count, GLuint output_count, GLuint temp_count); -void r300SetupVAP(GLcontext *ctx, GLuint InputsRead, GLuint OutputsWritten); +void r300SetupVAP(struct gl_context *ctx, GLuint InputsRead, GLuint OutputsWritten); #endif /* __R300_STATE_H__ */ diff --git a/src/mesa/drivers/dri/r300/r300_swtcl.c b/src/mesa/drivers/dri/r300/r300_swtcl.c index 4dcc7cb022a..4a6762ff830 100644 --- a/src/mesa/drivers/dri/r300/r300_swtcl.c +++ b/src/mesa/drivers/dri/r300/r300_swtcl.c @@ -68,7 +68,7 @@ do { \ ++num_attrs; \ } while (0) -void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_OutputsWritten) +void r300ChooseSwtclVertexFormat(struct gl_context *ctx, GLuint *_InputsRead, GLuint *_OutputsWritten) { r300ContextPtr rmesa = R300_CONTEXT( ctx ); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -226,7 +226,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_ RENDERINPUTS_COPY(rmesa->render_inputs_bitset, tnl->render_inputs_bitset); } -static void r300PrepareVertices(GLcontext *ctx) +static void r300PrepareVertices(struct gl_context *ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); GLuint InputsRead, OutputsWritten; @@ -285,7 +285,7 @@ static GLuint reduced_prim[] = { GL_TRIANGLES, }; -static void r300RasterPrimitive( GLcontext *ctx, GLuint prim ); +static void r300RasterPrimitive( struct gl_context *ctx, GLuint prim ); /*********************************************************************** * Emit primitives as inline vertices * @@ -497,7 +497,7 @@ static void init_rast_tab( void ) /**********************************************************************/ /* Choose render functions */ /**********************************************************************/ -static void r300ChooseRenderState( GLcontext *ctx ) +static void r300ChooseRenderState( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -528,7 +528,7 @@ static void r300ChooseRenderState( GLcontext *ctx ) } } -void r300RenderStart(GLcontext *ctx) +void r300RenderStart(struct gl_context *ctx) { radeon_print(RADEON_SWRENDER, RADEON_VERBOSE, "%s\n", __func__); r300ContextPtr rmesa = R300_CONTEXT( ctx ); @@ -550,11 +550,11 @@ void r300RenderStart(GLcontext *ctx) } } -void r300RenderFinish(GLcontext *ctx) +void r300RenderFinish(struct gl_context *ctx) { } -static void r300RasterPrimitive( GLcontext *ctx, GLuint hwprim ) +static void r300RasterPrimitive( struct gl_context *ctx, GLuint hwprim ) { r300ContextPtr rmesa = R300_CONTEXT(ctx); radeon_print(RADEON_SWRENDER, RADEON_TRACE, "%s\n", __func__); @@ -565,7 +565,7 @@ static void r300RasterPrimitive( GLcontext *ctx, GLuint hwprim ) } } -void r300RenderPrimitive(GLcontext *ctx, GLenum prim) +void r300RenderPrimitive(struct gl_context *ctx, GLenum prim) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -578,13 +578,13 @@ void r300RenderPrimitive(GLcontext *ctx, GLenum prim) r300RasterPrimitive( ctx, reduced_prim[prim] ); } -void r300ResetLineStipple(GLcontext *ctx) +void r300ResetLineStipple(struct gl_context *ctx) { if (RADEON_DEBUG & RADEON_VERTS) fprintf(stderr, "%s\n", __func__); } -void r300InitSwtcl(GLcontext *ctx) +void r300InitSwtcl(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -620,7 +620,7 @@ void r300InitSwtcl(GLcontext *ctx) _tnl_need_projected_coords( ctx, GL_FALSE ); } -void r300DestroySwtcl(GLcontext *ctx) +void r300DestroySwtcl(struct gl_context *ctx) { } @@ -656,7 +656,7 @@ static void r300EmitVbufPrim(r300ContextPtr rmesa, GLuint primitive, GLuint vert END_BATCH(); } -void r300_swtcl_flush(GLcontext *ctx, uint32_t current_offset) +void r300_swtcl_flush(struct gl_context *ctx, uint32_t current_offset) { radeon_print(RADEON_SWRENDER, RADEON_TRACE, "%s\n", __func__); r300ContextPtr rmesa = R300_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/r300/r300_swtcl.h b/src/mesa/drivers/dri/r300/r300_swtcl.h index c271d265468..51cfffc2af2 100644 --- a/src/mesa/drivers/dri/r300/r300_swtcl.h +++ b/src/mesa/drivers/dri/r300/r300_swtcl.h @@ -50,16 +50,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define SWTCL_OVM_TEX(n) ((n) + 6) #define SWTCL_OVM_POINT_SIZE 15 -extern void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *InputsRead, GLuint *OutputsWritten); +extern void r300ChooseSwtclVertexFormat(struct gl_context *ctx, GLuint *InputsRead, GLuint *OutputsWritten); -extern void r300InitSwtcl( GLcontext *ctx ); -extern void r300DestroySwtcl( GLcontext *ctx ); +extern void r300InitSwtcl( struct gl_context *ctx ); +extern void r300DestroySwtcl( struct gl_context *ctx ); -extern void r300RenderStart(GLcontext *ctx); -extern void r300RenderFinish(GLcontext *ctx); -extern void r300RenderPrimitive(GLcontext *ctx, GLenum prim); -extern void r300ResetLineStipple(GLcontext *ctx); +extern void r300RenderStart(struct gl_context *ctx); +extern void r300RenderFinish(struct gl_context *ctx); +extern void r300RenderPrimitive(struct gl_context *ctx, GLenum prim); +extern void r300ResetLineStipple(struct gl_context *ctx); -extern void r300_swtcl_flush(GLcontext *ctx, uint32_t current_offset); +extern void r300_swtcl_flush(struct gl_context *ctx, uint32_t current_offset); #endif diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index baef206bc26..a6bda0e4990 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -185,7 +185,7 @@ static void r300SetTexBorderColor(radeonTexObjPtr t, const GLfloat color[4]) * next UpdateTextureState */ -static void r300TexParameter(GLcontext * ctx, GLenum target, +static void r300TexParameter(struct gl_context * ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat * params) { @@ -243,7 +243,7 @@ static void r300TexParameter(GLcontext * ctx, GLenum target, } } -static void r300DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj) +static void r300DeleteTexture(struct gl_context * ctx, struct gl_texture_object *texObj) { r300ContextPtr rmesa = R300_CONTEXT(ctx); radeonTexObj* t = radeon_tex_obj(texObj); @@ -284,7 +284,7 @@ static void r300DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj) * allocate the default texture objects. * Fixup MaxAnisotropy according to user preference. */ -static struct gl_texture_object *r300NewTextureObject(GLcontext * ctx, +static struct gl_texture_object *r300NewTextureObject(struct gl_context * ctx, GLuint name, GLenum target) { diff --git a/src/mesa/drivers/dri/r300/r300_tex.h b/src/mesa/drivers/dri/r300/r300_tex.h index aca44cd7669..c44a39cb460 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.h +++ b/src/mesa/drivers/dri/r300/r300_tex.h @@ -47,7 +47,7 @@ extern void r300SetTexOffset(__DRIcontext *pDRICtx, GLint texname, unsigned long long offset, GLint depth, GLuint pitch); -extern GLboolean r300ValidateBuffers(GLcontext * ctx); +extern GLboolean r300ValidateBuffers(struct gl_context * ctx); extern void r300InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions); diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 94588698265..0116c5d2fa4 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -301,7 +301,7 @@ static void setup_hardware_state(r300ContextPtr rmesa, radeonTexObj *t) * * Mostly this means populating the texture object's mipmap tree. */ -static GLboolean r300_validate_texture(GLcontext * ctx, struct gl_texture_object *texObj) +static GLboolean r300_validate_texture(struct gl_context * ctx, struct gl_texture_object *texObj) { r300ContextPtr rmesa = R300_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); @@ -320,7 +320,7 @@ static GLboolean r300_validate_texture(GLcontext * ctx, struct gl_texture_object /** * Ensure all enabled and complete textures are uploaded along with any buffers being used. */ -GLboolean r300ValidateBuffers(GLcontext * ctx) +GLboolean r300ValidateBuffers(struct gl_context * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct radeon_renderbuffer *rrb; diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index a1601280911..1daa305e3c4 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -49,7 +49,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. * Write parameter array for the given vertex program into dst. * Return the total number of components written. */ -static int r300VertexProgUpdateParams(GLcontext * ctx, struct r300_vertex_program *vp, float *dst) +static int r300VertexProgUpdateParams(struct gl_context * ctx, struct r300_vertex_program *vp, float *dst) { int i; @@ -227,7 +227,7 @@ static void initialize_NV_registers(struct radeon_compiler * compiler) inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_0000; } -static struct r300_vertex_program *build_program(GLcontext *ctx, +static struct r300_vertex_program *build_program(struct gl_context *ctx, struct r300_vertex_program_key *wanted_key, const struct gl_vertex_program *mesa_vp) { @@ -307,7 +307,7 @@ static struct r300_vertex_program *build_program(GLcontext *ctx, return vp; } -struct r300_vertex_program * r300SelectAndTranslateVertexShader(GLcontext *ctx) +struct r300_vertex_program * r300SelectAndTranslateVertexShader(struct gl_context *ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct r300_vertex_program_key wanted_key = { 0 }; @@ -386,7 +386,7 @@ static void r300EmitVertexProgram(r300ContextPtr r300, int dest, struct r300_ver void r300SetupVertexProgram(r300ContextPtr rmesa) { - GLcontext *ctx = rmesa->radeon.glCtx; + struct gl_context *ctx = rmesa->radeon.glCtx; struct r300_vertex_program *prog = rmesa->selected_vp; int inst_count = 0; int param_count = 0; diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.h b/src/mesa/drivers/dri/r300/r300_vertprog.h index ccec896be40..ce24dcb3535 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.h +++ b/src/mesa/drivers/dri/r300/r300_vertprog.h @@ -6,6 +6,6 @@ void r300SetupVertexProgram(r300ContextPtr rmesa); -struct r300_vertex_program * r300SelectAndTranslateVertexShader(GLcontext *ctx); +struct r300_vertex_program * r300SelectAndTranslateVertexShader(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/r300/radeon_context.h b/src/mesa/drivers/dri/r300/radeon_context.h index e793656dbea..52b7fb91e65 100644 --- a/src/mesa/drivers/dri/r300/radeon_context.h +++ b/src/mesa/drivers/dri/r300/radeon_context.h @@ -52,7 +52,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define FALLBACK( radeon, bit, mode ) fprintf(stderr, "%s:%s\n", __LINE__, __FILE__); /* TCL fallbacks */ -extern void radeonTclFallback(GLcontext * ctx, GLuint bit, GLboolean mode); +extern void radeonTclFallback(struct gl_context * ctx, GLuint bit, GLboolean mode); #define TCL_FALLBACK( ctx, bit, mode ) ; diff --git a/src/mesa/drivers/dri/r600/evergreen_blit.c b/src/mesa/drivers/dri/r600/evergreen_blit.c index 1ed8a08b78c..fc9fa9d22c7 100644 --- a/src/mesa/drivers/dri/r600/evergreen_blit.c +++ b/src/mesa/drivers/dri/r600/evergreen_blit.c @@ -423,7 +423,7 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo } -static inline void eg_load_shaders(GLcontext * ctx) +static inline void eg_load_shaders(struct gl_context * ctx) { radeonContextPtr radeonctx = RADEON_CONTEXT(ctx); @@ -1688,7 +1688,7 @@ static GLboolean eg_validate_buffers(context_t *rmesa, return GL_TRUE; } -unsigned evergreen_blit(GLcontext *ctx, +unsigned evergreen_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r600/evergreen_blit.h b/src/mesa/drivers/dri/r600/evergreen_blit.h index 68d072ecb00..783f83f0899 100644 --- a/src/mesa/drivers/dri/r600/evergreen_blit.h +++ b/src/mesa/drivers/dri/r600/evergreen_blit.h @@ -30,7 +30,7 @@ unsigned evergreen_check_blit(gl_format mesa_format); -unsigned evergreen_blit(GLcontext *ctx, +unsigned evergreen_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r600/evergreen_chip.c b/src/mesa/drivers/dri/r600/evergreen_chip.c index 770e7f91c6a..2c9e4e2b844 100644 --- a/src/mesa/drivers/dri/r600/evergreen_chip.c +++ b/src/mesa/drivers/dri/r600/evergreen_chip.c @@ -60,7 +60,7 @@ do { \ insert_at_tail(&context->radeon.hw.atomlist, &context->evergreen_atoms.ATOM); \ } while (0) -static int check_queryobj(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_queryobj(struct gl_context *ctx, struct radeon_state_atom *atom) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = radeon->query.current; @@ -74,7 +74,7 @@ static int check_queryobj(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static void evergreenSendQueryBegin(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendQueryBegin(struct gl_context *ctx, struct radeon_state_atom *atom) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = radeon->query.current; @@ -114,12 +114,12 @@ static void evergreen_init_query_stateobj(radeonContextPtr radeon, int SZ) } -static int check_always(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_always(struct gl_context *ctx, struct radeon_state_atom *atom) { return atom->cmd_size; } -static void evergreenSendTexState(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendTexState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -221,7 +221,7 @@ static void evergreenSendTexState(GLcontext *ctx, struct radeon_state_atom *atom } } -static int check_evergreen_tx(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_evergreen_tx(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); unsigned int i, count = 0; @@ -238,7 +238,7 @@ static int check_evergreen_tx(GLcontext *ctx, struct radeon_state_atom *atom) return count * 37 + 6; } -static void evergreenSendSQConfig(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendSQConfig(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -269,7 +269,7 @@ static void evergreenSendSQConfig(GLcontext *ctx, struct radeon_state_atom *atom } extern int evergreen_getTypeSize(GLenum type); -static void evergreenSetupVTXConstants(GLcontext * ctx, +static void evergreenSetupVTXConstants(struct gl_context * ctx, void * pAos, StreamDesc * pStreamDesc) { @@ -357,7 +357,7 @@ static void evergreenSetupVTXConstants(GLcontext * ctx, COMMIT_BATCH(); } -static int check_evergreen_vtx(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_evergreen_vtx(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); int count = context->radeon.tcl.aos_count * 12; @@ -369,7 +369,7 @@ static int check_evergreen_vtx(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static void evergreenSendVTX(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendVTX(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *)(context->selected_vp); @@ -390,7 +390,7 @@ static void evergreenSendVTX(GLcontext *ctx, struct radeon_state_atom *atom) } } } -static void evergreenSendPA(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendPA(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -511,7 +511,7 @@ static void evergreenSendPA(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void evergreenSendTP(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendTP(struct gl_context *ctx, struct radeon_state_atom *atom) { /* context_t *context = EVERGREEN_CONTEXT(ctx); @@ -523,7 +523,7 @@ static void evergreenSendTP(GLcontext *ctx, struct radeon_state_atom *atom) */ } -static void evergreenSendPSresource(GLcontext *ctx) +static void evergreenSendPSresource(struct gl_context *ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -578,7 +578,7 @@ static void evergreenSendPSresource(GLcontext *ctx) COMMIT_BATCH(); } -static void evergreenSendVSresource(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendVSresource(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -634,7 +634,7 @@ static void evergreenSendVSresource(GLcontext *ctx, struct radeon_state_atom *at COMMIT_BATCH(); } -static void evergreenSendSQ(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendSQ(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -749,7 +749,7 @@ static void evergreenSendSQ(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void evergreenSendSPI(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendSPI(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -821,7 +821,7 @@ static void evergreenSendSPI(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void evergreenSendSX(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendSX(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -897,7 +897,7 @@ static void evergreenSetDepthTarget(context_t *context) } -static void evergreenSendDB(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendDB(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1366,7 +1366,7 @@ static void evergreenSetRenderTarget(context_t *context, int id) evergreen->render_target[id].enabled = GL_TRUE; } -static void evergreenSendCB(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendCB(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1451,7 +1451,7 @@ static void evergreenSendCB(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void evergreenSendVGT(GLcontext *ctx, struct radeon_state_atom *atom) +static void evergreenSendVGT(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); diff --git a/src/mesa/drivers/dri/r600/evergreen_context.c b/src/mesa/drivers/dri/r600/evergreen_context.c index fff7c200310..911775f590f 100644 --- a/src/mesa/drivers/dri/r600/evergreen_context.c +++ b/src/mesa/drivers/dri/r600/evergreen_context.c @@ -61,7 +61,7 @@ static void evergreen_vtbl_pre_emit_atoms(radeonContextPtr radeon) r700Start3D((context_t *)radeon); } -static void evergreen_fallback(GLcontext *ctx, GLuint bit, GLboolean mode) +static void evergreen_fallback(struct gl_context *ctx, GLuint bit, GLboolean mode) { context_t *context = EVERGREEN_CONTEXT(ctx); if (mode) diff --git a/src/mesa/drivers/dri/r600/evergreen_fragprog.c b/src/mesa/drivers/dri/r600/evergreen_fragprog.c index 0e7edf4fbe4..cfb923efdd5 100644 --- a/src/mesa/drivers/dri/r600/evergreen_fragprog.c +++ b/src/mesa/drivers/dri/r600/evergreen_fragprog.c @@ -44,7 +44,7 @@ #include "evergreen_vertprog.h" #include "evergreen_fragprog.h" -void evergreen_insert_wpos_code(GLcontext *ctx, struct gl_fragment_program *fprog) +void evergreen_insert_wpos_code(struct gl_context *ctx, struct gl_fragment_program *fprog) { static const gl_state_index winstate[STATE_LENGTH] = { STATE_INTERNAL, STATE_FB_SIZE, 0, 0, 0}; @@ -95,7 +95,7 @@ void evergreen_insert_wpos_code(GLcontext *ctx, struct gl_fragment_program *fpro //TODO : Validate FP input with VP output. void evergreen_Map_Fragment_Program(r700_AssemblerBase *pAsm, struct gl_fragment_program *mesa_fp, - GLcontext *ctx) + struct gl_context *ctx) { unsigned int unBit; unsigned int i; @@ -354,7 +354,7 @@ GLboolean evergreen_Find_Instruction_Dependencies_fp(struct evergreen_fragment_p GLboolean evergreenTranslateFragmentShader(struct evergreen_fragment_program *fp, struct gl_fragment_program *mesa_fp, - GLcontext *ctx) + struct gl_context *ctx) { GLuint number_of_colors_exported; GLboolean z_enabled = GL_FALSE; @@ -457,7 +457,7 @@ GLboolean evergreenTranslateFragmentShader(struct evergreen_fragment_program *fp return GL_TRUE; } -void evergreenSelectFragmentShader(GLcontext *ctx) +void evergreenSelectFragmentShader(struct gl_context *ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); struct evergreen_fragment_program *fp = (struct evergreen_fragment_program *) @@ -471,7 +471,7 @@ void evergreenSelectFragmentShader(GLcontext *ctx) evergreenTranslateFragmentShader(fp, &(fp->mesa_program), ctx); } -void * evergreenGetActiveFpShaderBo(GLcontext * ctx) +void * evergreenGetActiveFpShaderBo(struct gl_context * ctx) { struct evergreen_fragment_program *fp = (struct evergreen_fragment_program *) (ctx->FragmentProgram._Current); @@ -479,7 +479,7 @@ void * evergreenGetActiveFpShaderBo(GLcontext * ctx) return fp->shaderbo; } -void * evergreenGetActiveFpShaderConstBo(GLcontext * ctx) +void * evergreenGetActiveFpShaderConstBo(struct gl_context * ctx) { struct evergreen_fragment_program *fp = (struct evergreen_fragment_program *) (ctx->FragmentProgram._Current); @@ -487,7 +487,7 @@ void * evergreenGetActiveFpShaderConstBo(GLcontext * ctx) return fp->constbo0; } -GLboolean evergreenSetupFragmentProgram(GLcontext * ctx) +GLboolean evergreenSetupFragmentProgram(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -737,7 +737,7 @@ GLboolean evergreenSetupFragmentProgram(GLcontext * ctx) return GL_TRUE; } -GLboolean evergreenSetupFPconstants(GLcontext * ctx) +GLboolean evergreenSetupFPconstants(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); diff --git a/src/mesa/drivers/dri/r600/evergreen_fragprog.h b/src/mesa/drivers/dri/r600/evergreen_fragprog.h index 0e200bf3833..97f06a75fc0 100644 --- a/src/mesa/drivers/dri/r600/evergreen_fragprog.h +++ b/src/mesa/drivers/dri/r600/evergreen_fragprog.h @@ -51,27 +51,27 @@ struct evergreen_fragment_program }; /* Internal */ -void evergreen_insert_wpos_code(GLcontext *ctx, struct gl_fragment_program *fprog); +void evergreen_insert_wpos_code(struct gl_context *ctx, struct gl_fragment_program *fprog); void evergreen_Map_Fragment_Program(r700_AssemblerBase *pAsm, struct gl_fragment_program *mesa_fp, - GLcontext *ctx); + struct gl_context *ctx); GLboolean evergreen_Find_Instruction_Dependencies_fp(struct evergreen_fragment_program *fp, struct gl_fragment_program *mesa_fp); GLboolean evergreenTranslateFragmentShader(struct evergreen_fragment_program *fp, struct gl_fragment_program *mesa_vp, - GLcontext *ctx); + struct gl_context *ctx); /* Interface */ -extern void evergreenSelectFragmentShader(GLcontext *ctx); +extern void evergreenSelectFragmentShader(struct gl_context *ctx); -extern GLboolean evergreenSetupFragmentProgram(GLcontext * ctx); +extern GLboolean evergreenSetupFragmentProgram(struct gl_context * ctx); -extern GLboolean evergreenSetupFPconstants(GLcontext * ctx); +extern GLboolean evergreenSetupFPconstants(struct gl_context * ctx); -extern void * evergreenGetActiveFpShaderBo(GLcontext * ctx); +extern void * evergreenGetActiveFpShaderBo(struct gl_context * ctx); -extern void * evergreenGetActiveFpShaderConstBo(GLcontext * ctx); +extern void * evergreenGetActiveFpShaderConstBo(struct gl_context * ctx); #endif /*_EVERGREEN_FRAGPROG_H_*/ diff --git a/src/mesa/drivers/dri/r600/evergreen_ioctl.c b/src/mesa/drivers/dri/r600/evergreen_ioctl.c index 5c1270790df..19f8e6b3ec3 100644 --- a/src/mesa/drivers/dri/r600/evergreen_ioctl.c +++ b/src/mesa/drivers/dri/r600/evergreen_ioctl.c @@ -40,7 +40,7 @@ #include "r700_clear.h" -void evergreenClear(GLcontext * ctx, GLbitfield mask) +void evergreenClear(struct gl_context * ctx, GLbitfield mask) { r700Clear(ctx, mask); } diff --git a/src/mesa/drivers/dri/r600/evergreen_ioctl.h b/src/mesa/drivers/dri/r600/evergreen_ioctl.h index 3c663a7083a..a41b5b60333 100644 --- a/src/mesa/drivers/dri/r600/evergreen_ioctl.h +++ b/src/mesa/drivers/dri/r600/evergreen_ioctl.h @@ -30,7 +30,7 @@ #include "r600_context.h" #include "radeon_drm.h" -extern void evergreenClear(GLcontext * ctx, GLbitfield mask); +extern void evergreenClear(struct gl_context * ctx, GLbitfield mask); extern void evergreenInitIoctlFuncs(struct dd_function_table *functions); #endif /* _EVERGREEN_IOCTL_H_ */ diff --git a/src/mesa/drivers/dri/r600/evergreen_oglprog.c b/src/mesa/drivers/dri/r600/evergreen_oglprog.c index 9fe523234cc..a2a361f32e6 100644 --- a/src/mesa/drivers/dri/r600/evergreen_oglprog.c +++ b/src/mesa/drivers/dri/r600/evergreen_oglprog.c @@ -40,7 +40,7 @@ #include "evergreen_vertprog.h" -static void evergreen_freeVertProgCache(GLcontext *ctx, struct r700_vertex_program_cont *cache) +static void evergreen_freeVertProgCache(struct gl_context *ctx, struct r700_vertex_program_cont *cache) { struct evergreen_vertex_program *tmp, *vp = cache->progs; @@ -64,7 +64,7 @@ static void evergreen_freeVertProgCache(GLcontext *ctx, struct r700_vertex_progr } } -static struct gl_program *evergreenNewProgram(GLcontext * ctx, +static struct gl_program *evergreenNewProgram(struct gl_context * ctx, GLenum target, GLuint id) { @@ -109,7 +109,7 @@ static struct gl_program *evergreenNewProgram(GLcontext * ctx, return pProgram; } -static void evergreenDeleteProgram(GLcontext * ctx, struct gl_program *prog) +static void evergreenDeleteProgram(struct gl_context * ctx, struct gl_program *prog) { struct evergreen_vertex_program_cont *vpc = (struct evergreen_vertex_program_cont *)prog; struct evergreen_fragment_program * fp; @@ -147,7 +147,7 @@ static void evergreenDeleteProgram(GLcontext * ctx, struct gl_program *prog) } static GLboolean -evergreenProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) +evergreenProgramStringNotify(struct gl_context * ctx, GLenum target, struct gl_program *prog) { struct evergreen_vertex_program_cont *vpc = (struct evergreen_vertex_program_cont *)prog; struct evergreen_fragment_program * fp = (struct evergreen_fragment_program*)prog; @@ -178,7 +178,7 @@ evergreenProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program * return GL_TRUE; } -static GLboolean evergreenIsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog) +static GLboolean evergreenIsProgramNative(struct gl_context * ctx, GLenum target, struct gl_program *prog) { return GL_TRUE; diff --git a/src/mesa/drivers/dri/r600/evergreen_render.c b/src/mesa/drivers/dri/r600/evergreen_render.c index 27089bfcf75..0c0eeca1fc5 100644 --- a/src/mesa/drivers/dri/r600/evergreen_render.c +++ b/src/mesa/drivers/dri/r600/evergreen_render.c @@ -148,7 +148,7 @@ static int evergreenNumVerts(int num_verts, int prim) //same return num_verts - verts_off; } -static void evergreenRunRenderPrimitive(GLcontext * ctx, int start, int end, int prim, +static void evergreenRunRenderPrimitive(struct gl_context * ctx, int start, int end, int prim, GLint basevertex) //same { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -219,7 +219,7 @@ static void evergreenRunRenderPrimitive(GLcontext * ctx, int start, int end, int COMMIT_BATCH(); } -static void evergreenRunRenderPrimitiveImmediate(GLcontext * ctx, int start, int end, int prim) //same +static void evergreenRunRenderPrimitiveImmediate(struct gl_context * ctx, int start, int end, int prim) //same { context_t *context = EVERGREEN_CONTEXT(ctx); BATCH_LOCALS(&context->radeon); @@ -363,7 +363,7 @@ static void evergreenRunRenderPrimitiveImmediate(GLcontext * ctx, int start, int * Convert attribute data type to float * If the attribute uses named buffer object replace the bo with newly allocated bo */ -static void evergreenConvertAttrib(GLcontext *ctx, int count, +static void evergreenConvertAttrib(struct gl_context *ctx, int count, const struct gl_client_array *input, struct StreamDesc *attr) { @@ -442,7 +442,7 @@ static void evergreenConvertAttrib(GLcontext *ctx, int count, } } -static void evergreenFixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf) +static void evergreenFixupIndexBuffer(struct gl_context *ctx, const struct _mesa_index_buffer *mesa_ind_buf) { context_t *context = EVERGREEN_CONTEXT(ctx); GLvoid *src_ptr; @@ -517,7 +517,7 @@ static void evergreenFixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_b } } -static GLboolean evergreen_check_fallbacks(GLcontext *ctx) //same +static GLboolean evergreen_check_fallbacks(struct gl_context *ctx) //same { if (ctx->RenderMode != GL_RENDER) return GL_TRUE; @@ -528,7 +528,7 @@ static GLboolean evergreen_check_fallbacks(GLcontext *ctx) //same /* start 3d, idle, cb/db flush */ #define PRE_EMIT_STATE_BUFSZ 5 + 5 + 14 -static GLuint evergreenPredictRenderSize(GLcontext* ctx, +static GLuint evergreenPredictRenderSize(struct gl_context* ctx, const struct _mesa_prim *prim, const struct _mesa_index_buffer *ib, GLuint nr_prims) @@ -567,7 +567,7 @@ static GLuint evergreenPredictRenderSize(GLcontext* ctx, } -static void evergreenSetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf) +static void evergreenSetupIndexBuffer(struct gl_context *ctx, const struct _mesa_index_buffer *mesa_ind_buf) { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -620,7 +620,7 @@ static void evergreenSetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_b } } -static void evergreenAlignDataToDword(GLcontext *ctx, +static void evergreenAlignDataToDword(struct gl_context *ctx, const struct gl_client_array *input, int count, struct StreamDesc *attr) @@ -662,7 +662,7 @@ static void evergreenAlignDataToDword(GLcontext *ctx, attr->stride = dst_stride; } -static void evergreenSetupStreams(GLcontext *ctx, const struct gl_client_array *input[], int count) +static void evergreenSetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count) { context_t *context = EVERGREEN_CONTEXT(ctx); GLuint stride; @@ -763,7 +763,7 @@ static void evergreenSetupStreams(GLcontext *ctx, const struct gl_client_array * RADEON_GEM_DOMAIN_GTT, 0); } -static void evergreenFreeData(GLcontext *ctx) +static void evergreenFreeData(struct gl_context *ctx) { /* Need to zero tcl.aos[n].bo and tcl.elt_dma_bo * to prevent double unref in radeonReleaseArrays @@ -799,7 +799,7 @@ static void evergreenFreeData(GLcontext *ctx) } } -static GLboolean evergreenTryDrawPrims(GLcontext *ctx, +static GLboolean evergreenTryDrawPrims(struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -898,7 +898,7 @@ static GLboolean evergreenTryDrawPrims(GLcontext *ctx, return GL_TRUE; } -static void evergreenDrawPrims(GLcontext *ctx, +static void evergreenDrawPrims(struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -932,7 +932,7 @@ static void evergreenDrawPrims(GLcontext *ctx, } } -void evergreenInitDraw(GLcontext *ctx) +void evergreenInitDraw(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); diff --git a/src/mesa/drivers/dri/r600/evergreen_state.c b/src/mesa/drivers/dri/r600/evergreen_state.c index 69c5ab656ea..a77be183a12 100644 --- a/src/mesa/drivers/dri/r600/evergreen_state.c +++ b/src/mesa/drivers/dri/r600/evergreen_state.c @@ -53,9 +53,9 @@ #include "evergreen_fragprog.h" #include "evergreen_tex.h" -void evergreenUpdateStateParameters(GLcontext * ctx, GLuint new_state); //same +void evergreenUpdateStateParameters(struct gl_context * ctx, GLuint new_state); //same -void evergreenUpdateShaders(GLcontext * ctx) +void evergreenUpdateShaders(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -73,7 +73,7 @@ void evergreenUpdateShaders(GLcontext * ctx) context->radeon.NewGLState = 0; } -void evergreeUpdateShaders(GLcontext * ctx) +void evergreeUpdateShaders(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); @@ -94,7 +94,7 @@ void evergreeUpdateShaders(GLcontext * ctx) /* * To correctly position primitives: */ -void evergreenUpdateViewportOffset(GLcontext * ctx) //------------------ +void evergreenUpdateViewportOffset(struct gl_context * ctx) //------------------ { context_t *context = R700_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -120,7 +120,7 @@ void evergreenUpdateViewportOffset(GLcontext * ctx) //------------------ radeonUpdateScissor(ctx); } -void evergreenUpdateStateParameters(GLcontext * ctx, GLuint new_state) //same +void evergreenUpdateStateParameters(struct gl_context * ctx, GLuint new_state) //same { struct evergreen_fragment_program *fp = (struct evergreen_fragment_program *)ctx->FragmentProgram._Current; @@ -144,7 +144,7 @@ void evergreenUpdateStateParameters(GLcontext * ctx, GLuint new_state) //same /** * Called by Mesa after an internal state update. */ -static void evergreenInvalidateState(GLcontext * ctx, GLuint new_state) //same +static void evergreenInvalidateState(struct gl_context * ctx, GLuint new_state) //same { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -212,7 +212,7 @@ static void evergreenInvalidateState(GLcontext * ctx, GLuint new_state) //same context->radeon.NewGLState |= new_state; } -static void evergreenSetAlphaState(GLcontext * ctx) //same +static void evergreenSetAlphaState(struct gl_context * ctx) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -259,14 +259,14 @@ static void evergreenSetAlphaState(GLcontext * ctx) //same } } -static void evergreenAlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) //same +static void evergreenAlphaFunc(struct gl_context * ctx, GLenum func, GLfloat ref) //same { (void)func; (void)ref; evergreenSetAlphaState(ctx); } -static void evergreenBlendColor(GLcontext * ctx, const GLfloat cf[4]) //same +static void evergreenBlendColor(struct gl_context * ctx, const GLfloat cf[4]) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -334,7 +334,7 @@ static int evergreenblend_factor(GLenum factor, GLboolean is_src) //same } } -static void evergreenSetBlendState(GLcontext * ctx) //diff : CB_COLOR_CONTROL, CB_BLEND0_CONTROL bits +static void evergreenSetBlendState(struct gl_context * ctx) //diff : CB_COLOR_CONTROL, CB_BLEND0_CONTROL bits { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -459,13 +459,13 @@ static void evergreenSetBlendState(GLcontext * ctx) //diff : CB_COLOR_CONTROL, C evergreen->CB_BLEND0_CONTROL.u32All = blend_reg; } -static void evergreenBlendEquationSeparate(GLcontext * ctx, +static void evergreenBlendEquationSeparate(struct gl_context * ctx, GLenum modeRGB, GLenum modeA) //same { evergreenSetBlendState(ctx); } -static void evergreenBlendFuncSeparate(GLcontext * ctx, +static void evergreenBlendFuncSeparate(struct gl_context * ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA) //same { @@ -513,7 +513,7 @@ static GLuint evergreen_translate_logicop(GLenum logicop) //same } } -static void evergreenSetLogicOpState(GLcontext *ctx) //diff : CB_COLOR_CONTROL.ROP3 is actually same bits. +static void evergreenSetLogicOpState(struct gl_context *ctx) //diff : CB_COLOR_CONTROL.ROP3 is actually same bits. { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -531,7 +531,7 @@ static void evergreenSetLogicOpState(GLcontext *ctx) //diff : CB_COLOR_CONTROL.R EG_CB_COLOR_CONTROL__ROP3_mask); } -static void evergreenClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) //same , but PA_CL_UCP_0_ offset diff +static void evergreenClipPlane( struct gl_context *ctx, GLenum plane, const GLfloat *eq ) //same , but PA_CL_UCP_0_ offset diff { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -549,7 +549,7 @@ static void evergreenClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq evergreen->ucp[p].PA_CL_UCP_0_W.u32All = ip[3]; } -static void evergreenSetClipPlaneState(GLcontext * ctx, GLenum cap, GLboolean state) //diff in func calls +static void evergreenSetClipPlaneState(struct gl_context * ctx, GLenum cap, GLboolean state) //diff in func calls { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -569,7 +569,7 @@ static void evergreenSetClipPlaneState(GLcontext * ctx, GLenum cap, GLboolean st } } -static void evergreenSetDBRenderState(GLcontext * ctx) +static void evergreenSetDBRenderState(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -629,13 +629,13 @@ static void evergreenSetDBRenderState(GLcontext * ctx) } } -void evergreenUpdateShaderStates(GLcontext * ctx) +void evergreenUpdateShaderStates(struct gl_context * ctx) { evergreenSetDBRenderState(ctx); evergreenUpdateTextureState(ctx); } -static void evergreenSetDepthState(GLcontext * ctx) //same +static void evergreenSetDepthState(struct gl_context * ctx) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -701,7 +701,7 @@ static void evergreenSetDepthState(GLcontext * ctx) //same } } -static void evergreenSetStencilState(GLcontext * ctx, GLboolean state) //same +static void evergreenSetStencilState(struct gl_context * ctx, GLboolean state) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -724,7 +724,7 @@ static void evergreenSetStencilState(GLcontext * ctx, GLboolean state) //same } } -static void evergreenUpdateCulling(GLcontext * ctx) //same +static void evergreenUpdateCulling(struct gl_context * ctx) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -776,7 +776,7 @@ static void evergreenUpdateCulling(GLcontext * ctx) //same evergreen->PA_SU_SC_MODE_CNTL.u32All ^= FACE_bit; } -static void evergreenSetPolygonOffsetState(GLcontext * ctx, GLboolean state) //same +static void evergreenSetPolygonOffsetState(struct gl_context * ctx, GLboolean state) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -794,7 +794,7 @@ static void evergreenSetPolygonOffsetState(GLcontext * ctx, GLboolean state) //s } } -static void evergreenUpdateLineStipple(GLcontext * ctx) //diff +static void evergreenUpdateLineStipple(struct gl_context * ctx) //diff { /* TODO */ } @@ -913,7 +913,7 @@ void evergreenSetScissor(context_t *context) //diff evergreen->viewport[id].enabled = GL_TRUE; } -static void evergreenUpdateWindow(GLcontext * ctx, int id) //diff in calling evergreenSetScissor +static void evergreenUpdateWindow(struct gl_context * ctx, int id) //diff in calling evergreenSetScissor { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -969,7 +969,7 @@ static void evergreenUpdateWindow(GLcontext * ctx, int id) //diff in calling eve evergreenSetScissor(context); } -static void evergreenEnable(GLcontext * ctx, GLenum cap, GLboolean state) //diff in func calls +static void evergreenEnable(struct gl_context * ctx, GLenum cap, GLboolean state) //diff in func calls { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -1030,7 +1030,7 @@ static void evergreenEnable(GLcontext * ctx, GLenum cap, GLboolean state) //diff } -static void evergreenColorMask(GLcontext * ctx, +static void evergreenColorMask(struct gl_context * ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a) //same { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -1046,26 +1046,26 @@ static void evergreenColorMask(GLcontext * ctx, } } -static void evergreenDepthFunc(GLcontext * ctx, GLenum func) //same +static void evergreenDepthFunc(struct gl_context * ctx, GLenum func) //same { evergreenSetDepthState(ctx); } -static void evergreenDepthMask(GLcontext * ctx, GLboolean mask) //same +static void evergreenDepthMask(struct gl_context * ctx, GLboolean mask) //same { evergreenSetDepthState(ctx); } -static void evergreenCullFace(GLcontext * ctx, GLenum mode) //same +static void evergreenCullFace(struct gl_context * ctx, GLenum mode) //same { evergreenUpdateCulling(ctx); } -static void evergreenFogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) //same +static void evergreenFogfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) //same { } -static void evergreenUpdatePolygonMode(GLcontext * ctx) //same +static void evergreenUpdatePolygonMode(struct gl_context * ctx) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1120,13 +1120,13 @@ static void evergreenUpdatePolygonMode(GLcontext * ctx) //same } } -static void evergreenFrontFace(GLcontext * ctx, GLenum mode) //same +static void evergreenFrontFace(struct gl_context * ctx, GLenum mode) //same { evergreenUpdateCulling(ctx); evergreenUpdatePolygonMode(ctx); } -static void evergreenShadeModel(GLcontext * ctx, GLenum mode) //same +static void evergreenShadeModel(struct gl_context * ctx, GLenum mode) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1146,13 +1146,13 @@ static void evergreenShadeModel(GLcontext * ctx, GLenum mode) //same } } -static void evergreenLogicOpcode(GLcontext *ctx, GLenum logicop) //diff +static void evergreenLogicOpcode(struct gl_context *ctx, GLenum logicop) //diff { if (RGBA_LOGICOP_ENABLED(ctx)) evergreenSetLogicOpState(ctx); } -static void evergreenPointSize(GLcontext * ctx, GLfloat size) //same +static void evergreenPointSize(struct gl_context * ctx, GLfloat size) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1174,7 +1174,7 @@ static void evergreenPointSize(GLcontext * ctx, GLfloat size) //same } -static void evergreenPointParameter(GLcontext * ctx, GLenum pname, const GLfloat * param) //same +static void evergreenPointParameter(struct gl_context * ctx, GLenum pname, const GLfloat * param) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1225,7 +1225,7 @@ static int evergreen_translate_stencil_func(int func) //same return 0; } -static void evergreenStencilFuncSeparate(GLcontext * ctx, GLenum face, +static void evergreenStencilFuncSeparate(struct gl_context * ctx, GLenum face, GLenum func, GLint ref, GLuint mask) //same { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -1254,7 +1254,7 @@ static void evergreenStencilFuncSeparate(GLcontext * ctx, GLenum face, STENCILFUNC_BF_shift, STENCILFUNC_BF_mask); } -static void evergreenStencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) //same +static void evergreenStencilMaskSeparate(struct gl_context * ctx, GLenum face, GLuint mask) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1298,7 +1298,7 @@ static int evergreen_translate_stencil_op(int op) //same return 0; } -static void evergreenStencilOpSeparate(GLcontext * ctx, GLenum face, +static void evergreenStencilOpSeparate(struct gl_context * ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) //same { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -1322,7 +1322,7 @@ static void evergreenStencilOpSeparate(GLcontext * ctx, GLenum face, STENCILZPASS_BF_shift, STENCILZPASS_BF_mask); } -static void evergreenViewport(GLcontext * ctx, +static void evergreenViewport(struct gl_context * ctx, GLint x, GLint y, GLsizei width, @@ -1333,12 +1333,12 @@ static void evergreenViewport(GLcontext * ctx, radeon_viewport(ctx, x, y, width, height); } -static void evergreenDepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) //diff in evergreenUpdateWindow +static void evergreenDepthRange(struct gl_context * ctx, GLclampd nearval, GLclampd farval) //diff in evergreenUpdateWindow { evergreenUpdateWindow(ctx, 0); } -static void evergreenLineWidth(GLcontext * ctx, GLfloat widthf) //same +static void evergreenLineWidth(struct gl_context * ctx, GLfloat widthf) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1352,7 +1352,7 @@ static void evergreenLineWidth(GLcontext * ctx, GLfloat widthf) //same PA_SU_LINE_CNTL__WIDTH_shift, PA_SU_LINE_CNTL__WIDTH_mask); } -static void evergreenLineStipple(GLcontext *ctx, GLint factor, GLushort pattern) //same +static void evergreenLineStipple(struct gl_context *ctx, GLint factor, GLushort pattern) //same { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1364,7 +1364,7 @@ static void evergreenLineStipple(GLcontext *ctx, GLint factor, GLushort pattern) SETfield(evergreen->PA_SC_LINE_STIPPLE.u32All, 1, AUTO_RESET_CNTL_shift, AUTO_RESET_CNTL_mask); } -static void evergreenPolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) //diff : +static void evergreenPolygonOffset(struct gl_context * ctx, GLfloat factor, GLfloat units) //diff : //all register here offset diff, bits same { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -1395,7 +1395,7 @@ static void evergreenPolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat unit evergreen->PA_SU_POLY_OFFSET_BACK_OFFSET.f32All = constant; } -static void evergreenPolygonMode(GLcontext * ctx, GLenum face, GLenum mode) //same +static void evergreenPolygonMode(struct gl_context * ctx, GLenum face, GLenum mode) //same { (void)face; (void)mode; @@ -1403,12 +1403,12 @@ static void evergreenPolygonMode(GLcontext * ctx, GLenum face, GLenum mode) //sa evergreenUpdatePolygonMode(ctx); } -static void evergreenRenderMode(GLcontext * ctx, GLenum mode) //same +static void evergreenRenderMode(struct gl_context * ctx, GLenum mode) //same { } //TODO : move to kernel. -static void evergreenInitSQConfig(GLcontext * ctx) +static void evergreenInitSQConfig(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -1608,7 +1608,7 @@ static void evergreenInitSQConfig(GLcontext * ctx) NUM_CLIP_SEQ_mask); } -void evergreenInitState(GLcontext * ctx) //diff +void evergreenInitState(struct gl_context * ctx) //diff { context_t *context = R700_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); diff --git a/src/mesa/drivers/dri/r600/evergreen_state.h b/src/mesa/drivers/dri/r600/evergreen_state.h index ffdb56b38ae..2f350e90faa 100644 --- a/src/mesa/drivers/dri/r600/evergreen_state.h +++ b/src/mesa/drivers/dri/r600/evergreen_state.h @@ -31,15 +31,15 @@ #include "r600_context.h" -extern void evergreenUpdateStateParameters(GLcontext * ctx, GLuint new_state); -extern void evergreenUpdateShaders(GLcontext * ctx); -extern void evergreenUpdateShaderStates(GLcontext * ctx); +extern void evergreenUpdateStateParameters(struct gl_context * ctx, GLuint new_state); +extern void evergreenUpdateShaders(struct gl_context * ctx); +extern void evergreenUpdateShaderStates(struct gl_context * ctx); -extern void evergreeUpdateShaders(GLcontext * ctx); +extern void evergreeUpdateShaders(struct gl_context * ctx); -extern void evergreenUpdateViewportOffset(GLcontext * ctx); +extern void evergreenUpdateViewportOffset(struct gl_context * ctx); -extern void evergreenInitState(GLcontext * ctx); +extern void evergreenInitState(struct gl_context * ctx); extern void evergreenInitStateFuncs (radeonContextPtr radeon, struct dd_function_table *functions); extern void evergreenSetScissor(context_t *context); diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.c b/src/mesa/drivers/dri/r600/evergreen_tex.c index 8b42045ebb6..58420ed1239 100644 --- a/src/mesa/drivers/dri/r600/evergreen_tex.c +++ b/src/mesa/drivers/dri/r600/evergreen_tex.c @@ -934,7 +934,7 @@ EG_S_FIXED(float value, uint32_t frac_bits) return value * (1 << frac_bits); } -static GLboolean evergreen_setup_hardware_state(GLcontext * ctx, struct gl_texture_object *texObj, int unit) +static GLboolean evergreen_setup_hardware_state(struct gl_context * ctx, struct gl_texture_object *texObj, int unit) { context_t *context = EVERGREEN_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); @@ -1289,7 +1289,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur return; } -void evergreenUpdateTextureState(GLcontext * ctx) +void evergreenUpdateTextureState(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT * evergreen = GET_EVERGREEN_CHIP(context); @@ -1311,7 +1311,7 @@ void evergreenUpdateTextureState(GLcontext * ctx) } } -static GLboolean evergreen_validate_texture(GLcontext * ctx, struct gl_texture_object *texObj, int unit) +static GLboolean evergreen_validate_texture(struct gl_context * ctx, struct gl_texture_object *texObj, int unit) { radeonTexObj *t = radeon_tex_obj(texObj); @@ -1327,7 +1327,7 @@ static GLboolean evergreen_validate_texture(GLcontext * ctx, struct gl_texture_o return GL_TRUE; } -GLboolean evergreenValidateBuffers(GLcontext * ctx) +GLboolean evergreenValidateBuffers(struct gl_context * ctx) { context_t *rmesa = EVERGREEN_CONTEXT(ctx); struct radeon_renderbuffer *rrb; @@ -1403,7 +1403,7 @@ GLboolean evergreenValidateBuffers(GLcontext * ctx) return GL_TRUE; } -static struct gl_texture_object *evergreenNewTextureObject(GLcontext * ctx, +static struct gl_texture_object *evergreenNewTextureObject(struct gl_context * ctx, GLuint name, GLenum target) { @@ -1426,7 +1426,7 @@ static struct gl_texture_object *evergreenNewTextureObject(GLcontext * ctx, return &t->base; } -static void evergreenDeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj) +static void evergreenDeleteTexture(struct gl_context * ctx, struct gl_texture_object *texObj) { context_t * rmesa = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT * evergreen = GET_EVERGREEN_CHIP(rmesa); @@ -1456,7 +1456,7 @@ static void evergreenDeleteTexture(GLcontext * ctx, struct gl_texture_object *te _mesa_delete_texture_object(ctx, texObj); } -static void evergreenTexParameter(GLcontext * ctx, GLenum target, +static void evergreenTexParameter(struct gl_context * ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat * params) { diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.h b/src/mesa/drivers/dri/r600/evergreen_tex.h index b43508a9eab..982a087f8ed 100644 --- a/src/mesa/drivers/dri/r600/evergreen_tex.h +++ b/src/mesa/drivers/dri/r600/evergreen_tex.h @@ -27,9 +27,9 @@ #ifndef _EVERGREEN_TEX_H_ #define _EVERGREEN_TEX_H_ -extern GLboolean evergreenValidateBuffers(GLcontext * ctx); +extern GLboolean evergreenValidateBuffers(struct gl_context * ctx); -extern void evergreenUpdateTextureState(GLcontext * ctx); +extern void evergreenUpdateTextureState(struct gl_context * ctx); extern void evergreenInitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions); extern void evergreenSetTexOffset(__DRIcontext * pDRICtx, GLint texname, unsigned long long offset, GLint depth, GLuint pitch); diff --git a/src/mesa/drivers/dri/r600/evergreen_vertprog.c b/src/mesa/drivers/dri/r600/evergreen_vertprog.c index 0099cef527a..b3371f20b19 100644 --- a/src/mesa/drivers/dri/r600/evergreen_vertprog.c +++ b/src/mesa/drivers/dri/r600/evergreen_vertprog.c @@ -169,7 +169,7 @@ GLboolean evergreen_Process_Vertex_Program_Vfetch_Instructions( } GLboolean evergreen_Process_Vertex_Program_Vfetch_Instructions2( - GLcontext *ctx, + struct gl_context *ctx, struct evergreen_vertex_program *vp, struct gl_vertex_program *mesa_vp) { @@ -196,7 +196,7 @@ GLboolean evergreen_Process_Vertex_Program_Vfetch_Instructions2( return GL_TRUE; } -void evergreen_Map_Vertex_Program(GLcontext *ctx, +void evergreen_Map_Vertex_Program(struct gl_context *ctx, struct evergreen_vertex_program *vp, struct gl_vertex_program *mesa_vp) { @@ -292,7 +292,7 @@ GLboolean evergreen_Find_Instruction_Dependencies_vp(struct evergreen_vertex_pro return GL_TRUE; } -struct evergreen_vertex_program* evergreenTranslateVertexShader(GLcontext *ctx, +struct evergreen_vertex_program* evergreenTranslateVertexShader(struct gl_context *ctx, struct gl_vertex_program *mesa_vp) { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -374,7 +374,7 @@ struct evergreen_vertex_program* evergreenTranslateVertexShader(GLcontext *ctx, return vp; } -void evergreenSelectVertexShader(GLcontext *ctx) +void evergreenSelectVertexShader(struct gl_context *ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); struct evergreen_vertex_program_cont *vpc; @@ -448,7 +448,7 @@ int evergreen_getTypeSize(GLenum type) } } -static void evergreenTranslateAttrib(GLcontext *ctx, GLuint unLoc, int count, const struct gl_client_array *input) +static void evergreenTranslateAttrib(struct gl_context *ctx, GLuint unLoc, int count, const struct gl_client_array *input) { context_t *context = EVERGREEN_CONTEXT(ctx); @@ -534,7 +534,7 @@ static void evergreenTranslateAttrib(GLcontext *ctx, GLuint unLoc, int count, co context->nNumActiveAos++; } -void evergreenSetVertexFormat(GLcontext *ctx, const struct gl_client_array *arrays[], int count) +void evergreenSetVertexFormat(struct gl_context *ctx, const struct gl_client_array *arrays[], int count) { context_t *context = EVERGREEN_CONTEXT(ctx); struct evergreen_vertex_program *vpc @@ -563,7 +563,7 @@ void evergreenSetVertexFormat(GLcontext *ctx, const struct gl_client_array *arra context->radeon.tcl.aos_count = context->nNumActiveAos; } -void * evergreenGetActiveVpShaderBo(GLcontext * ctx) +void * evergreenGetActiveVpShaderBo(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); struct evergreen_vertex_program *vp = context->selected_vp;; @@ -574,7 +574,7 @@ void * evergreenGetActiveVpShaderBo(GLcontext * ctx) return NULL; } -void * evergreenGetActiveVpShaderConstBo(GLcontext * ctx) +void * evergreenGetActiveVpShaderConstBo(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); struct evergreen_vertex_program *vp = context->selected_vp;; @@ -585,7 +585,7 @@ void * evergreenGetActiveVpShaderConstBo(GLcontext * ctx) return NULL; } -GLboolean evergreenSetupVertexProgram(GLcontext * ctx) +GLboolean evergreenSetupVertexProgram(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); @@ -646,7 +646,7 @@ GLboolean evergreenSetupVertexProgram(GLcontext * ctx) return GL_TRUE; } -GLboolean evergreenSetupVPconstants(GLcontext * ctx) +GLboolean evergreenSetupVPconstants(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); diff --git a/src/mesa/drivers/dri/r600/evergreen_vertprog.h b/src/mesa/drivers/dri/r600/evergreen_vertprog.h index 58539021152..8163e369277 100644 --- a/src/mesa/drivers/dri/r600/evergreen_vertprog.h +++ b/src/mesa/drivers/dri/r600/evergreen_vertprog.h @@ -80,29 +80,29 @@ GLboolean evergreen_Process_Vertex_Program_Vfetch_Instructions( struct evergreen_vertex_program *vp, struct gl_vertex_program *mesa_vp); GLboolean evergreen_Process_Vertex_Program_Vfetch_Instructions2( - GLcontext *ctx, + struct gl_context *ctx, struct evergreen_vertex_program *vp, struct gl_vertex_program *mesa_vp); -void evergreen_Map_Vertex_Program(GLcontext *ctx, +void evergreen_Map_Vertex_Program(struct gl_context *ctx, struct evergreen_vertex_program *vp, struct gl_vertex_program *mesa_vp); GLboolean evergreen_Find_Instruction_Dependencies_vp(struct evergreen_vertex_program *vp, struct gl_vertex_program *mesa_vp); -struct evergreen_vertex_program* evergreenTranslateVertexShader(GLcontext *ctx, +struct evergreen_vertex_program* evergreenTranslateVertexShader(struct gl_context *ctx, struct gl_vertex_program *mesa_vp); /* Interface */ -extern void evergreenSelectVertexShader(GLcontext *ctx); -extern void evergreenSetVertexFormat(GLcontext *ctx, const struct gl_client_array *arrays[], int count); +extern void evergreenSelectVertexShader(struct gl_context *ctx); +extern void evergreenSetVertexFormat(struct gl_context *ctx, const struct gl_client_array *arrays[], int count); -extern GLboolean evergreenSetupVertexProgram(GLcontext * ctx); +extern GLboolean evergreenSetupVertexProgram(struct gl_context * ctx); -extern GLboolean evergreenSetupVPconstants(GLcontext * ctx); +extern GLboolean evergreenSetupVPconstants(struct gl_context * ctx); -extern void * evergreenGetActiveVpShaderBo(GLcontext * ctx); +extern void * evergreenGetActiveVpShaderBo(struct gl_context * ctx); -extern void * evergreenGetActiveVpShaderConstBo(GLcontext * ctx); +extern void * evergreenGetActiveVpShaderConstBo(struct gl_context * ctx); extern int evergreen_getTypeSize(GLenum type); diff --git a/src/mesa/drivers/dri/r600/r600_blit.c b/src/mesa/drivers/dri/r600/r600_blit.c index 3090c9f613b..31c32d62f9a 100644 --- a/src/mesa/drivers/dri/r600/r600_blit.c +++ b/src/mesa/drivers/dri/r600/r600_blit.c @@ -408,7 +408,7 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma } -static inline void load_shaders(GLcontext * ctx) +static inline void load_shaders(struct gl_context * ctx) { radeonContextPtr radeonctx = RADEON_CONTEXT(ctx); @@ -1566,7 +1566,7 @@ static GLboolean validate_buffers(context_t *rmesa, return GL_TRUE; } -unsigned r600_blit(GLcontext *ctx, +unsigned r600_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r600/r600_blit.h b/src/mesa/drivers/dri/r600/r600_blit.h index d56b21ba9b5..9dc8e2fec64 100644 --- a/src/mesa/drivers/dri/r600/r600_blit.h +++ b/src/mesa/drivers/dri/r600/r600_blit.h @@ -30,7 +30,7 @@ unsigned r600_check_blit(gl_format mesa_format); -unsigned r600_blit(GLcontext *ctx, +unsigned r600_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index 103f33d39e3..c882a9cce9e 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -208,7 +208,7 @@ static void r600_vtbl_pre_emit_atoms(radeonContextPtr radeon) r700Start3D((context_t *)radeon); } -static void r600_fallback(GLcontext *ctx, GLuint bit, GLboolean mode) +static void r600_fallback(struct gl_context *ctx, GLuint bit, GLboolean mode) { context_t *context = R700_CONTEXT(ctx); if (mode) @@ -249,7 +249,7 @@ static void r600_init_vtbl(radeonContextPtr radeon) radeon->vtbl.is_format_renderable = r600IsFormatRenderable; } -static void r600InitConstValues(GLcontext *ctx, radeonScreenPtr screen) +static void r600InitConstValues(struct gl_context *ctx, radeonScreenPtr screen) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -335,7 +335,7 @@ static void r600ParseOptions(context_t *r600, radeonScreenPtr screen) } -static void r600InitGLExtensions(GLcontext *ctx) +static void r600InitGLExtensions(struct gl_context *ctx) { context_t *r600 = R700_CONTEXT(ctx); #ifdef R600_ENABLE_GLSL_TEST @@ -388,7 +388,7 @@ GLboolean r600CreateContext(gl_api api, radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private); struct dd_function_table functions; context_t *r600; - GLcontext *ctx; + struct gl_context *ctx; assert(glVisual); assert(driContextPriv); diff --git a/src/mesa/drivers/dri/r600/r600_context.h b/src/mesa/drivers/dri/r600/r600_context.h index 1954d3429a7..d3dc901acf8 100644 --- a/src/mesa/drivers/dri/r600/r600_context.h +++ b/src/mesa/drivers/dri/r600/r600_context.h @@ -188,7 +188,7 @@ struct r600_context { #define EVERGREEN_CONTEXT(ctx) ((context_t *)(ctx->DriverCtx)) #define R700_CONTEXT(ctx) ((context_t *)(ctx->DriverCtx)) -#define GL_CONTEXT(context) ((GLcontext *)(context->radeon.glCtx)) +#define GL_CONTEXT(context) ((struct gl_context *)(context->radeon.glCtx)) #define GET_EVERGREEN_CHIP(context) ((EVERGREEN_CHIP_CONTEXT*)(context->pChip)) @@ -232,10 +232,10 @@ extern void r700WaitForIdleClean(context_t *context); extern void r700Start3D(context_t *context); extern void r600InitAtoms(context_t *context); -extern void r700InitDraw(GLcontext *ctx); +extern void r700InitDraw(struct gl_context *ctx); extern void evergreenInitAtoms(context_t *context); -extern void evergreenInitDraw(GLcontext *ctx); +extern void evergreenInitDraw(struct gl_context *ctx); #define RADEON_D_CAPTURE 0 #define RADEON_D_PLAYBACK 1 diff --git a/src/mesa/drivers/dri/r600/r600_emit.c b/src/mesa/drivers/dri/r600/r600_emit.c index a840106c144..53ece9a3505 100644 --- a/src/mesa/drivers/dri/r600/r600_emit.c +++ b/src/mesa/drivers/dri/r600/r600_emit.c @@ -49,7 +49,7 @@ void r600EmitCacheFlush(context_t *rmesa) { } -GLboolean r600AllocShaderConsts(GLcontext * ctx, +GLboolean r600AllocShaderConsts(struct gl_context * ctx, void ** constbo, int sizeinBYTE, char * szShaderUsage) @@ -93,7 +93,7 @@ shader_again_alloc: return GL_TRUE; } -GLboolean r600EmitShaderConsts(GLcontext * ctx, +GLboolean r600EmitShaderConsts(struct gl_context * ctx, void * constbo, int bo_offset, GLvoid * data, @@ -114,7 +114,7 @@ GLboolean r600EmitShaderConsts(GLcontext * ctx, return GL_TRUE; } -GLboolean r600EmitShader(GLcontext * ctx, +GLboolean r600EmitShader(struct gl_context * ctx, void ** shaderbo, GLvoid * data, int sizeinDWORD, @@ -163,7 +163,7 @@ shader_again_alloc: return GL_TRUE; } -GLboolean r600DeleteShader(GLcontext * ctx, +GLboolean r600DeleteShader(struct gl_context * ctx, void * shaderbo) { struct radeon_bo * pbo = (struct radeon_bo *)shaderbo; diff --git a/src/mesa/drivers/dri/r600/r600_emit.h b/src/mesa/drivers/dri/r600/r600_emit.h index 259561539fa..c50b6060ca9 100644 --- a/src/mesa/drivers/dri/r600/r600_emit.h +++ b/src/mesa/drivers/dri/r600/r600_emit.h @@ -43,20 +43,20 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. void r600EmitCacheFlush(context_t *rmesa); -extern GLboolean r600EmitShader(GLcontext * ctx, +extern GLboolean r600EmitShader(struct gl_context * ctx, void ** shaderbo, GLvoid * data, int sizeinDWORD, char * szShaderUsage); -extern GLboolean r600DeleteShader(GLcontext * ctx, +extern GLboolean r600DeleteShader(struct gl_context * ctx, void * shaderbo); -extern GLboolean r600AllocShaderConsts(GLcontext * ctx, +extern GLboolean r600AllocShaderConsts(struct gl_context * ctx, void ** constbo, int sizeinBYTE, char * szShaderUsage); -GLboolean r600EmitShaderConsts(GLcontext * ctx, +GLboolean r600EmitShaderConsts(struct gl_context * ctx, void * constbo, int bo_offset, GLvoid * data, diff --git a/src/mesa/drivers/dri/r600/r600_tex.c b/src/mesa/drivers/dri/r600/r600_tex.c index 512a52ede3e..d6a58f410cc 100644 --- a/src/mesa/drivers/dri/r600/r600_tex.c +++ b/src/mesa/drivers/dri/r600/r600_tex.c @@ -276,7 +276,7 @@ static void r600SetTexBorderColor(radeonTexObjPtr t, const GLfloat color[4]) * next UpdateTextureState */ -static void r600TexParameter(GLcontext * ctx, GLenum target, +static void r600TexParameter(struct gl_context * ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat * params) { @@ -332,7 +332,7 @@ static void r600TexParameter(GLcontext * ctx, GLenum target, } } -static void r600DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj) +static void r600DeleteTexture(struct gl_context * ctx, struct gl_texture_object *texObj) { context_t* rmesa = R700_CONTEXT(ctx); radeonTexObj* t = radeon_tex_obj(texObj); @@ -368,7 +368,7 @@ static void r600DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj) * allocate the default texture objects. * Fixup MaxAnisotropy according to user preference. */ -static struct gl_texture_object *r600NewTextureObject(GLcontext * ctx, +static struct gl_texture_object *r600NewTextureObject(struct gl_context * ctx, GLuint name, GLenum target) { diff --git a/src/mesa/drivers/dri/r600/r600_tex.h b/src/mesa/drivers/dri/r600/r600_tex.h index 771affdfa60..256588429e8 100644 --- a/src/mesa/drivers/dri/r600/r600_tex.h +++ b/src/mesa/drivers/dri/r600/r600_tex.h @@ -56,7 +56,7 @@ extern void r600SetTexOffset(__DRIcontext *pDRICtx, GLint texname, unsigned long long offset, GLint depth, GLuint pitch); -extern GLboolean r600ValidateBuffers(GLcontext * ctx); +extern GLboolean r600ValidateBuffers(struct gl_context * ctx); extern void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions); diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c index fd928cfe5d2..3869768bf0e 100644 --- a/src/mesa/drivers/dri/r600/r600_texstate.c +++ b/src/mesa/drivers/dri/r600/r600_texstate.c @@ -52,9 +52,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "evergreen_tex.h" -void r600UpdateTextureState(GLcontext * ctx); +void r600UpdateTextureState(struct gl_context * ctx); -void r600UpdateTextureState(GLcontext * ctx) +void r600UpdateTextureState(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -707,7 +707,7 @@ void r600SetDepthTexMode(struct gl_texture_object *tObj) * \param rmesa Context pointer * \param t the r300 texture object */ -static GLboolean setup_hardware_state(GLcontext * ctx, struct gl_texture_object *texObj, int unit) +static GLboolean setup_hardware_state(struct gl_context * ctx, struct gl_texture_object *texObj, int unit) { context_t *rmesa = R700_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); @@ -803,7 +803,7 @@ static GLboolean setup_hardware_state(GLcontext * ctx, struct gl_texture_object * * Mostly this means populating the texture object's mipmap tree. */ -static GLboolean r600_validate_texture(GLcontext * ctx, struct gl_texture_object *texObj, int unit) +static GLboolean r600_validate_texture(struct gl_context * ctx, struct gl_texture_object *texObj, int unit) { radeonTexObj *t = radeon_tex_obj(texObj); @@ -822,7 +822,7 @@ static GLboolean r600_validate_texture(GLcontext * ctx, struct gl_texture_object /** * Ensure all enabled and complete textures are uploaded along with any buffers being used. */ -GLboolean r600ValidateBuffers(GLcontext * ctx) +GLboolean r600ValidateBuffers(struct gl_context * ctx) { context_t *rmesa = R700_CONTEXT(ctx); struct radeon_renderbuffer *rrb; diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c index 3bb194eb6d6..4ec2845ab44 100644 --- a/src/mesa/drivers/dri/r600/r700_chip.c +++ b/src/mesa/drivers/dri/r600/r700_chip.c @@ -39,7 +39,7 @@ #include "radeon_mipmap_tree.h" -static void r700SendTexState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendTexState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -104,7 +104,7 @@ static void r700SendTexState(GLcontext *ctx, struct radeon_state_atom *atom) #define SAMPLER_STRIDE 3 -static void r700SendTexSamplerState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendTexSamplerState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -141,7 +141,7 @@ static void r700SendTexSamplerState(GLcontext *ctx, struct radeon_state_atom *at } } -static void r700SendTexBorderColorState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendTexBorderColorState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -167,7 +167,7 @@ static void r700SendTexBorderColorState(GLcontext *ctx, struct radeon_state_atom } extern int getTypeSize(GLenum type); -static void r700SetupVTXConstants(GLcontext * ctx, +static void r700SetupVTXConstants(struct gl_context * ctx, void * pAos, StreamDesc * pStreamDesc) { @@ -243,7 +243,7 @@ static void r700SetupVTXConstants(GLcontext * ctx, } -static void r700SendVTXState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendVTXState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); struct r700_vertex_program *vp = context->selected_vp; @@ -599,7 +599,7 @@ static void r700SetDepthTarget(context_t *context) /* r700->DB_PREFETCH_LIMIT.bits.DEPTH_HEIGHT_TILE_MAX = (context->currentDraw->h >> 3) - 1; */ /* z buffer sie may much bigger than what need, so use actual used h. */ } -static void r700SendDepthTargetState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendDepthTargetState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -646,7 +646,7 @@ static void r700SendDepthTargetState(GLcontext *ctx, struct radeon_state_atom *a } -static void r700SendRenderTargetState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendRenderTargetState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -724,7 +724,7 @@ static void r700SendRenderTargetState(GLcontext *ctx, struct radeon_state_atom * } -static void r700SendPSState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendPSState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -766,7 +766,7 @@ static void r700SendPSState(GLcontext *ctx, struct radeon_state_atom *atom) } -static void r700SendVSState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendVSState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -827,7 +827,7 @@ static void r700SendVSState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendFSState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendFSState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -869,7 +869,7 @@ static void r700SendFSState(GLcontext *ctx, struct radeon_state_atom *atom) } -static void r700SendViewportState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendViewportState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -903,7 +903,7 @@ static void r700SendViewportState(GLcontext *ctx, struct radeon_state_atom *atom } -static void r700SendSQConfig(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendSQConfig(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -940,7 +940,7 @@ static void r700SendSQConfig(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendUCPState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendUCPState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -962,7 +962,7 @@ static void r700SendUCPState(GLcontext *ctx, struct radeon_state_atom *atom) } } -static void r700SendSPIState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendSPIState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1037,7 +1037,7 @@ static void r700SendSPIState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendVGTState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendVGTState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1083,7 +1083,7 @@ static void r700SendVGTState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendSXState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendSXState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1098,7 +1098,7 @@ static void r700SendSXState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendDBState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendDBState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1124,7 +1124,7 @@ static void r700SendDBState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendStencilState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendStencilState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1138,7 +1138,7 @@ static void r700SendStencilState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendCBState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendCBState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1168,7 +1168,7 @@ static void r700SendCBState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendCBCLRCMPState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendCBCLRCMPState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1184,7 +1184,7 @@ static void r700SendCBCLRCMPState(GLcontext *ctx, struct radeon_state_atom *atom COMMIT_BATCH(); } -static void r700SendCBBlendState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendCBBlendState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1216,7 +1216,7 @@ static void r700SendCBBlendState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendCBBlendColorState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendCBBlendColorState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1233,7 +1233,7 @@ static void r700SendCBBlendColorState(GLcontext *ctx, struct radeon_state_atom * COMMIT_BATCH(); } -static void r700SendSUState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendSUState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1251,7 +1251,7 @@ static void r700SendSUState(GLcontext *ctx, struct radeon_state_atom *atom) } -static void r700SendPolyState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendPolyState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1271,7 +1271,7 @@ static void r700SendPolyState(GLcontext *ctx, struct radeon_state_atom *atom) } -static void r700SendCLState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendCLState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1287,7 +1287,7 @@ static void r700SendCLState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendGBState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendGBState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1303,7 +1303,7 @@ static void r700SendGBState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendScissorState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendScissorState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1336,7 +1336,7 @@ static void r700SendScissorState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendSCState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendSCState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1353,7 +1353,7 @@ static void r700SendSCState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendAAState(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendAAState(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1368,7 +1368,7 @@ static void r700SendAAState(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendPSConsts(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendPSConsts(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1392,7 +1392,7 @@ static void r700SendPSConsts(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendVSConsts(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendVSConsts(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = R700_CONTEXT_STATES(context); @@ -1417,7 +1417,7 @@ static void r700SendVSConsts(GLcontext *ctx, struct radeon_state_atom *atom) COMMIT_BATCH(); } -static void r700SendQueryBegin(GLcontext *ctx, struct radeon_state_atom *atom) +static void r700SendQueryBegin(struct gl_context *ctx, struct radeon_state_atom *atom) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = radeon->query.current; @@ -1443,12 +1443,12 @@ static void r700SendQueryBegin(GLcontext *ctx, struct radeon_state_atom *atom) query->emitted_begin = GL_TRUE; } -static int check_always(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_always(struct gl_context *ctx, struct radeon_state_atom *atom) { return atom->cmd_size; } -static int check_cb(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_cb(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); int count = 7; @@ -1460,7 +1460,7 @@ static int check_cb(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static int check_blnd(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_blnd(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1485,7 +1485,7 @@ static int check_blnd(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static int check_ucp(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_ucp(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1500,7 +1500,7 @@ static int check_ucp(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static int check_vtx(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_vtx(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); int count = context->radeon.tcl.aos_count * 18; @@ -1509,7 +1509,7 @@ static int check_vtx(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static int check_tx(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_tx(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); unsigned int i, count = 0; @@ -1526,7 +1526,7 @@ static int check_tx(GLcontext *ctx, struct radeon_state_atom *atom) return count * 31; } -static int check_ps_consts(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_ps_consts(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1539,7 +1539,7 @@ static int check_ps_consts(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static int check_vs_consts(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_vs_consts(struct gl_context *ctx, struct radeon_state_atom *atom) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1552,7 +1552,7 @@ static int check_vs_consts(GLcontext *ctx, struct radeon_state_atom *atom) return count; } -static int check_queryobj(GLcontext *ctx, struct radeon_state_atom *atom) +static int check_queryobj(struct gl_context *ctx, struct radeon_state_atom *atom) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = radeon->query.current; diff --git a/src/mesa/drivers/dri/r600/r700_clear.c b/src/mesa/drivers/dri/r600/r700_clear.c index d1008f28b9b..853dec9233c 100644 --- a/src/mesa/drivers/dri/r600/r700_clear.c +++ b/src/mesa/drivers/dri/r600/r700_clear.c @@ -45,7 +45,7 @@ static GLboolean r700ClearFast(context_t *context, GLbitfield mask) return GL_FALSE; } -void r700Clear(GLcontext * ctx, GLbitfield mask) +void r700Clear(struct gl_context * ctx, GLbitfield mask) { context_t *context = R700_CONTEXT(ctx); radeonContextPtr radeon = &context->radeon; diff --git a/src/mesa/drivers/dri/r600/r700_clear.h b/src/mesa/drivers/dri/r600/r700_clear.h index bed1d3a90e5..de372ee3039 100644 --- a/src/mesa/drivers/dri/r600/r700_clear.h +++ b/src/mesa/drivers/dri/r600/r700_clear.h @@ -28,6 +28,6 @@ #ifndef __r700_CLEAR_H__ #define __r700_CLEAR_H__ -extern void r700Clear(GLcontext * ctx, GLbitfield mask); +extern void r700Clear(struct gl_context * ctx, GLbitfield mask); #endif /* __r700_CLEAR_H__ */ diff --git a/src/mesa/drivers/dri/r600/r700_fragprog.c b/src/mesa/drivers/dri/r600/r700_fragprog.c index 217b0e27a4a..2a6a39dfbac 100644 --- a/src/mesa/drivers/dri/r600/r700_fragprog.c +++ b/src/mesa/drivers/dri/r600/r700_fragprog.c @@ -44,7 +44,7 @@ #include "r700_debug.h" -void insert_wpos_code(GLcontext *ctx, struct gl_fragment_program *fprog) +void insert_wpos_code(struct gl_context *ctx, struct gl_fragment_program *fprog) { static const gl_state_index winstate[STATE_LENGTH] = { STATE_INTERNAL, STATE_FB_SIZE, 0, 0, 0}; @@ -95,7 +95,7 @@ void insert_wpos_code(GLcontext *ctx, struct gl_fragment_program *fprog) //TODO : Validate FP input with VP output. void Map_Fragment_Program(r700_AssemblerBase *pAsm, struct gl_fragment_program *mesa_fp, - GLcontext *ctx) + struct gl_context *ctx) { unsigned int unBit; unsigned int i; @@ -353,7 +353,7 @@ GLboolean Find_Instruction_Dependencies_fp(struct r700_fragment_program *fp, GLboolean r700TranslateFragmentShader(struct r700_fragment_program *fp, struct gl_fragment_program *mesa_fp, - GLcontext *ctx) + struct gl_context *ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -466,7 +466,7 @@ GLboolean r700TranslateFragmentShader(struct r700_fragment_program *fp, return GL_TRUE; } -void r700SelectFragmentShader(GLcontext *ctx) +void r700SelectFragmentShader(struct gl_context *ctx) { context_t *context = R700_CONTEXT(ctx); struct r700_fragment_program *fp = (struct r700_fragment_program *) @@ -480,7 +480,7 @@ void r700SelectFragmentShader(GLcontext *ctx) r700TranslateFragmentShader(fp, &(fp->mesa_program), ctx); } -void * r700GetActiveFpShaderBo(GLcontext * ctx) +void * r700GetActiveFpShaderBo(struct gl_context * ctx) { struct r700_fragment_program *fp = (struct r700_fragment_program *) (ctx->FragmentProgram._Current); @@ -488,7 +488,7 @@ void * r700GetActiveFpShaderBo(GLcontext * ctx) return fp->shaderbo; } -void * r700GetActiveFpShaderConstBo(GLcontext * ctx) +void * r700GetActiveFpShaderConstBo(struct gl_context * ctx) { struct r700_fragment_program *fp = (struct r700_fragment_program *) (ctx->FragmentProgram._Current); @@ -496,7 +496,7 @@ void * r700GetActiveFpShaderConstBo(GLcontext * ctx) return fp->constbo0; } -GLboolean r700SetupFragmentProgram(GLcontext * ctx) +GLboolean r700SetupFragmentProgram(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); diff --git a/src/mesa/drivers/dri/r600/r700_fragprog.h b/src/mesa/drivers/dri/r600/r700_fragprog.h index aaa6043d5d8..bdb95ff0e71 100644 --- a/src/mesa/drivers/dri/r600/r700_fragprog.h +++ b/src/mesa/drivers/dri/r600/r700_fragprog.h @@ -51,25 +51,25 @@ struct r700_fragment_program }; /* Internal */ -void insert_wpos_code(GLcontext *ctx, struct gl_fragment_program *fprog); +void insert_wpos_code(struct gl_context *ctx, struct gl_fragment_program *fprog); void Map_Fragment_Program(r700_AssemblerBase *pAsm, struct gl_fragment_program *mesa_fp, - GLcontext *ctx); + struct gl_context *ctx); GLboolean Find_Instruction_Dependencies_fp(struct r700_fragment_program *fp, struct gl_fragment_program *mesa_fp); GLboolean r700TranslateFragmentShader(struct r700_fragment_program *fp, struct gl_fragment_program *mesa_vp, - GLcontext *ctx); + struct gl_context *ctx); /* Interface */ -extern void r700SelectFragmentShader(GLcontext *ctx); +extern void r700SelectFragmentShader(struct gl_context *ctx); -extern GLboolean r700SetupFragmentProgram(GLcontext * ctx); +extern GLboolean r700SetupFragmentProgram(struct gl_context * ctx); -extern void * r700GetActiveFpShaderBo(GLcontext * ctx); +extern void * r700GetActiveFpShaderBo(struct gl_context * ctx); -extern void * r700GetActiveFpShaderConstBo(GLcontext * ctx); +extern void * r700GetActiveFpShaderConstBo(struct gl_context * ctx); #endif /*_R700_FRAGPROG_H_*/ diff --git a/src/mesa/drivers/dri/r600/r700_oglprog.c b/src/mesa/drivers/dri/r600/r700_oglprog.c index e0c9179004d..6ca74580035 100644 --- a/src/mesa/drivers/dri/r600/r700_oglprog.c +++ b/src/mesa/drivers/dri/r600/r700_oglprog.c @@ -40,7 +40,7 @@ #include "r700_vertprog.h" -static void freeVertProgCache(GLcontext *ctx, struct r700_vertex_program_cont *cache) +static void freeVertProgCache(struct gl_context *ctx, struct r700_vertex_program_cont *cache) { struct r700_vertex_program *tmp, *vp = cache->progs; @@ -64,7 +64,7 @@ static void freeVertProgCache(GLcontext *ctx, struct r700_vertex_program_cont *c } } -static struct gl_program *r700NewProgram(GLcontext * ctx, +static struct gl_program *r700NewProgram(struct gl_context * ctx, GLenum target, GLuint id) { @@ -109,7 +109,7 @@ static struct gl_program *r700NewProgram(GLcontext * ctx, return pProgram; } -static void r700DeleteProgram(GLcontext * ctx, struct gl_program *prog) +static void r700DeleteProgram(struct gl_context * ctx, struct gl_program *prog) { struct r700_vertex_program_cont *vpc = (struct r700_vertex_program_cont *)prog; struct r700_fragment_program * fp; @@ -147,7 +147,7 @@ static void r700DeleteProgram(GLcontext * ctx, struct gl_program *prog) } static GLboolean -r700ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) +r700ProgramStringNotify(struct gl_context * ctx, GLenum target, struct gl_program *prog) { struct r700_vertex_program_cont *vpc = (struct r700_vertex_program_cont *)prog; struct r700_fragment_program * fp = (struct r700_fragment_program*)prog; @@ -178,7 +178,7 @@ r700ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) return GL_TRUE; } -static GLboolean r700IsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog) +static GLboolean r700IsProgramNative(struct gl_context * ctx, GLenum target, struct gl_program *prog) { return GL_TRUE; diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c index f90c69c4166..bb14a239b77 100644 --- a/src/mesa/drivers/dri/r600/r700_render.c +++ b/src/mesa/drivers/dri/r600/r700_render.c @@ -244,7 +244,7 @@ static int r700NumVerts(int num_verts, int prim) return num_verts - verts_off; } -static void r700RunRenderPrimitive(GLcontext * ctx, int start, int end, +static void r700RunRenderPrimitive(struct gl_context * ctx, int start, int end, int prim, GLint basevertex) { context_t *context = R700_CONTEXT(ctx); @@ -315,7 +315,7 @@ static void r700RunRenderPrimitive(GLcontext * ctx, int start, int end, COMMIT_BATCH(); } -static void r700RunRenderPrimitiveImmediate(GLcontext * ctx, int start, int end, int prim) +static void r700RunRenderPrimitiveImmediate(struct gl_context * ctx, int start, int end, int prim) { context_t *context = R700_CONTEXT(ctx); BATCH_LOCALS(&context->radeon); @@ -434,7 +434,7 @@ static void r700RunRenderPrimitiveImmediate(GLcontext * ctx, int start, int end, /* start 3d, idle, cb/db flush */ #define PRE_EMIT_STATE_BUFSZ 5 + 5 + 14 -static GLuint r700PredictRenderSize(GLcontext* ctx, +static GLuint r700PredictRenderSize(struct gl_context* ctx, const struct _mesa_prim *prim, const struct _mesa_index_buffer *ib, GLuint nr_prims) @@ -501,7 +501,7 @@ static GLuint r700PredictRenderSize(GLcontext* ctx, * Convert attribute data type to float * If the attribute uses named buffer object replace the bo with newly allocated bo */ -static void r700ConvertAttrib(GLcontext *ctx, int count, +static void r700ConvertAttrib(struct gl_context *ctx, int count, const struct gl_client_array *input, struct StreamDesc *attr) { @@ -580,7 +580,7 @@ static void r700ConvertAttrib(GLcontext *ctx, int count, } } -static void r700AlignDataToDword(GLcontext *ctx, +static void r700AlignDataToDword(struct gl_context *ctx, const struct gl_client_array *input, int count, struct StreamDesc *attr) @@ -622,7 +622,7 @@ static void r700AlignDataToDword(GLcontext *ctx, attr->stride = dst_stride; } -static void r700SetupStreams(GLcontext *ctx, const struct gl_client_array *input[], int count) +static void r700SetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count) { context_t *context = R700_CONTEXT(ctx); GLuint stride; @@ -723,7 +723,7 @@ static void r700SetupStreams(GLcontext *ctx, const struct gl_client_array *input RADEON_GEM_DOMAIN_GTT, 0); } -static void r700FreeData(GLcontext *ctx) +static void r700FreeData(struct gl_context *ctx) { /* Need to zero tcl.aos[n].bo and tcl.elt_dma_bo * to prevent double unref in radeonReleaseArrays @@ -748,7 +748,7 @@ static void r700FreeData(GLcontext *ctx) } } -static void r700FixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf) +static void r700FixupIndexBuffer(struct gl_context *ctx, const struct _mesa_index_buffer *mesa_ind_buf) { context_t *context = R700_CONTEXT(ctx); GLvoid *src_ptr; @@ -823,7 +823,7 @@ static void r700FixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer } } -static void r700SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf) +static void r700SetupIndexBuffer(struct gl_context *ctx, const struct _mesa_index_buffer *mesa_ind_buf) { context_t *context = R700_CONTEXT(ctx); @@ -876,7 +876,7 @@ static void r700SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer } } -static GLboolean check_fallbacks(GLcontext *ctx) +static GLboolean check_fallbacks(struct gl_context *ctx) { if (ctx->RenderMode != GL_RENDER) return GL_TRUE; @@ -884,7 +884,7 @@ static GLboolean check_fallbacks(GLcontext *ctx) return GL_FALSE; } -static GLboolean r700TryDrawPrims(GLcontext *ctx, +static GLboolean r700TryDrawPrims(struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -972,7 +972,7 @@ static GLboolean r700TryDrawPrims(GLcontext *ctx, return GL_TRUE; } -static void r700DrawPrims(GLcontext *ctx, +static void r700DrawPrims(struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -1011,7 +1011,7 @@ static void r700DrawPrims(GLcontext *ctx, } } -void r700InitDraw(GLcontext *ctx) +void r700InitDraw(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); diff --git a/src/mesa/drivers/dri/r600/r700_shader.c b/src/mesa/drivers/dri/r600/r700_shader.c index 8b3ed5cd823..cbbfaed31c9 100644 --- a/src/mesa/drivers/dri/r600/r700_shader.c +++ b/src/mesa/drivers/dri/r600/r700_shader.c @@ -38,7 +38,7 @@ #include "r700_shader.h" -void r700ShaderInit(GLcontext * ctx) +void r700ShaderInit(struct gl_context * ctx) { } diff --git a/src/mesa/drivers/dri/r600/r700_shader.h b/src/mesa/drivers/dri/r600/r700_shader.h index 0599ffd901f..183dd33525f 100644 --- a/src/mesa/drivers/dri/r600/r700_shader.h +++ b/src/mesa/drivers/dri/r600/r700_shader.h @@ -33,7 +33,7 @@ #include "r700_shaderinst.h" -void r700ShaderInit(GLcontext * ctx); +void r700ShaderInit(struct gl_context * ctx); typedef enum R700ShaderType { diff --git a/src/mesa/drivers/dri/r600/r700_state.c b/src/mesa/drivers/dri/r600/r700_state.c index 925b4ffe6dd..bd04a633b48 100644 --- a/src/mesa/drivers/dri/r600/r700_state.c +++ b/src/mesa/drivers/dri/r600/r700_state.c @@ -52,14 +52,14 @@ #include "r700_fragprog.h" #include "r700_vertprog.h" -void r600UpdateTextureState(GLcontext * ctx); -static void r700SetClipPlaneState(GLcontext * ctx, GLenum cap, GLboolean state); -static void r700UpdatePolygonMode(GLcontext * ctx); -static void r700SetPolygonOffsetState(GLcontext * ctx, GLboolean state); -static void r700SetStencilState(GLcontext * ctx, GLboolean state); -static void r700UpdateWindow(GLcontext * ctx, int id); - -void r700UpdateShaders(GLcontext * ctx) +void r600UpdateTextureState(struct gl_context * ctx); +static void r700SetClipPlaneState(struct gl_context * ctx, GLenum cap, GLboolean state); +static void r700UpdatePolygonMode(struct gl_context * ctx); +static void r700SetPolygonOffsetState(struct gl_context * ctx, GLboolean state); +static void r700SetStencilState(struct gl_context * ctx, GLboolean state); +static void r700UpdateWindow(struct gl_context * ctx, int id); + +void r700UpdateShaders(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); @@ -80,7 +80,7 @@ void r700UpdateShaders(GLcontext * ctx) /* * To correctly position primitives: */ -void r700UpdateViewportOffset(GLcontext * ctx) //------------------ +void r700UpdateViewportOffset(struct gl_context * ctx) //------------------ { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -106,7 +106,7 @@ void r700UpdateViewportOffset(GLcontext * ctx) //------------------ radeonUpdateScissor(ctx); } -void r700UpdateStateParameters(GLcontext * ctx, GLuint new_state) //-------------------- +void r700UpdateStateParameters(struct gl_context * ctx, GLuint new_state) //-------------------- { struct r700_fragment_program *fp = (struct r700_fragment_program *)ctx->FragmentProgram._Current; @@ -130,7 +130,7 @@ void r700UpdateStateParameters(GLcontext * ctx, GLuint new_state) //------------ /** * Called by Mesa after an internal state update. */ -static void r700InvalidateState(GLcontext * ctx, GLuint new_state) //------------------- +static void r700InvalidateState(struct gl_context * ctx, GLuint new_state) //------------------- { context_t *context = R700_CONTEXT(ctx); @@ -190,7 +190,7 @@ static void r700InvalidateState(GLcontext * ctx, GLuint new_state) //----------- context->radeon.NewGLState |= new_state; } -static void r700SetDBRenderState(GLcontext * ctx) +static void r700SetDBRenderState(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -245,13 +245,13 @@ static void r700SetDBRenderState(GLcontext * ctx) } } -void r700UpdateShaderStates(GLcontext * ctx) +void r700UpdateShaderStates(struct gl_context * ctx) { r700SetDBRenderState(ctx); r600UpdateTextureState(ctx); } -static void r700SetDepthState(GLcontext * ctx) +static void r700SetDepthState(struct gl_context * ctx) { struct radeon_renderbuffer *rrb; context_t *context = R700_CONTEXT(ctx); @@ -320,7 +320,7 @@ static void r700SetDepthState(GLcontext * ctx) } } -static void r700SetAlphaState(GLcontext * ctx) +static void r700SetAlphaState(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -368,7 +368,7 @@ static void r700SetAlphaState(GLcontext * ctx) } -static void r700AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) //--------------- +static void r700AlphaFunc(struct gl_context * ctx, GLenum func, GLfloat ref) //--------------- { (void)func; (void)ref; @@ -376,7 +376,7 @@ static void r700AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) //--------- } -static void r700BlendColor(GLcontext * ctx, const GLfloat cf[4]) //---------------- +static void r700BlendColor(struct gl_context * ctx, const GLfloat cf[4]) //---------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -444,7 +444,7 @@ static int blend_factor(GLenum factor, GLboolean is_src) } } -static void r700SetBlendState(GLcontext * ctx) +static void r700SetBlendState(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -576,13 +576,13 @@ static void r700SetBlendState(GLcontext * ctx) } -static void r700BlendEquationSeparate(GLcontext * ctx, +static void r700BlendEquationSeparate(struct gl_context * ctx, GLenum modeRGB, GLenum modeA) //----------------- { r700SetBlendState(ctx); } -static void r700BlendFuncSeparate(GLcontext * ctx, +static void r700BlendFuncSeparate(struct gl_context * ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA) //------------------------ { @@ -637,7 +637,7 @@ static GLuint translate_logicop(GLenum logicop) * Used internally to update the r300->hw hardware state to match the * current OpenGL state. */ -static void r700SetLogicOpState(GLcontext *ctx) +static void r700SetLogicOpState(struct gl_context *ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&R700_CONTEXT(ctx)->hw); @@ -655,13 +655,13 @@ static void r700SetLogicOpState(GLcontext *ctx) * Called by Mesa when an application program changes the LogicOp state * via glLogicOp. */ -static void r700LogicOpcode(GLcontext *ctx, GLenum logicop) +static void r700LogicOpcode(struct gl_context *ctx, GLenum logicop) { if (RGBA_LOGICOP_ENABLED(ctx)) r700SetLogicOpState(ctx); } -static void r700UpdateCulling(GLcontext * ctx) +static void r700UpdateCulling(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&R700_CONTEXT(ctx)->hw); @@ -713,7 +713,7 @@ static void r700UpdateCulling(GLcontext * ctx) r700->PA_SU_SC_MODE_CNTL.u32All ^= FACE_bit; } -static void r700UpdateLineStipple(GLcontext * ctx) +static void r700UpdateLineStipple(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&R700_CONTEXT(ctx)->hw); @@ -730,7 +730,7 @@ static void r700UpdateLineStipple(GLcontext * ctx) } } -static void r700Enable(GLcontext * ctx, GLenum cap, GLboolean state) //------------------ +static void r700Enable(struct gl_context * ctx, GLenum cap, GLboolean state) //------------------ { context_t *context = R700_CONTEXT(ctx); @@ -794,7 +794,7 @@ static void r700Enable(GLcontext * ctx, GLenum cap, GLboolean state) //--------- /** * Handle glColorMask() */ -static void r700ColorMask(GLcontext * ctx, +static void r700ColorMask(struct gl_context * ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a) //------------------ { context_t *context = R700_CONTEXT(ctx); @@ -815,7 +815,7 @@ static void r700ColorMask(GLcontext * ctx, * * \note Mesa already filters redundant calls to this function. */ -static void r700DepthFunc(GLcontext * ctx, GLenum func) //-------------------- +static void r700DepthFunc(struct gl_context * ctx, GLenum func) //-------------------- { r700SetDepthState(ctx); } @@ -825,7 +825,7 @@ static void r700DepthFunc(GLcontext * ctx, GLenum func) //-------------------- * * \note Mesa already filters redundant calls to this function. */ -static void r700DepthMask(GLcontext * ctx, GLboolean mask) //------------------ +static void r700DepthMask(struct gl_context * ctx, GLboolean mask) //------------------ { r700SetDepthState(ctx); } @@ -835,7 +835,7 @@ static void r700DepthMask(GLcontext * ctx, GLboolean mask) //------------------ * * \note Mesa already filters redundant calls to this function. */ -static void r700CullFace(GLcontext * ctx, GLenum mode) //----------------- +static void r700CullFace(struct gl_context * ctx, GLenum mode) //----------------- { r700UpdateCulling(ctx); } @@ -843,7 +843,7 @@ static void r700CullFace(GLcontext * ctx, GLenum mode) //----------------- /* ============================================================= * Fog */ -static void r700Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) //-------------- +static void r700Fogfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) //-------------- { } @@ -852,13 +852,13 @@ static void r700Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) //-- * * \note Mesa already filters redundant calls to this function. */ -static void r700FrontFace(GLcontext * ctx, GLenum mode) //------------------ +static void r700FrontFace(struct gl_context * ctx, GLenum mode) //------------------ { r700UpdateCulling(ctx); r700UpdatePolygonMode(ctx); } -static void r700ShadeModel(GLcontext * ctx, GLenum mode) //-------------------- +static void r700ShadeModel(struct gl_context * ctx, GLenum mode) //-------------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -881,7 +881,7 @@ static void r700ShadeModel(GLcontext * ctx, GLenum mode) //-------------------- /* ============================================================= * Point state */ -static void r700PointSize(GLcontext * ctx, GLfloat size) +static void r700PointSize(struct gl_context * ctx, GLfloat size) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -903,7 +903,7 @@ static void r700PointSize(GLcontext * ctx, GLfloat size) } -static void r700PointParameter(GLcontext * ctx, GLenum pname, const GLfloat * param) //--------------- +static void r700PointParameter(struct gl_context * ctx, GLenum pname, const GLfloat * param) //--------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -980,7 +980,7 @@ static int translate_stencil_op(int op) return 0; } -static void r700SetStencilState(GLcontext * ctx, GLboolean state) +static void r700SetStencilState(struct gl_context * ctx, GLboolean state) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1002,7 +1002,7 @@ static void r700SetStencilState(GLcontext * ctx, GLboolean state) } } -static void r700StencilFuncSeparate(GLcontext * ctx, GLenum face, +static void r700StencilFuncSeparate(struct gl_context * ctx, GLenum face, GLenum func, GLint ref, GLuint mask) //--------------------- { context_t *context = R700_CONTEXT(ctx); @@ -1032,7 +1032,7 @@ static void r700StencilFuncSeparate(GLcontext * ctx, GLenum face, } -static void r700StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) //-------------- +static void r700StencilMaskSeparate(struct gl_context * ctx, GLenum face, GLuint mask) //-------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1050,7 +1050,7 @@ static void r700StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) / } -static void r700StencilOpSeparate(GLcontext * ctx, GLenum face, +static void r700StencilOpSeparate(struct gl_context * ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) //-------------------- { context_t *context = R700_CONTEXT(ctx); @@ -1074,7 +1074,7 @@ static void r700StencilOpSeparate(GLcontext * ctx, GLenum face, STENCILZPASS_BF_shift, STENCILZPASS_BF_mask); } -static void r700UpdateWindow(GLcontext * ctx, int id) //-------------------- +static void r700UpdateWindow(struct gl_context * ctx, int id) //-------------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1131,7 +1131,7 @@ static void r700UpdateWindow(GLcontext * ctx, int id) //-------------------- } -static void r700Viewport(GLcontext * ctx, +static void r700Viewport(struct gl_context * ctx, GLint x, GLint y, GLsizei width, @@ -1142,12 +1142,12 @@ static void r700Viewport(GLcontext * ctx, radeon_viewport(ctx, x, y, width, height); } -static void r700DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) //------------- +static void r700DepthRange(struct gl_context * ctx, GLclampd nearval, GLclampd farval) //------------- { r700UpdateWindow(ctx, 0); } -static void r700LineWidth(GLcontext * ctx, GLfloat widthf) //--------------- +static void r700LineWidth(struct gl_context * ctx, GLfloat widthf) //--------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1161,7 +1161,7 @@ static void r700LineWidth(GLcontext * ctx, GLfloat widthf) //--------------- PA_SU_LINE_CNTL__WIDTH_shift, PA_SU_LINE_CNTL__WIDTH_mask); } -static void r700LineStipple(GLcontext *ctx, GLint factor, GLushort pattern) +static void r700LineStipple(struct gl_context *ctx, GLint factor, GLushort pattern) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1173,7 +1173,7 @@ static void r700LineStipple(GLcontext *ctx, GLint factor, GLushort pattern) SETfield(r700->PA_SC_LINE_STIPPLE.u32All, 1, AUTO_RESET_CNTL_shift, AUTO_RESET_CNTL_mask); } -static void r700SetPolygonOffsetState(GLcontext * ctx, GLboolean state) +static void r700SetPolygonOffsetState(struct gl_context * ctx, GLboolean state) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1191,7 +1191,7 @@ static void r700SetPolygonOffsetState(GLcontext * ctx, GLboolean state) } } -static void r700PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) //-------------- +static void r700PolygonOffset(struct gl_context * ctx, GLfloat factor, GLfloat units) //-------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1221,7 +1221,7 @@ static void r700PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) // r700->PA_SU_POLY_OFFSET_BACK_OFFSET.f32All = constant; } -static void r700UpdatePolygonMode(GLcontext * ctx) +static void r700UpdatePolygonMode(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1276,7 +1276,7 @@ static void r700UpdatePolygonMode(GLcontext * ctx) } } -static void r700PolygonMode(GLcontext * ctx, GLenum face, GLenum mode) //------------------ +static void r700PolygonMode(struct gl_context * ctx, GLenum face, GLenum mode) //------------------ { (void)face; (void)mode; @@ -1284,11 +1284,11 @@ static void r700PolygonMode(GLcontext * ctx, GLenum face, GLenum mode) //------- r700UpdatePolygonMode(ctx); } -static void r700RenderMode(GLcontext * ctx, GLenum mode) //--------------------- +static void r700RenderMode(struct gl_context * ctx, GLenum mode) //--------------------- { } -static void r700ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) +static void r700ClipPlane( struct gl_context *ctx, GLenum plane, const GLfloat *eq ) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1306,7 +1306,7 @@ static void r700ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) r700->ucp[p].PA_CL_UCP_0_W.u32All = ip[3]; } -static void r700SetClipPlaneState(GLcontext * ctx, GLenum cap, GLboolean state) +static void r700SetClipPlaneState(struct gl_context * ctx, GLenum cap, GLboolean state) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1428,7 +1428,7 @@ void r700SetScissor(context_t *context) //--------------- r700->viewport[id].enabled = GL_TRUE; } -static void r700InitSQConfig(GLcontext * ctx) +static void r700InitSQConfig(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); @@ -1635,7 +1635,7 @@ static void r700InitSQConfig(GLcontext * ctx) * Assumes that the command buffer and state atoms have been * initialized already. */ -void r700InitState(GLcontext * ctx) //------------------- +void r700InitState(struct gl_context * ctx) //------------------- { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); diff --git a/src/mesa/drivers/dri/r600/r700_state.h b/src/mesa/drivers/dri/r600/r700_state.h index 56885e0b154..2d51198c8a8 100644 --- a/src/mesa/drivers/dri/r600/r700_state.h +++ b/src/mesa/drivers/dri/r600/r700_state.h @@ -33,13 +33,13 @@ #include "r700_chip.h" -extern void r700UpdateStateParameters(GLcontext * ctx, GLuint new_state); -extern void r700UpdateShaders (GLcontext * ctx); -extern void r700UpdateShaderStates(GLcontext * ctx); +extern void r700UpdateStateParameters(struct gl_context * ctx, GLuint new_state); +extern void r700UpdateShaders (struct gl_context * ctx); +extern void r700UpdateShaderStates(struct gl_context * ctx); -extern void r700UpdateViewportOffset(GLcontext * ctx); +extern void r700UpdateViewportOffset(struct gl_context * ctx); -extern void r700InitState (GLcontext * ctx); +extern void r700InitState (struct gl_context * ctx); extern void r700InitStateFuncs (radeonContextPtr radeon, struct dd_function_table *functions); extern void r700SetScissor(context_t *context); diff --git a/src/mesa/drivers/dri/r600/r700_vertprog.c b/src/mesa/drivers/dri/r600/r700_vertprog.c index 2fee5b4433e..7ba49d8f986 100644 --- a/src/mesa/drivers/dri/r600/r700_vertprog.c +++ b/src/mesa/drivers/dri/r600/r700_vertprog.c @@ -170,7 +170,7 @@ GLboolean Process_Vertex_Program_Vfetch_Instructions( } GLboolean Process_Vertex_Program_Vfetch_Instructions2( - GLcontext *ctx, + struct gl_context *ctx, struct r700_vertex_program *vp, struct gl_vertex_program *mesa_vp) { @@ -197,7 +197,7 @@ GLboolean Process_Vertex_Program_Vfetch_Instructions2( return GL_TRUE; } -void Map_Vertex_Program(GLcontext *ctx, +void Map_Vertex_Program(struct gl_context *ctx, struct r700_vertex_program *vp, struct gl_vertex_program *mesa_vp) { @@ -293,7 +293,7 @@ GLboolean Find_Instruction_Dependencies_vp(struct r700_vertex_program *vp, return GL_TRUE; } -struct r700_vertex_program* r700TranslateVertexShader(GLcontext *ctx, +struct r700_vertex_program* r700TranslateVertexShader(struct gl_context *ctx, struct gl_vertex_program *mesa_vp) { context_t *context = R700_CONTEXT(ctx); @@ -385,7 +385,7 @@ struct r700_vertex_program* r700TranslateVertexShader(GLcontext *ctx, return vp; } -void r700SelectVertexShader(GLcontext *ctx) +void r700SelectVertexShader(struct gl_context *ctx) { context_t *context = R700_CONTEXT(ctx); struct r700_vertex_program_cont *vpc; @@ -459,7 +459,7 @@ int getTypeSize(GLenum type) } } -static void r700TranslateAttrib(GLcontext *ctx, GLuint unLoc, int count, const struct gl_client_array *input) +static void r700TranslateAttrib(struct gl_context *ctx, GLuint unLoc, int count, const struct gl_client_array *input) { context_t *context = R700_CONTEXT(ctx); @@ -545,7 +545,7 @@ static void r700TranslateAttrib(GLcontext *ctx, GLuint unLoc, int count, const s context->nNumActiveAos++; } -void r700SetVertexFormat(GLcontext *ctx, const struct gl_client_array *arrays[], int count) +void r700SetVertexFormat(struct gl_context *ctx, const struct gl_client_array *arrays[], int count) { context_t *context = R700_CONTEXT(ctx); struct r700_vertex_program *vpc @@ -574,7 +574,7 @@ void r700SetVertexFormat(GLcontext *ctx, const struct gl_client_array *arrays[], context->radeon.tcl.aos_count = context->nNumActiveAos; } -void * r700GetActiveVpShaderBo(GLcontext * ctx) +void * r700GetActiveVpShaderBo(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); struct r700_vertex_program *vp = context->selected_vp;; @@ -585,7 +585,7 @@ void * r700GetActiveVpShaderBo(GLcontext * ctx) return NULL; } -void * r700GetActiveVpShaderConstBo(GLcontext * ctx) +void * r700GetActiveVpShaderConstBo(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); struct r700_vertex_program *vp = context->selected_vp;; @@ -596,7 +596,7 @@ void * r700GetActiveVpShaderConstBo(GLcontext * ctx) return NULL; } -GLboolean r700SetupVertexProgram(GLcontext * ctx) +GLboolean r700SetupVertexProgram(struct gl_context * ctx) { context_t *context = R700_CONTEXT(ctx); R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); diff --git a/src/mesa/drivers/dri/r600/r700_vertprog.h b/src/mesa/drivers/dri/r600/r700_vertprog.h index 9acdc8e3501..859afb6e97c 100644 --- a/src/mesa/drivers/dri/r600/r700_vertprog.h +++ b/src/mesa/drivers/dri/r600/r700_vertprog.h @@ -80,27 +80,27 @@ GLboolean Process_Vertex_Program_Vfetch_Instructions( struct r700_vertex_program *vp, struct gl_vertex_program *mesa_vp); GLboolean Process_Vertex_Program_Vfetch_Instructions2( - GLcontext *ctx, + struct gl_context *ctx, struct r700_vertex_program *vp, struct gl_vertex_program *mesa_vp); -void Map_Vertex_Program(GLcontext *ctx, +void Map_Vertex_Program(struct gl_context *ctx, struct r700_vertex_program *vp, struct gl_vertex_program *mesa_vp); GLboolean Find_Instruction_Dependencies_vp(struct r700_vertex_program *vp, struct gl_vertex_program *mesa_vp); -struct r700_vertex_program* r700TranslateVertexShader(GLcontext *ctx, +struct r700_vertex_program* r700TranslateVertexShader(struct gl_context *ctx, struct gl_vertex_program *mesa_vp); /* Interface */ -extern void r700SelectVertexShader(GLcontext *ctx); -extern void r700SetVertexFormat(GLcontext *ctx, const struct gl_client_array *arrays[], int count); +extern void r700SelectVertexShader(struct gl_context *ctx); +extern void r700SetVertexFormat(struct gl_context *ctx, const struct gl_client_array *arrays[], int count); -extern GLboolean r700SetupVertexProgram(GLcontext * ctx); +extern GLboolean r700SetupVertexProgram(struct gl_context * ctx); -extern void * r700GetActiveVpShaderBo(GLcontext * ctx); +extern void * r700GetActiveVpShaderBo(struct gl_context * ctx); -extern void * r700GetActiveVpShaderConstBo(GLcontext * ctx); +extern void * r700GetActiveVpShaderConstBo(struct gl_context * ctx); extern int getTypeSize(GLenum type); diff --git a/src/mesa/drivers/dri/radeon/radeon_blit.c b/src/mesa/drivers/dri/radeon/radeon_blit.c index 143822361e1..fe14540bc2e 100644 --- a/src/mesa/drivers/dri/radeon/radeon_blit.c +++ b/src/mesa/drivers/dri/radeon/radeon_blit.c @@ -321,7 +321,7 @@ static inline void emit_draw_packet(struct r100_context *r100, * @param[in] height region height * @param[in] flip_y set if y coords of the source image need to be flipped */ -unsigned r100_blit(GLcontext *ctx, +unsigned r100_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/radeon/radeon_blit.h b/src/mesa/drivers/dri/radeon/radeon_blit.h index d7d0b5554a6..5e5c73481a6 100644 --- a/src/mesa/drivers/dri/radeon/radeon_blit.h +++ b/src/mesa/drivers/dri/radeon/radeon_blit.h @@ -32,7 +32,7 @@ void r100_blit_init(struct r100_context *r100); unsigned r100_check_blit(gl_format mesa_format); -unsigned r100_blit(GLcontext *ctx, +unsigned r100_blit(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c b/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c index 0897dafbd8b..0d1af726c07 100644 --- a/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c +++ b/src/mesa/drivers/dri/radeon/radeon_buffer_objects.c @@ -40,7 +40,7 @@ get_radeon_buffer_object(struct gl_buffer_object *obj) } static struct gl_buffer_object * -radeonNewBufferObject(GLcontext * ctx, +radeonNewBufferObject(struct gl_context * ctx, GLuint name, GLenum target) { @@ -57,7 +57,7 @@ radeonNewBufferObject(GLcontext * ctx, * Called via glDeleteBuffersARB(). */ static void -radeonDeleteBufferObject(GLcontext * ctx, +radeonDeleteBufferObject(struct gl_context * ctx, struct gl_buffer_object *obj) { struct radeon_buffer_object *radeon_obj = get_radeon_buffer_object(obj); @@ -82,7 +82,7 @@ radeonDeleteBufferObject(GLcontext * ctx, * \return GL_TRUE for success, GL_FALSE if out of memory */ static GLboolean -radeonBufferData(GLcontext * ctx, +radeonBufferData(struct gl_context * ctx, GLenum target, GLsizeiptrARB size, const GLvoid * data, @@ -129,7 +129,7 @@ radeonBufferData(GLcontext * ctx, * Called via glBufferSubDataARB(). */ static void -radeonBufferSubData(GLcontext * ctx, +radeonBufferSubData(struct gl_context * ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, @@ -154,7 +154,7 @@ radeonBufferSubData(GLcontext * ctx, * Called via glGetBufferSubDataARB() */ static void -radeonGetBufferSubData(GLcontext * ctx, +radeonGetBufferSubData(struct gl_context * ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, @@ -174,7 +174,7 @@ radeonGetBufferSubData(GLcontext * ctx, * Called via glMapBufferARB() */ static void * -radeonMapBuffer(GLcontext * ctx, +radeonMapBuffer(struct gl_context * ctx, GLenum target, GLenum access, struct gl_buffer_object *obj) @@ -204,7 +204,7 @@ radeonMapBuffer(GLcontext * ctx, * Called via glUnmapBufferARB() */ static GLboolean -radeonUnmapBuffer(GLcontext * ctx, +radeonUnmapBuffer(struct gl_context * ctx, GLenum target, struct gl_buffer_object *obj) { diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index c1a660af3d0..43a6355ad8b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -201,7 +201,7 @@ void radeonSetCliprects(radeonContextPtr radeon) -void radeonUpdateScissor( GLcontext *ctx ) +void radeonUpdateScissor( struct gl_context *ctx ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); GLint x = ctx->Scissor.X, y = ctx->Scissor.Y; @@ -252,7 +252,7 @@ void radeonUpdateScissor( GLcontext *ctx ) * Scissoring */ -void radeonScissor(GLcontext* ctx, GLint x, GLint y, GLsizei w, GLsizei h) +void radeonScissor(struct gl_context* ctx, GLint x, GLint y, GLsizei w, GLsizei h) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); if (ctx->Scissor.Enabled) { @@ -578,7 +578,7 @@ void radeonSwapBuffers(__DRIdrawable * dPriv) if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { radeonContextPtr radeon; - GLcontext *ctx; + struct gl_context *ctx; radeon = (radeonContextPtr) dPriv->driContextPriv->driverPrivate; ctx = radeon->glCtx; @@ -620,7 +620,7 @@ void radeonCopySubBuffer(__DRIdrawable * dPriv, { if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { radeonContextPtr radeon; - GLcontext *ctx; + struct gl_context *ctx; radeon = (radeonContextPtr) dPriv->driContextPriv->driverPrivate; ctx = radeon->glCtx; @@ -646,7 +646,7 @@ void radeonCopySubBuffer(__DRIdrawable * dPriv, * If so, set the intel->front_buffer_dirty field to true. */ void -radeon_check_front_buffer_rendering(GLcontext *ctx) +radeon_check_front_buffer_rendering(struct gl_context *ctx) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); const struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -662,7 +662,7 @@ radeon_check_front_buffer_rendering(GLcontext *ctx) } -void radeon_draw_buffer(GLcontext *ctx, struct gl_framebuffer *fb) +void radeon_draw_buffer(struct gl_context *ctx, struct gl_framebuffer *fb) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_renderbuffer *rrbDepth = NULL, *rrbStencil = NULL, @@ -817,7 +817,7 @@ void radeon_draw_buffer(GLcontext *ctx, struct gl_framebuffer *fb) /** * Called via glDrawBuffer. */ -void radeonDrawBuffer( GLcontext *ctx, GLenum mode ) +void radeonDrawBuffer( struct gl_context *ctx, GLenum mode ) { if (RADEON_DEBUG & RADEON_DRI) fprintf(stderr, "%s %s\n", __FUNCTION__, @@ -844,7 +844,7 @@ void radeonDrawBuffer( GLcontext *ctx, GLenum mode ) radeon_draw_buffer(ctx, ctx->DrawBuffer); } -void radeonReadBuffer( GLcontext *ctx, GLenum mode ) +void radeonReadBuffer( struct gl_context *ctx, GLenum mode ) { if ((ctx->DrawBuffer != NULL) && (ctx->DrawBuffer->Name == 0)) { struct radeon_context *const rmesa = RADEON_CONTEXT(ctx); @@ -891,11 +891,11 @@ void radeon_window_moved(radeonContextPtr radeon) } } -void radeon_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height) +void radeon_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); __DRIcontext *driContext = radeon->dri.context; - void (*old_viewport)(GLcontext *ctx, GLint x, GLint y, + void (*old_viewport)(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h); if (!driContext->driScreenPriv->dri2.enabled) @@ -1064,7 +1064,7 @@ static INLINE void radeonEmitAtoms(radeonContextPtr radeon, GLboolean emitAll) COMMIT_BATCH(); } -static GLboolean radeon_revalidate_bos(GLcontext *ctx) +static GLboolean radeon_revalidate_bos(struct gl_context *ctx) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); int ret; @@ -1104,7 +1104,7 @@ void radeonEmitState(radeonContextPtr radeon) } -void radeonFlush(GLcontext *ctx) +void radeonFlush(struct gl_context *ctx) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); if (RADEON_DEBUG & RADEON_IOCTL) @@ -1145,7 +1145,7 @@ flush_front: /* Make sure all commands have been sent to the hardware and have * completed processing. */ -void radeonFinish(GLcontext * ctx) +void radeonFinish(struct gl_context * ctx) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -1327,7 +1327,7 @@ void rcommonBeginBatch(radeonContextPtr rmesa, int n, } -void radeonUserClear(GLcontext *ctx, GLuint mask) +void radeonUserClear(struct gl_context *ctx, GLuint mask) { _mesa_meta_Clear(ctx, mask); } diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h b/src/mesa/drivers/dri/radeon/radeon_common.h index 35b3f08fff9..85a114623ad 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.h +++ b/src/mesa/drivers/dri/radeon/radeon_common.h @@ -5,11 +5,11 @@ #include "radeon_dma.h" #include "radeon_texture.h" -void radeonUserClear(GLcontext *ctx, GLuint mask); +void radeonUserClear(struct gl_context *ctx, GLuint mask); void radeonRecalcScissorRects(radeonContextPtr radeon); void radeonSetCliprects(radeonContextPtr radeon); -void radeonUpdateScissor( GLcontext *ctx ); -void radeonScissor(GLcontext* ctx, GLint x, GLint y, GLsizei w, GLsizei h); +void radeonUpdateScissor( struct gl_context *ctx ); +void radeonScissor(struct gl_context* ctx, GLint x, GLint y, GLsizei w, GLsizei h); void radeonWaitForIdleLocked(radeonContextPtr radeon); extern uint32_t radeonGetAge(radeonContextPtr radeon); @@ -21,18 +21,18 @@ void radeonCopySubBuffer(__DRIdrawable * dPriv, void radeonUpdatePageFlipping(radeonContextPtr rmesa); -void radeonFlush(GLcontext *ctx); -void radeonFinish(GLcontext * ctx); +void radeonFlush(struct gl_context *ctx); +void radeonFinish(struct gl_context * ctx); void radeonEmitState(radeonContextPtr radeon); GLuint radeonCountStateEmitSize(radeonContextPtr radeon); -void radeon_clear_tris(GLcontext *ctx, GLbitfield mask); +void radeon_clear_tris(struct gl_context *ctx, GLbitfield mask); void radeon_window_moved(radeonContextPtr radeon); -void radeon_draw_buffer(GLcontext *ctx, struct gl_framebuffer *fb); -void radeonDrawBuffer( GLcontext *ctx, GLenum mode ); -void radeonReadBuffer( GLcontext *ctx, GLenum mode ); -void radeon_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height); +void radeon_draw_buffer(struct gl_context *ctx, struct gl_framebuffer *fb); +void radeonDrawBuffer( struct gl_context *ctx, GLenum mode ); +void radeonReadBuffer( struct gl_context *ctx, GLenum mode ); +void radeon_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height); void radeon_get_cliprects(radeonContextPtr radeon, struct drm_clip_rect **cliprects, unsigned int *num_cliprects, @@ -45,12 +45,12 @@ struct radeon_renderbuffer * radeon_create_renderbuffer(gl_format format, __DRIdrawable *driDrawPriv); void -radeonReadPixels(GLcontext * ctx, +radeonReadPixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, GLvoid * pixels); -void radeon_check_front_buffer_rendering(GLcontext *ctx); +void radeon_check_front_buffer_rendering(struct gl_context *ctx); static inline struct radeon_renderbuffer *radeon_renderbuffer(struct gl_renderbuffer *rb) { struct radeon_renderbuffer *rrb = (struct radeon_renderbuffer *)rb; diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index 68aacd7f166..40544860b3b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -105,7 +105,7 @@ static const char* get_chip_family_name(int chip_family) /* Return various strings for glGetString(). */ -static const GLubyte *radeonGetString(GLcontext * ctx, GLenum name) +static const GLubyte *radeonGetString(struct gl_context * ctx, GLenum name) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); static char buffer[128]; @@ -186,8 +186,8 @@ GLboolean radeonInitContext(radeonContextPtr radeon, { __DRIscreen *sPriv = driContextPriv->driScreenPriv; radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private); - GLcontext* ctx; - GLcontext* shareCtx; + struct gl_context* ctx; + struct gl_context* shareCtx; int fthrottle_mode; /* Fill in additional standard functions. */ diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.h b/src/mesa/drivers/dri/radeon/radeon_common_context.h index 5c3299f5975..c62913afd0c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.h @@ -159,8 +159,8 @@ struct radeon_state_atom { GLuint *cmd; /* one or more cmd's */ GLuint *lastcmd; /* one or more cmd's */ GLboolean dirty; /* dirty-mark in emit_state_list */ - int (*check) (GLcontext *, struct radeon_state_atom *atom); /* is this state active? */ - void (*emit) (GLcontext *, struct radeon_state_atom *atom); + int (*check) (struct gl_context *, struct radeon_state_atom *atom); /* is this state active? */ + void (*emit) (struct gl_context *, struct radeon_state_atom *atom); }; struct radeon_hw_state { @@ -316,7 +316,7 @@ struct radeon_dma { * flush must be called before non-active vertex allocations can be * performed. */ - void (*flush) (GLcontext *); + void (*flush) (struct gl_context *); }; /* radeon_swtcl.c @@ -432,7 +432,7 @@ struct radeon_cmdbuf { }; struct radeon_context { - GLcontext *glCtx; + struct gl_context *glCtx; radeonScreenPtr radeonScreen; /* Screen private DRI data */ /* Texture object bookkeeping @@ -518,17 +518,17 @@ struct radeon_context { struct { void (*get_lock)(radeonContextPtr radeon); - void (*update_viewport_offset)(GLcontext *ctx); + void (*update_viewport_offset)(struct gl_context *ctx); void (*emit_cs_header)(struct radeon_cs *cs, radeonContextPtr rmesa); - void (*swtcl_flush)(GLcontext *ctx, uint32_t offset); + void (*swtcl_flush)(struct gl_context *ctx, uint32_t offset); void (*pre_emit_atoms)(radeonContextPtr rmesa); void (*pre_emit_state)(radeonContextPtr rmesa); - void (*fallback)(GLcontext *ctx, GLuint bit, GLboolean mode); - void (*free_context)(GLcontext *ctx); + void (*fallback)(struct gl_context *ctx, GLuint bit, GLboolean mode); + void (*free_context)(struct gl_context *ctx); void (*emit_query_finish)(radeonContextPtr radeon); - void (*update_scissor)(GLcontext *ctx); + void (*update_scissor)(struct gl_context *ctx); unsigned (*check_blit)(gl_format mesa_format); - unsigned (*blit)(GLcontext *ctx, + unsigned (*blit)(struct gl_context *ctx, struct radeon_bo *src_bo, intptr_t src_offset, gl_format src_mesaformat, diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index c0b9a222c48..cc9590213c4 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -167,7 +167,7 @@ static void r100_vtbl_pre_emit_state(radeonContextPtr radeon) radeon->hw.is_dirty = 1; } -static void r100_vtbl_free_context(GLcontext *ctx) +static void r100_vtbl_free_context(struct gl_context *ctx) { r100ContextPtr rmesa = R100_CONTEXT(ctx); _mesa_vector4f_free( &rmesa->tcl.ObjClean ); @@ -214,7 +214,7 @@ r100CreateContext( gl_api api, radeonScreenPtr screen = (radeonScreenPtr)(sPriv->private); struct dd_function_table functions; r100ContextPtr rmesa; - GLcontext *ctx; + struct gl_context *ctx; int i; int tcl_mode, fthrottle_mode; diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.c b/src/mesa/drivers/dri/radeon/radeon_dma.c index 31a45169daf..03d4e9656d7 100644 --- a/src/mesa/drivers/dri/radeon/radeon_dma.c +++ b/src/mesa/drivers/dri/radeon/radeon_dma.c @@ -133,7 +133,7 @@ void radeonEmitVec16(uint32_t *out, const GLvoid * data, int stride, int count) } } -void rcommon_emit_vector(GLcontext * ctx, struct radeon_aos *aos, +void rcommon_emit_vector(struct gl_context * ctx, struct radeon_aos *aos, const GLvoid * data, int size, int stride, int count) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); @@ -389,7 +389,7 @@ void radeonReleaseDmaRegions(radeonContextPtr rmesa) /* Flush vertices in the current dma region. */ -void rcommon_flush_last_swtcl_prim( GLcontext *ctx ) +void rcommon_flush_last_swtcl_prim( struct gl_context *ctx ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); struct radeon_dma *dma = &rmesa->dma; @@ -462,7 +462,7 @@ rcommonAllocDmaLowVerts( radeonContextPtr rmesa, int nverts, int vsize ) return head; } -void radeonReleaseArrays( GLcontext *ctx, GLuint newinputs ) +void radeonReleaseArrays( struct gl_context *ctx, GLuint newinputs ) { radeonContextPtr radeon = RADEON_CONTEXT( ctx ); int i; diff --git a/src/mesa/drivers/dri/radeon/radeon_dma.h b/src/mesa/drivers/dri/radeon/radeon_dma.h index 74e653fd189..ad6a3b8baab 100644 --- a/src/mesa/drivers/dri/radeon/radeon_dma.h +++ b/src/mesa/drivers/dri/radeon/radeon_dma.h @@ -38,7 +38,7 @@ void radeonEmitVec8(uint32_t *out, const GLvoid * data, int stride, int count); void radeonEmitVec12(uint32_t *out, const GLvoid * data, int stride, int count); void radeonEmitVec16(uint32_t *out, const GLvoid * data, int stride, int count); -void rcommon_emit_vector(GLcontext * ctx, struct radeon_aos *aos, +void rcommon_emit_vector(struct gl_context * ctx, struct radeon_aos *aos, const GLvoid * data, int size, int stride, int count); void radeonReturnDmaRegion(radeonContextPtr rmesa, int return_bytes); @@ -50,9 +50,9 @@ void radeonAllocDmaRegion(radeonContextPtr rmesa, int bytes, int alignment); void radeonReleaseDmaRegions(radeonContextPtr rmesa); -void rcommon_flush_last_swtcl_prim(GLcontext *ctx); +void rcommon_flush_last_swtcl_prim(struct gl_context *ctx); void *rcommonAllocDmaLowVerts(radeonContextPtr rmesa, int nverts, int vsize); void radeonFreeDmaRegions(radeonContextPtr rmesa); -void radeonReleaseArrays( GLcontext *ctx, GLuint newinputs ); +void radeonReleaseArrays( struct gl_context *ctx, GLuint newinputs ); #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c b/src/mesa/drivers/dri/radeon/radeon_fbo.c index 0597d4250de..2a6fbaeaf09 100644 --- a/src/mesa/drivers/dri/radeon/radeon_fbo.c +++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c @@ -47,7 +47,7 @@ } while(0) static struct gl_framebuffer * -radeon_new_framebuffer(GLcontext *ctx, GLuint name) +radeon_new_framebuffer(struct gl_context *ctx, GLuint name) { return _mesa_new_framebuffer(ctx, name); } @@ -70,7 +70,7 @@ radeon_delete_renderbuffer(struct gl_renderbuffer *rb) } static void * -radeon_get_pointer(GLcontext *ctx, struct gl_renderbuffer *rb, +radeon_get_pointer(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { radeon_print(RADEON_TEXTURE, RADEON_TRACE, @@ -85,7 +85,7 @@ radeon_get_pointer(GLcontext *ctx, struct gl_renderbuffer *rb, * storage for a user-created renderbuffer. */ static GLboolean -radeon_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb, +radeon_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { @@ -206,7 +206,7 @@ radeon_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb, * Not used for user-created renderbuffers! */ static GLboolean -radeon_alloc_window_storage(GLcontext * ctx, struct gl_renderbuffer *rb, +radeon_alloc_window_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { ASSERT(rb->Name == 0); @@ -223,7 +223,7 @@ radeon_alloc_window_storage(GLcontext * ctx, struct gl_renderbuffer *rb, static void -radeon_resize_buffers(GLcontext *ctx, struct gl_framebuffer *fb, +radeon_resize_buffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint width, GLuint height) { struct radeon_framebuffer *radeon_fb = (struct radeon_framebuffer*)fb; @@ -255,7 +255,7 @@ radeon_resize_buffers(GLcontext *ctx, struct gl_framebuffer *fb, /** Dummy function for gl_renderbuffer::AllocStorage() */ static GLboolean -radeon_nop_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb, +radeon_nop_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { _mesa_problem(ctx, "radeon_op_alloc_storage should never be called."); @@ -352,7 +352,7 @@ radeon_create_renderbuffer(gl_format format, __DRIdrawable *driDrawPriv) } static struct gl_renderbuffer * -radeon_new_renderbuffer(GLcontext * ctx, GLuint name) +radeon_new_renderbuffer(struct gl_context * ctx, GLuint name) { struct radeon_renderbuffer *rrb; @@ -376,7 +376,7 @@ radeon_new_renderbuffer(GLcontext * ctx, GLuint name) } static void -radeon_bind_framebuffer(GLcontext * ctx, GLenum target, +radeon_bind_framebuffer(struct gl_context * ctx, GLenum target, struct gl_framebuffer *fb, struct gl_framebuffer *fbread) { radeon_print(RADEON_TEXTURE, RADEON_TRACE, @@ -393,7 +393,7 @@ radeon_bind_framebuffer(GLcontext * ctx, GLenum target, } static void -radeon_framebuffer_renderbuffer(GLcontext * ctx, +radeon_framebuffer_renderbuffer(struct gl_context * ctx, struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb) { @@ -410,7 +410,7 @@ radeon_framebuffer_renderbuffer(GLcontext * ctx, } static GLboolean -radeon_update_wrapper(GLcontext *ctx, struct radeon_renderbuffer *rrb, +radeon_update_wrapper(struct gl_context *ctx, struct radeon_renderbuffer *rrb, struct gl_texture_image *texImage) { radeon_print(RADEON_TEXTURE, RADEON_TRACE, @@ -459,7 +459,7 @@ radeon_update_wrapper(GLcontext *ctx, struct radeon_renderbuffer *rrb, static struct radeon_renderbuffer * -radeon_wrap_texture(GLcontext * ctx, struct gl_texture_image *texImage) +radeon_wrap_texture(struct gl_context * ctx, struct gl_texture_image *texImage) { const GLuint name = ~0; /* not significant, but distinct for debugging */ struct radeon_renderbuffer *rrb; @@ -488,7 +488,7 @@ radeon_wrap_texture(GLcontext * ctx, struct gl_texture_image *texImage) } static void -radeon_render_texture(GLcontext * ctx, +radeon_render_texture(struct gl_context * ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att) { @@ -568,13 +568,13 @@ radeon_render_texture(GLcontext * ctx, } static void -radeon_finish_render_texture(GLcontext * ctx, +radeon_finish_render_texture(struct gl_context * ctx, struct gl_renderbuffer_attachment *att) { } static void -radeon_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb) +radeon_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); gl_format mesa_format; diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c b/src/mesa/drivers/dri/radeon/radeon_ioctl.c index d08a82f1a55..a91d8727792 100644 --- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c +++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c @@ -178,7 +178,7 @@ extern void radeonEmitVbufPrim( r100ContextPtr rmesa, #endif } -void radeonFlushElts( GLcontext *ctx ) +void radeonFlushElts( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); BATCH_LOCALS(&rmesa->radeon); @@ -432,7 +432,7 @@ void radeonEmitAOS( r100ContextPtr rmesa, */ #define RADEON_MAX_CLEARS 256 -static void radeonKernelClear(GLcontext *ctx, GLuint flags) +static void radeonKernelClear(struct gl_context *ctx, GLuint flags) { r100ContextPtr rmesa = R100_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -555,7 +555,7 @@ static void radeonKernelClear(GLcontext *ctx, GLuint flags) UNLOCK_HARDWARE( &rmesa->radeon ); } -static void radeonClear( GLcontext *ctx, GLbitfield mask ) +static void radeonClear( struct gl_context *ctx, GLbitfield mask ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -629,7 +629,7 @@ static void radeonClear( GLcontext *ctx, GLbitfield mask ) } } -void radeonInitIoctlFuncs( GLcontext *ctx ) +void radeonInitIoctlFuncs( struct gl_context *ctx ) { ctx->Driver.Clear = radeonClear; ctx->Driver.Finish = radeonFinish; diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.h b/src/mesa/drivers/dri/radeon/radeon_ioctl.h index deb53ae3138..790205719b6 100644 --- a/src/mesa/drivers/dri/radeon/radeon_ioctl.h +++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.h @@ -50,7 +50,7 @@ extern void radeonEmitVbufPrim( r100ContextPtr rmesa, GLuint primitive, GLuint vertex_nr ); -extern void radeonFlushElts( GLcontext *ctx ); +extern void radeonFlushElts( struct gl_context *ctx ); extern GLushort *radeonAllocEltsOpenEnded( r100ContextPtr rmesa, @@ -77,9 +77,9 @@ extern void radeonEmitWait( r100ContextPtr rmesa, GLuint flags ); extern void radeonFlushCmdBuf( r100ContextPtr rmesa, const char * ); -extern void radeonFlush( GLcontext *ctx ); -extern void radeonFinish( GLcontext *ctx ); -extern void radeonInitIoctlFuncs( GLcontext *ctx ); +extern void radeonFlush( struct gl_context *ctx ); +extern void radeonFinish( struct gl_context *ctx ); +extern void radeonInitIoctlFuncs( struct gl_context *ctx ); extern void radeonGetAllParams( r100ContextPtr rmesa ); extern void radeonSetUpAtomList( r100ContextPtr rmesa ); diff --git a/src/mesa/drivers/dri/radeon/radeon_maos.h b/src/mesa/drivers/dri/radeon/radeon_maos.h index b88eb198d57..0feea358151 100644 --- a/src/mesa/drivers/dri/radeon/radeon_maos.h +++ b/src/mesa/drivers/dri/radeon/radeon_maos.h @@ -37,6 +37,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_context.h" -extern void radeonEmitArrays( GLcontext *ctx, GLuint inputs ); +extern void radeonEmitArrays( struct gl_context *ctx, GLuint inputs ); #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c b/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c index d810e6080eb..94fe7e4b9f5 100644 --- a/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c +++ b/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c @@ -48,7 +48,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_maos.h" #include "radeon_tcl.h" -static void emit_vecfog(GLcontext *ctx, struct radeon_aos *aos, +static void emit_vecfog(struct gl_context *ctx, struct radeon_aos *aos, GLvoid *data, int stride, int count) { int i; @@ -121,7 +121,7 @@ static void emit_stq_vec(uint32_t *out, GLvoid *data, int stride, int count) -static void emit_tex_vector(GLcontext *ctx, struct radeon_aos *aos, +static void emit_tex_vector(struct gl_context *ctx, struct radeon_aos *aos, GLvoid *data, int size, int stride, int count) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); @@ -182,7 +182,7 @@ static void emit_tex_vector(GLcontext *ctx, struct radeon_aos *aos, /* Emit any changed arrays to new GART memory, re-emit a packet to * update the arrays. */ -void radeonEmitArrays( GLcontext *ctx, GLuint inputs ) +void radeonEmitArrays( struct gl_context *ctx, GLuint inputs ) { r100ContextPtr rmesa = R100_CONTEXT( ctx ); struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb; diff --git a/src/mesa/drivers/dri/radeon/radeon_maos_vbtmp.h b/src/mesa/drivers/dri/radeon/radeon_maos_vbtmp.h index d764ccb9826..b73fc8abfe2 100644 --- a/src/mesa/drivers/dri/radeon/radeon_maos_vbtmp.h +++ b/src/mesa/drivers/dri/radeon/radeon_maos_vbtmp.h @@ -34,7 +34,7 @@ #define TCL_DEBUG 0 #endif -static void TAG(emit)( GLcontext *ctx, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest ) { diff --git a/src/mesa/drivers/dri/radeon/radeon_maos_verts.c b/src/mesa/drivers/dri/radeon/radeon_maos_verts.c index ad3bc2d23db..5dac2a362b2 100644 --- a/src/mesa/drivers/dri/radeon/radeon_maos_verts.c +++ b/src/mesa/drivers/dri/radeon/radeon_maos_verts.c @@ -54,7 +54,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. union emit_union { float f; GLuint ui; radeon_color_t rgba; }; static struct { - void (*emit)( GLcontext *, GLuint, GLuint, void * ); + void (*emit)( struct gl_context *, GLuint, GLuint, void * ); GLuint vertex_size; GLuint vertex_format; } setup_tab[RADEON_TCL_MAX_SETUP]; @@ -307,7 +307,7 @@ static void init_tcl_verts( void ) } -void radeonEmitArrays( GLcontext *ctx, GLuint inputs ) +void radeonEmitArrays( struct gl_context *ctx, GLuint inputs ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c index ddfde3edaf7..1fadad2756b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c @@ -578,7 +578,7 @@ static radeon_mipmap_tree * get_biggest_matching_miptree(radeonTexObj *texObj, * If individual images are stored in different mipmap trees * use the mipmap tree that has the most of the correct data. */ -int radeon_validate_texture_miptree(GLcontext * ctx, struct gl_texture_object *texObj) +int radeon_validate_texture_miptree(struct gl_context * ctx, struct gl_texture_object *texObj) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); diff --git a/src/mesa/drivers/dri/radeon/radeon_pixel_read.c b/src/mesa/drivers/dri/radeon/radeon_pixel_read.c index 216eb932db0..e44d6f2f8f7 100644 --- a/src/mesa/drivers/dri/radeon/radeon_pixel_read.c +++ b/src/mesa/drivers/dri/radeon/radeon_pixel_read.c @@ -86,7 +86,7 @@ static gl_format gl_format_and_type_to_mesa_format(GLenum format, GLenum type) } static GLboolean -do_blit_readpixels(GLcontext * ctx, +do_blit_readpixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, GLvoid * pixels) @@ -194,7 +194,7 @@ do_blit_readpixels(GLcontext * ctx, } void -radeonReadPixels(GLcontext * ctx, +radeonReadPixels(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, GLvoid * pixels) diff --git a/src/mesa/drivers/dri/radeon/radeon_queryobj.c b/src/mesa/drivers/dri/radeon/radeon_queryobj.c index 5b7178bcca2..a45ca7cad0d 100644 --- a/src/mesa/drivers/dri/radeon/radeon_queryobj.c +++ b/src/mesa/drivers/dri/radeon/radeon_queryobj.c @@ -33,7 +33,7 @@ #include -static void radeonQueryGetResult(GLcontext *ctx, struct gl_query_object *q) +static void radeonQueryGetResult(struct gl_context *ctx, struct gl_query_object *q) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = (struct radeon_query_object *)q; @@ -79,7 +79,7 @@ static void radeonQueryGetResult(GLcontext *ctx, struct gl_query_object *q) radeon_bo_unmap(query->bo); } -static struct gl_query_object * radeonNewQueryObject(GLcontext *ctx, GLuint id) +static struct gl_query_object * radeonNewQueryObject(struct gl_context *ctx, GLuint id) { struct radeon_query_object *query; @@ -95,7 +95,7 @@ static struct gl_query_object * radeonNewQueryObject(GLcontext *ctx, GLuint id) return &query->Base; } -static void radeonDeleteQuery(GLcontext *ctx, struct gl_query_object *q) +static void radeonDeleteQuery(struct gl_context *ctx, struct gl_query_object *q) { struct radeon_query_object *query = (struct radeon_query_object *)q; @@ -108,7 +108,7 @@ static void radeonDeleteQuery(GLcontext *ctx, struct gl_query_object *q) free(query); } -static void radeonWaitQuery(GLcontext *ctx, struct gl_query_object *q) +static void radeonWaitQuery(struct gl_context *ctx, struct gl_query_object *q) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = (struct radeon_query_object *)q; @@ -125,7 +125,7 @@ static void radeonWaitQuery(GLcontext *ctx, struct gl_query_object *q) } -static void radeonBeginQuery(GLcontext *ctx, struct gl_query_object *q) +static void radeonBeginQuery(struct gl_context *ctx, struct gl_query_object *q) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = (struct radeon_query_object *)q; @@ -148,7 +148,7 @@ static void radeonBeginQuery(GLcontext *ctx, struct gl_query_object *q) radeon->hw.is_dirty = GL_TRUE; } -void radeonEmitQueryEnd(GLcontext *ctx) +void radeonEmitQueryEnd(struct gl_context *ctx) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = radeon->query.current; @@ -168,7 +168,7 @@ void radeonEmitQueryEnd(GLcontext *ctx) radeon->vtbl.emit_query_finish(radeon); } -static void radeonEndQuery(GLcontext *ctx, struct gl_query_object *q) +static void radeonEndQuery(struct gl_context *ctx, struct gl_query_object *q) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); @@ -181,7 +181,7 @@ static void radeonEndQuery(GLcontext *ctx, struct gl_query_object *q) radeon->query.current = NULL; } -static void radeonCheckQuery(GLcontext *ctx, struct gl_query_object *q) +static void radeonCheckQuery(struct gl_context *ctx, struct gl_query_object *q) { radeon_print(RADEON_STATE, RADEON_TRACE, "%s: query id %d\n", __FUNCTION__, q->Id); @@ -219,7 +219,7 @@ void radeonInitQueryObjFunctions(struct dd_function_table *functions) functions->WaitQuery = radeonWaitQuery; } -int radeon_check_query_active(GLcontext *ctx, struct radeon_state_atom *atom) +int radeon_check_query_active(struct gl_context *ctx, struct radeon_state_atom *atom) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); struct radeon_query_object *query = radeon->query.current; @@ -229,7 +229,7 @@ int radeon_check_query_active(GLcontext *ctx, struct radeon_state_atom *atom) return atom->cmd_size; } -void radeon_emit_queryobj(GLcontext *ctx, struct radeon_state_atom *atom) +void radeon_emit_queryobj(struct gl_context *ctx, struct radeon_state_atom *atom) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); BATCH_LOCALS(radeon); diff --git a/src/mesa/drivers/dri/radeon/radeon_queryobj.h b/src/mesa/drivers/dri/radeon/radeon_queryobj.h index 19374dc76b7..e5063934824 100644 --- a/src/mesa/drivers/dri/radeon/radeon_queryobj.h +++ b/src/mesa/drivers/dri/radeon/radeon_queryobj.h @@ -29,15 +29,15 @@ #include "main/simple_list.h" #include "radeon_common_context.h" -extern void radeonEmitQueryBegin(GLcontext *ctx); -extern void radeonEmitQueryEnd(GLcontext *ctx); +extern void radeonEmitQueryBegin(struct gl_context *ctx); +extern void radeonEmitQueryEnd(struct gl_context *ctx); extern void radeonInitQueryObjFunctions(struct dd_function_table *functions); #define RADEON_QUERY_PAGE_SIZE 4096 -int radeon_check_query_active(GLcontext *ctx, struct radeon_state_atom *atom); -void radeon_emit_queryobj(GLcontext *ctx, struct radeon_state_atom *atom); +int radeon_check_query_active(struct gl_context *ctx, struct radeon_state_atom *atom); +void radeon_emit_queryobj(struct gl_context *ctx, struct radeon_state_atom *atom); static inline void radeon_init_query_stateobj(radeonContextPtr radeon, int SZ) { diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index 9dfe2dd2433..1c5326fe9dc 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -1015,7 +1015,7 @@ static void map_unmap_rb(struct gl_renderbuffer *rb, int flag) } static void -radeon_map_unmap_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb, +radeon_map_unmap_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLboolean map) { GLuint i, j; @@ -1060,7 +1060,7 @@ radeon_map_unmap_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb, radeon_check_front_buffer_rendering(ctx); } -static void radeonSpanRenderStart(GLcontext * ctx) +static void radeonSpanRenderStart(struct gl_context * ctx) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); int i; @@ -1087,7 +1087,7 @@ static void radeonSpanRenderStart(GLcontext * ctx) radeon_map_unmap_framebuffer(ctx, ctx->ReadBuffer, GL_TRUE); } -static void radeonSpanRenderFinish(GLcontext * ctx) +static void radeonSpanRenderFinish(struct gl_context * ctx) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); int i; @@ -1108,7 +1108,7 @@ static void radeonSpanRenderFinish(GLcontext * ctx) } } -void radeonInitSpanFuncs(GLcontext * ctx) +void radeonInitSpanFuncs(struct gl_context * ctx) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); diff --git a/src/mesa/drivers/dri/radeon/radeon_span.h b/src/mesa/drivers/dri/radeon/radeon_span.h index ea6a2e7fb4e..64517b59237 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.h +++ b/src/mesa/drivers/dri/radeon/radeon_span.h @@ -42,6 +42,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RADEON_SPAN_H__ #define __RADEON_SPAN_H__ -extern void radeonInitSpanFuncs(GLcontext * ctx); +extern void radeonInitSpanFuncs(struct gl_context * ctx); #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_state.c b/src/mesa/drivers/dri/radeon/radeon_state.c index 539b067742f..cae12f192c3 100644 --- a/src/mesa/drivers/dri/radeon/radeon_state.c +++ b/src/mesa/drivers/dri/radeon/radeon_state.c @@ -55,13 +55,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_tex.h" #include "radeon_swtcl.h" -static void radeonUpdateSpecular( GLcontext *ctx ); +static void radeonUpdateSpecular( struct gl_context *ctx ); /* ============================================================= * Alpha blending */ -static void radeonAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) +static void radeonAlphaFunc( struct gl_context *ctx, GLenum func, GLfloat ref ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); int pp_misc = rmesa->hw.ctx.cmd[CTX_PP_MISC]; @@ -104,7 +104,7 @@ static void radeonAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) rmesa->hw.ctx.cmd[CTX_PP_MISC] = pp_misc; } -static void radeonBlendEquationSeparate( GLcontext *ctx, +static void radeonBlendEquationSeparate( struct gl_context *ctx, GLenum modeRGB, GLenum modeA ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -144,7 +144,7 @@ static void radeonBlendEquationSeparate( GLcontext *ctx, } } -static void radeonBlendFuncSeparate( GLcontext *ctx, +static void radeonBlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -256,7 +256,7 @@ static void radeonBlendFuncSeparate( GLcontext *ctx, * Depth testing */ -static void radeonDepthFunc( GLcontext *ctx, GLenum func ) +static void radeonDepthFunc( struct gl_context *ctx, GLenum func ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -292,7 +292,7 @@ static void radeonDepthFunc( GLcontext *ctx, GLenum func ) } -static void radeonDepthMask( GLcontext *ctx, GLboolean flag ) +static void radeonDepthMask( struct gl_context *ctx, GLboolean flag ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); RADEON_STATECHANGE( rmesa, ctx ); @@ -304,7 +304,7 @@ static void radeonDepthMask( GLcontext *ctx, GLboolean flag ) } } -static void radeonClearDepth( GLcontext *ctx, GLclampd d ) +static void radeonClearDepth( struct gl_context *ctx, GLclampd d ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint format = (rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] & @@ -326,7 +326,7 @@ static void radeonClearDepth( GLcontext *ctx, GLclampd d ) */ -static void radeonFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) +static void radeonFogfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); union { int i; float f; } c, d; @@ -411,7 +411,7 @@ static void radeonFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) * Culling */ -static void radeonCullFace( GLcontext *ctx, GLenum unused ) +static void radeonCullFace( struct gl_context *ctx, GLenum unused ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint s = rmesa->hw.set.cmd[SET_SE_CNTL]; @@ -448,7 +448,7 @@ static void radeonCullFace( GLcontext *ctx, GLenum unused ) } } -static void radeonFrontFace( GLcontext *ctx, GLenum mode ) +static void radeonFrontFace( struct gl_context *ctx, GLenum mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -477,7 +477,7 @@ static void radeonFrontFace( GLcontext *ctx, GLenum mode ) /* ============================================================= * Line state */ -static void radeonLineWidth( GLcontext *ctx, GLfloat widthf ) +static void radeonLineWidth( struct gl_context *ctx, GLfloat widthf ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -494,7 +494,7 @@ static void radeonLineWidth( GLcontext *ctx, GLfloat widthf ) } } -static void radeonLineStipple( GLcontext *ctx, GLint factor, GLushort pattern ) +static void radeonLineStipple( struct gl_context *ctx, GLint factor, GLushort pattern ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -507,7 +507,7 @@ static void radeonLineStipple( GLcontext *ctx, GLint factor, GLushort pattern ) /* ============================================================= * Masks */ -static void radeonColorMask( GLcontext *ctx, +static void radeonColorMask( struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -536,7 +536,7 @@ static void radeonColorMask( GLcontext *ctx, * Polygon state */ -static void radeonPolygonOffset( GLcontext *ctx, +static void radeonPolygonOffset( struct gl_context *ctx, GLfloat factor, GLfloat units ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -549,7 +549,7 @@ static void radeonPolygonOffset( GLcontext *ctx, rmesa->hw.zbs.cmd[ZBS_SE_ZBIAS_CONSTANT] = constant.ui32; } -static void radeonPolygonStipplePreKMS( GLcontext *ctx, const GLubyte *mask ) +static void radeonPolygonStipplePreKMS( struct gl_context *ctx, const GLubyte *mask ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint i; @@ -574,7 +574,7 @@ static void radeonPolygonStipplePreKMS( GLcontext *ctx, const GLubyte *mask ) UNLOCK_HARDWARE( &rmesa->radeon ); } -static void radeonPolygonMode( GLcontext *ctx, GLenum face, GLenum mode ) +static void radeonPolygonMode( struct gl_context *ctx, GLenum face, GLenum mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLboolean flag = (ctx->_TriangleCaps & DD_TRI_UNFILLED) != 0; @@ -601,7 +601,7 @@ static void radeonPolygonMode( GLcontext *ctx, GLenum face, GLenum mode ) /* Examine lighting and texture state to determine if separate specular * should be enabled. */ -static void radeonUpdateSpecular( GLcontext *ctx ) +static void radeonUpdateSpecular( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); uint32_t p = rmesa->hw.ctx.cmd[CTX_PP_CNTL]; @@ -689,7 +689,7 @@ static void radeonUpdateSpecular( GLcontext *ctx ) /* Update on colormaterial, material emmissive/ambient, * lightmodel.globalambient */ -static void update_global_ambient( GLcontext *ctx ) +static void update_global_ambient( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); float *fcmd = (float *)RADEON_DB_STATE( glt ); @@ -719,7 +719,7 @@ static void update_global_ambient( GLcontext *ctx ) * - light[p].colors * - light[p].enabled */ -static void update_light_colors( GLcontext *ctx, GLuint p ) +static void update_light_colors( struct gl_context *ctx, GLuint p ) { struct gl_light *l = &ctx->Light.Light[p]; @@ -739,7 +739,7 @@ static void update_light_colors( GLcontext *ctx, GLuint p ) /* Also fallback for asym colormaterial mode in twoside lighting... */ -static void check_twoside_fallback( GLcontext *ctx ) +static void check_twoside_fallback( struct gl_context *ctx ) { GLboolean fallback = GL_FALSE; GLint i; @@ -764,7 +764,7 @@ static void check_twoside_fallback( GLcontext *ctx ) } -static void radeonColorMaterial( GLcontext *ctx, GLenum face, GLenum mode ) +static void radeonColorMaterial( struct gl_context *ctx, GLenum face, GLenum mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint light_model_ctl1 = rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL]; @@ -828,7 +828,7 @@ static void radeonColorMaterial( GLcontext *ctx, GLenum face, GLenum mode ) } } -void radeonUpdateMaterial( GLcontext *ctx ) +void radeonUpdateMaterial( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLfloat (*mat)[4] = ctx->Light.Material.Attrib; @@ -893,7 +893,7 @@ void radeonUpdateMaterial( GLcontext *ctx ) * lighting space (model or eye), hence dependencies on _NEW_MODELVIEW * and _MESA_NEW_NEED_EYE_COORDS. */ -static void update_light( GLcontext *ctx ) +static void update_light( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -957,7 +957,7 @@ static void update_light( GLcontext *ctx ) } } -static void radeonLightfv( GLcontext *ctx, GLenum light, +static void radeonLightfv( struct gl_context *ctx, GLenum light, GLenum pname, const GLfloat *params ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1078,7 +1078,7 @@ static void radeonLightfv( GLcontext *ctx, GLenum light, -static void radeonLightModelfv( GLcontext *ctx, GLenum pname, +static void radeonLightModelfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1120,7 +1120,7 @@ static void radeonLightModelfv( GLcontext *ctx, GLenum pname, } } -static void radeonShadeModel( GLcontext *ctx, GLenum mode ) +static void radeonShadeModel( struct gl_context *ctx, GLenum mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint s = rmesa->hw.set.cmd[SET_SE_CNTL]; @@ -1158,7 +1158,7 @@ static void radeonShadeModel( GLcontext *ctx, GLenum mode ) * User clip planes */ -static void radeonClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) +static void radeonClipPlane( struct gl_context *ctx, GLenum plane, const GLfloat *eq ) { GLint p = (GLint) plane - (GLint) GL_CLIP_PLANE0; r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1171,7 +1171,7 @@ static void radeonClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) rmesa->hw.ucp[p].cmd[UCP_W] = ip[3]; } -static void radeonUpdateClipPlanes( GLcontext *ctx ) +static void radeonUpdateClipPlanes( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint p; @@ -1195,7 +1195,7 @@ static void radeonUpdateClipPlanes( GLcontext *ctx ) */ static void -radeonStencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, +radeonStencilFuncSeparate( struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1240,7 +1240,7 @@ radeonStencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, } static void -radeonStencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) +radeonStencilMaskSeparate( struct gl_context *ctx, GLenum face, GLuint mask ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1250,7 +1250,7 @@ radeonStencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) ((ctx->Stencil.WriteMask[0] & 0xff) << RADEON_STENCIL_WRITEMASK_SHIFT); } -static void radeonStencilOpSeparate( GLcontext *ctx, GLenum face, GLenum fail, +static void radeonStencilOpSeparate( struct gl_context *ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1370,7 +1370,7 @@ static void radeonStencilOpSeparate( GLcontext *ctx, GLenum face, GLenum fail, } } -static void radeonClearStencil( GLcontext *ctx, GLint s ) +static void radeonClearStencil( struct gl_context *ctx, GLint s ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1396,7 +1396,7 @@ static void radeonClearStencil( GLcontext *ctx, GLint s ) * Called when window size or position changes or viewport or depth range * state is changed. We update the hardware viewport state here. */ -void radeonUpdateWindow( GLcontext *ctx ) +void radeonUpdateWindow( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -1433,7 +1433,7 @@ void radeonUpdateWindow( GLcontext *ctx ) } -static void radeonViewport( GLcontext *ctx, GLint x, GLint y, +static void radeonViewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { /* Don't pipeline viewport changes, conflict with window offset @@ -1445,13 +1445,13 @@ static void radeonViewport( GLcontext *ctx, GLint x, GLint y, radeon_viewport(ctx, x, y, width, height); } -static void radeonDepthRange( GLcontext *ctx, GLclampd nearval, +static void radeonDepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { radeonUpdateWindow( ctx ); } -void radeonUpdateViewportOffset( GLcontext *ctx ) +void radeonUpdateViewportOffset( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon); @@ -1507,7 +1507,7 @@ void radeonUpdateViewportOffset( GLcontext *ctx ) * Miscellaneous */ -static void radeonClearColor( GLcontext *ctx, const GLfloat color[4] ) +static void radeonClearColor( struct gl_context *ctx, const GLfloat color[4] ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLubyte c[4]; @@ -1526,7 +1526,7 @@ static void radeonClearColor( GLcontext *ctx, const GLfloat color[4] ) } -static void radeonRenderMode( GLcontext *ctx, GLenum mode ) +static void radeonRenderMode( struct gl_context *ctx, GLenum mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); FALLBACK( rmesa, RADEON_FALLBACK_RENDER_MODE, (mode != GL_RENDER) ); @@ -1552,7 +1552,7 @@ static GLuint radeon_rop_tab[] = { RADEON_ROP_SET, }; -static void radeonLogicOpCode( GLcontext *ctx, GLenum opcode ) +static void radeonLogicOpCode( struct gl_context *ctx, GLenum opcode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint rop = (GLuint)opcode - GL_CLEAR; @@ -1567,7 +1567,7 @@ static void radeonLogicOpCode( GLcontext *ctx, GLenum opcode ) * State enable/disable */ -static void radeonEnable( GLcontext *ctx, GLenum cap, GLboolean state ) +static void radeonEnable( struct gl_context *ctx, GLenum cap, GLboolean state ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint p, flag; @@ -1860,7 +1860,7 @@ static void radeonEnable( GLcontext *ctx, GLenum cap, GLboolean state ) } -static void radeonLightingSpaceChange( GLcontext *ctx ) +static void radeonLightingSpaceChange( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLboolean tmp; @@ -1995,7 +1995,7 @@ static void upload_matrix_t( r100ContextPtr rmesa, GLfloat *src, int idx ) } -static void update_texturematrix( GLcontext *ctx ) +static void update_texturematrix( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT( ctx ); GLuint tpc = rmesa->hw.tcl.cmd[TCL_TEXTURE_PROC_CTL]; @@ -2061,7 +2061,7 @@ static void update_texturematrix( GLcontext *ctx ) } } -static GLboolean r100ValidateBuffers(GLcontext *ctx) +static GLboolean r100ValidateBuffers(struct gl_context *ctx) { r100ContextPtr rmesa = R100_CONTEXT(ctx); struct radeon_renderbuffer *rrb; @@ -2105,7 +2105,7 @@ static GLboolean r100ValidateBuffers(GLcontext *ctx) return GL_TRUE; } -GLboolean radeonValidateState( GLcontext *ctx ) +GLboolean radeonValidateState( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint new_state = rmesa->radeon.NewGLState; @@ -2163,7 +2163,7 @@ GLboolean radeonValidateState( GLcontext *ctx ) } -static void radeonInvalidateState( GLcontext *ctx, GLuint new_state ) +static void radeonInvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -2176,7 +2176,7 @@ static void radeonInvalidateState( GLcontext *ctx, GLuint new_state ) /* A hack. Need a faster way to find this out. */ -static GLboolean check_material( GLcontext *ctx ) +static GLboolean check_material( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); GLint i; @@ -2192,7 +2192,7 @@ static GLboolean check_material( GLcontext *ctx ) } -static void radeonWrapRunPipeline( GLcontext *ctx ) +static void radeonWrapRunPipeline( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLboolean has_material; @@ -2221,7 +2221,7 @@ static void radeonWrapRunPipeline( GLcontext *ctx ) } } -static void radeonPolygonStipple( GLcontext *ctx, const GLubyte *mask ) +static void radeonPolygonStipple( struct gl_context *ctx, const GLubyte *mask ) { r100ContextPtr r100 = R100_CONTEXT(ctx); GLint i; @@ -2242,7 +2242,7 @@ static void radeonPolygonStipple( GLcontext *ctx, const GLubyte *mask ) * Many of the ctx->Driver functions might have been initialized to * software defaults in the earlier _mesa_init_driver_functions() call. */ -void radeonInitStateFuncs( GLcontext *ctx , GLboolean dri2 ) +void radeonInitStateFuncs( struct gl_context *ctx , GLboolean dri2 ) { ctx->Driver.UpdateState = radeonInvalidateState; ctx->Driver.LightingSpaceChange = radeonLightingSpaceChange; diff --git a/src/mesa/drivers/dri/radeon/radeon_state.h b/src/mesa/drivers/dri/radeon/radeon_state.h index c780cff0cfb..9a011e11b22 100644 --- a/src/mesa/drivers/dri/radeon/radeon_state.h +++ b/src/mesa/drivers/dri/radeon/radeon_state.h @@ -40,20 +40,20 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_context.h" extern void radeonInitState( r100ContextPtr rmesa ); -extern void radeonInitStateFuncs( GLcontext *ctx , GLboolean dri2); +extern void radeonInitStateFuncs( struct gl_context *ctx , GLboolean dri2); -extern void radeonUpdateMaterial( GLcontext *ctx ); +extern void radeonUpdateMaterial( struct gl_context *ctx ); -extern void radeonUpdateViewportOffset( GLcontext *ctx ); -extern void radeonUpdateWindow( GLcontext *ctx ); -extern void radeonUpdateDrawBuffer( GLcontext *ctx ); +extern void radeonUpdateViewportOffset( struct gl_context *ctx ); +extern void radeonUpdateWindow( struct gl_context *ctx ); +extern void radeonUpdateDrawBuffer( struct gl_context *ctx ); extern void radeonUploadTexMatrix( r100ContextPtr rmesa, int unit, GLboolean swapcols ); -extern GLboolean radeonValidateState( GLcontext *ctx ); +extern GLboolean radeonValidateState( struct gl_context *ctx ); -extern void radeonFallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void radeonFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( rmesa, bit, mode ) do { \ if ( 0 ) fprintf( stderr, "FALLBACK in %s: #%d=%d\n", \ __FUNCTION__, bit, mode ); \ diff --git a/src/mesa/drivers/dri/radeon/radeon_state_init.c b/src/mesa/drivers/dri/radeon/radeon_state_init.c index 91718a47774..698efb145c0 100644 --- a/src/mesa/drivers/dri/radeon/radeon_state_init.c +++ b/src/mesa/drivers/dri/radeon/radeon_state_init.c @@ -195,13 +195,13 @@ static int cmdscl( int offset, int stride, int count ) } #define CHECK( NM, FLAG, ADD ) \ -static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \ +static int check_##NM( struct gl_context *ctx, struct radeon_state_atom *atom ) \ { \ return FLAG ? atom->cmd_size + (ADD) : 0; \ } #define TCL_CHECK( NM, FLAG, ADD ) \ -static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \ +static int check_##NM( struct gl_context *ctx, struct radeon_state_atom *atom ) \ { \ r100ContextPtr rmesa = R100_CONTEXT(ctx); \ return (!rmesa->radeon.TclFallback && (FLAG)) ? atom->cmd_size + (ADD) : 0; \ @@ -294,7 +294,7 @@ CHECK( txr2, (ctx->Texture.Unit[2]._ReallyEnabled & TEXTURE_RECT_BIT), 0 ) OUT_BATCH_TABLE((data), h.scalars.count); \ } while(0) -static void scl_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void scl_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -306,7 +306,7 @@ static void scl_emit(GLcontext *ctx, struct radeon_state_atom *atom) } -static void vec_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void vec_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -318,7 +318,7 @@ static void vec_emit(GLcontext *ctx, struct radeon_state_atom *atom) } -static void lit_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void lit_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -330,7 +330,7 @@ static void lit_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void ctx_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void ctx_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -395,7 +395,7 @@ static void ctx_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static int check_always_ctx( GLcontext *ctx, struct radeon_state_atom *atom) +static int check_always_ctx( struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); struct radeon_renderbuffer *rrb, *drb; @@ -417,7 +417,7 @@ static int check_always_ctx( GLcontext *ctx, struct radeon_state_atom *atom) return dwords; } -static void ctx_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) +static void ctx_emit_cs(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -512,7 +512,7 @@ static void ctx_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void cube_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void cube_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -540,7 +540,7 @@ static void cube_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void cube_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) +static void cube_emit_cs(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -576,7 +576,7 @@ static void cube_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void tex_emit(GLcontext *ctx, struct radeon_state_atom *atom) +static void tex_emit(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -611,7 +611,7 @@ static void tex_emit(GLcontext *ctx, struct radeon_state_atom *atom) END_BATCH(); } -static void tex_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) +static void tex_emit_cs(struct gl_context *ctx, struct radeon_state_atom *atom) { r100ContextPtr r100 = R100_CONTEXT(ctx); BATCH_LOCALS(&r100->radeon); @@ -666,7 +666,7 @@ static void tex_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom) */ void radeonInitState( r100ContextPtr rmesa ) { - GLcontext *ctx = rmesa->radeon.glCtx; + struct gl_context *ctx = rmesa->radeon.glCtx; GLuint i; rmesa->radeon.state.color.clear = 0x00000000; diff --git a/src/mesa/drivers/dri/radeon/radeon_swtcl.c b/src/mesa/drivers/dri/radeon/radeon_swtcl.c index 29defe73a70..f5b0df6ef51 100644 --- a/src/mesa/drivers/dri/radeon/radeon_swtcl.c +++ b/src/mesa/drivers/dri/radeon/radeon_swtcl.c @@ -87,7 +87,7 @@ static GLuint radeon_cp_vc_frmts[3][2] = { RADEON_CP_VC_FRMT_ST2, RADEON_CP_VC_FRMT_ST2 | RADEON_CP_VC_FRMT_Q2 }, }; -static void radeonSetVertexFormat( GLcontext *ctx ) +static void radeonSetVertexFormat( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT( ctx ); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -243,7 +243,7 @@ static void radeon_predict_emit_size( r100ContextPtr rmesa ) } } -static void radeonRenderStart( GLcontext *ctx ) +static void radeonRenderStart( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT( ctx ); @@ -260,7 +260,7 @@ static void radeonRenderStart( GLcontext *ctx ) * determine in advance whether or not the hardware can / should do the * projection divide or Mesa should do it. */ -void radeonChooseVertexState( GLcontext *ctx ) +void radeonChooseVertexState( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT( ctx ); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -302,7 +302,7 @@ void radeonChooseVertexState( GLcontext *ctx ) } } -void r100_swtcl_flush(GLcontext *ctx, uint32_t current_offset) +void r100_swtcl_flush(struct gl_context *ctx, uint32_t current_offset) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -398,7 +398,7 @@ static void* radeon_alloc_verts( r100ContextPtr rmesa , GLuint nr, GLuint size ) /**********************************************************************/ -static GLboolean radeon_run_render( GLcontext *ctx, +static GLboolean radeon_run_render( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -467,9 +467,9 @@ static const GLuint reduced_hw_prim[GL_POLYGON+1] = { RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_LIST }; -static void radeonRasterPrimitive( GLcontext *ctx, GLuint hwprim ); -static void radeonRenderPrimitive( GLcontext *ctx, GLenum prim ); -static void radeonResetLineStipple( GLcontext *ctx ); +static void radeonRasterPrimitive( struct gl_context *ctx, GLuint hwprim ); +static void radeonRenderPrimitive( struct gl_context *ctx, GLenum prim ); +static void radeonResetLineStipple( struct gl_context *ctx ); /*********************************************************************** @@ -678,7 +678,7 @@ static void init_rast_tab( void ) /* Choose render functions */ /**********************************************************************/ -void radeonChooseRenderState( GLcontext *ctx ) +void radeonChooseRenderState( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -718,7 +718,7 @@ void radeonChooseRenderState( GLcontext *ctx ) /**********************************************************************/ -static void radeonRasterPrimitive( GLcontext *ctx, GLuint hwprim ) +static void radeonRasterPrimitive( struct gl_context *ctx, GLuint hwprim ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -728,7 +728,7 @@ static void radeonRasterPrimitive( GLcontext *ctx, GLuint hwprim ) } } -static void radeonRenderPrimitive( GLcontext *ctx, GLenum prim ) +static void radeonRenderPrimitive( struct gl_context *ctx, GLenum prim ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); rmesa->radeon.swtcl.render_primitive = prim; @@ -736,11 +736,11 @@ static void radeonRenderPrimitive( GLcontext *ctx, GLenum prim ) radeonRasterPrimitive( ctx, reduced_hw_prim[prim] ); } -static void radeonRenderFinish( GLcontext *ctx ) +static void radeonRenderFinish( struct gl_context *ctx ) { } -static void radeonResetLineStipple( GLcontext *ctx ) +static void radeonResetLineStipple( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); RADEON_STATECHANGE( rmesa, lin ); @@ -774,7 +774,7 @@ static const char *getFallbackString(GLuint bit) } -void radeonFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void radeonFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -831,7 +831,7 @@ void radeonFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) /* Initialization. */ /**********************************************************************/ -void radeonInitSwtcl( GLcontext *ctx ) +void radeonInitSwtcl( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); r100ContextPtr rmesa = R100_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/radeon/radeon_swtcl.h b/src/mesa/drivers/dri/radeon/radeon_swtcl.h index da89158eeb9..ce2aa1e4c36 100644 --- a/src/mesa/drivers/dri/radeon/radeon_swtcl.h +++ b/src/mesa/drivers/dri/radeon/radeon_swtcl.h @@ -39,28 +39,28 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "swrast/swrast.h" #include "radeon_context.h" -extern void radeonInitSwtcl( GLcontext *ctx ); +extern void radeonInitSwtcl( struct gl_context *ctx ); -extern void radeonChooseRenderState( GLcontext *ctx ); -extern void radeonChooseVertexState( GLcontext *ctx ); +extern void radeonChooseRenderState( struct gl_context *ctx ); +extern void radeonChooseVertexState( struct gl_context *ctx ); -extern void radeonCheckTexSizes( GLcontext *ctx ); +extern void radeonCheckTexSizes( struct gl_context *ctx ); -extern void radeonBuildVertices( GLcontext *ctx, GLuint start, GLuint count, +extern void radeonBuildVertices( struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ); extern void radeonPrintSetupFlags(char *msg, GLuint flags ); -extern void radeon_emit_indexed_verts( GLcontext *ctx, +extern void radeon_emit_indexed_verts( struct gl_context *ctx, GLuint start, GLuint count ); -extern void radeon_translate_vertex( GLcontext *ctx, +extern void radeon_translate_vertex( struct gl_context *ctx, const radeonVertex *src, SWvertex *dst ); -extern void radeon_print_vertex( GLcontext *ctx, const radeonVertex *v ); +extern void radeon_print_vertex( struct gl_context *ctx, const radeonVertex *v ); -extern void r100_swtcl_flush(GLcontext *ctx, uint32_t current_offset); +extern void r100_swtcl_flush(struct gl_context *ctx, uint32_t current_offset); #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_tcl.c b/src/mesa/drivers/dri/radeon/radeon_tcl.c index 5e1718f9dfc..c59b413012c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tcl.c +++ b/src/mesa/drivers/dri/radeon/radeon_tcl.c @@ -164,7 +164,7 @@ static GLushort *radeonAllocElts( r100ContextPtr rmesa, GLuint nr ) * discrete and there are no intervening state changes. (Somewhat * duplicates changes to DrawArrays code) */ -static void radeonEmitPrim( GLcontext *ctx, +static void radeonEmitPrim( struct gl_context *ctx, GLenum prim, GLuint hwprim, GLuint start, @@ -228,7 +228,7 @@ static void radeonEmitPrim( GLcontext *ctx, /* External entrypoints */ /**********************************************************************/ -void radeonEmitPrimitive( GLcontext *ctx, +void radeonEmitPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ) @@ -236,7 +236,7 @@ void radeonEmitPrimitive( GLcontext *ctx, tcl_render_tab_verts[flags&PRIM_MODE_MASK]( ctx, first, last, flags ); } -void radeonEmitEltPrimitive( GLcontext *ctx, +void radeonEmitEltPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ) @@ -244,7 +244,7 @@ void radeonEmitEltPrimitive( GLcontext *ctx, tcl_render_tab_elts[flags&PRIM_MODE_MASK]( ctx, first, last, flags ); } -void radeonTclPrimitive( GLcontext *ctx, +void radeonTclPrimitive( struct gl_context *ctx, GLenum prim, int hw_prim ) { @@ -326,7 +326,7 @@ radeonInitStaticFogData( void ) * Fog blend factors are in the range [0,1]. */ float -radeonComputeFogBlendFactor( GLcontext *ctx, GLfloat fogcoord ) +radeonComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord ) { GLfloat end = ctx->Fog.End; GLfloat d, temp; @@ -361,7 +361,7 @@ radeonComputeFogBlendFactor( GLcontext *ctx, GLfloat fogcoord ) * Predict total emit size for next rendering operation so there is no flush in middle of rendering * Prediction has to aim towards the best possible value that is worse than worst case scenario */ -static GLuint radeonEnsureEmitSize( GLcontext * ctx , GLuint inputs ) +static GLuint radeonEnsureEmitSize( struct gl_context * ctx , GLuint inputs ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -432,7 +432,7 @@ static GLuint radeonEnsureEmitSize( GLcontext * ctx , GLuint inputs ) /* TCL render. */ -static GLboolean radeon_run_tcl_render( GLcontext *ctx, +static GLboolean radeon_run_tcl_render( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -529,7 +529,7 @@ const struct tnl_pipeline_stage _radeon_tcl_stage = */ -static void transition_to_swtnl( GLcontext *ctx ) +static void transition_to_swtnl( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -558,7 +558,7 @@ static void transition_to_swtnl( GLcontext *ctx ) } -static void transition_to_hwtnl( GLcontext *ctx ) +static void transition_to_hwtnl( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -618,7 +618,7 @@ static char *getFallbackString(GLuint bit) -void radeonTclFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void radeonTclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint oldfallback = rmesa->radeon.TclFallback; diff --git a/src/mesa/drivers/dri/radeon/radeon_tcl.h b/src/mesa/drivers/dri/radeon/radeon_tcl.h index dccbea5fdbd..cf19766b9f2 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tcl.h +++ b/src/mesa/drivers/dri/radeon/radeon_tcl.h @@ -38,16 +38,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_context.h" -extern void radeonTclPrimitive( GLcontext *ctx, GLenum prim, int hw_prim ); -extern void radeonEmitEltPrimitive( GLcontext *ctx, GLuint first, GLuint last, +extern void radeonTclPrimitive( struct gl_context *ctx, GLenum prim, int hw_prim ); +extern void radeonEmitEltPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ); -extern void radeonEmitPrimitive( GLcontext *ctx, GLuint first, GLuint last, +extern void radeonEmitPrimitive( struct gl_context *ctx, GLuint first, GLuint last, GLuint flags ); -extern void radeonTclFallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void radeonTclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); extern void radeonInitStaticFogData( void ); -extern float radeonComputeFogBlendFactor( GLcontext *ctx, GLfloat fogcoord ); +extern float radeonComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord ); #define RADEON_TCL_FALLBACK_RASTER 0x1 /* rasterization */ #define RADEON_TCL_FALLBACK_UNFILLED 0x2 /* unfilled tris */ diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c index c66e5d17b12..d5285e24cd5 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex.c @@ -253,7 +253,7 @@ static void radeonSetTexBorderColor( radeonTexObjPtr t, const GLfloat color[4] ) #define SCALED_FLOAT_TO_BYTE( x, scale ) \ (((GLuint)((255.0F / scale) * (x))) / 2) -static void radeonTexEnv( GLcontext *ctx, GLenum target, +static void radeonTexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -316,7 +316,7 @@ static void radeonTexEnv( GLcontext *ctx, GLenum target, * next UpdateTextureState */ -static void radeonTexParameter( GLcontext *ctx, GLenum target, +static void radeonTexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat *params ) { @@ -354,7 +354,7 @@ static void radeonTexParameter( GLcontext *ctx, GLenum target, } } -static void radeonDeleteTexture( GLcontext *ctx, +static void radeonDeleteTexture( struct gl_context *ctx, struct gl_texture_object *texObj ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -392,7 +392,7 @@ static void radeonDeleteTexture( GLcontext *ctx, * Basically impossible to do this on the fly - just collect some * basic info & do the checks from ValidateState(). */ -static void radeonTexGen( GLcontext *ctx, +static void radeonTexGen( struct gl_context *ctx, GLenum coord, GLenum pname, const GLfloat *params ) @@ -409,7 +409,7 @@ static void radeonTexGen( GLcontext *ctx, * texture object from the core mesa gl_texture_object. Not done at this time. */ static struct gl_texture_object * -radeonNewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); radeonTexObj* t = CALLOC_STRUCT(radeon_tex_obj); diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.h b/src/mesa/drivers/dri/radeon/radeon_tex.h index 0113ffd3dac..05729f1e0b6 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex.h +++ b/src/mesa/drivers/dri/radeon/radeon_tex.h @@ -45,7 +45,7 @@ extern void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawabl extern void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format, __DRIdrawable *dPriv); -extern void radeonUpdateTextureState( GLcontext *ctx ); +extern void radeonUpdateTextureState( struct gl_context *ctx ); extern int radeonUploadTexImages( r100ContextPtr rmesa, radeonTexObjPtr t, GLuint face ); diff --git a/src/mesa/drivers/dri/radeon/radeon_tex_copy.c b/src/mesa/drivers/dri/radeon/radeon_tex_copy.c index 4cb0bb60c85..f14dfa25d40 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex_copy.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex_copy.c @@ -37,7 +37,7 @@ #include "radeon_mipmap_tree.h" static GLboolean -do_copy_texsubimage(GLcontext *ctx, +do_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level, struct radeon_tex_obj *tobj, radeon_texture_image *timg, @@ -141,7 +141,7 @@ do_copy_texsubimage(GLcontext *ctx, } void -radeonCopyTexImage2D(GLcontext *ctx, GLenum target, GLint level, +radeonCopyTexImage2D(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) @@ -196,7 +196,7 @@ fail: } void -radeonCopyTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, +radeonCopyTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) diff --git a/src/mesa/drivers/dri/radeon/radeon_tex_getimage.c b/src/mesa/drivers/dri/radeon/radeon_tex_getimage.c index f878b48e5f9..4a73089ce19 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex_getimage.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex_getimage.c @@ -40,7 +40,7 @@ * then unmap it. */ static void -radeon_get_tex_image(GLcontext * ctx, GLenum target, GLint level, +radeon_get_tex_image(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage, int compressed) @@ -83,7 +83,7 @@ radeon_get_tex_image(GLcontext * ctx, GLenum target, GLint level, } void -radeonGetTexImage(GLcontext * ctx, GLenum target, GLint level, +radeonGetTexImage(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -93,7 +93,7 @@ radeonGetTexImage(GLcontext * ctx, GLenum target, GLint level, } void -radeonGetCompressedTexImage(GLcontext *ctx, GLenum target, GLint level, +radeonGetCompressedTexImage(struct gl_context *ctx, GLenum target, GLint level, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) diff --git a/src/mesa/drivers/dri/radeon/radeon_texstate.c b/src/mesa/drivers/dri/radeon/radeon_texstate.c index f852116deeb..dd8ecdd500a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texstate.c +++ b/src/mesa/drivers/dri/radeon/radeon_texstate.c @@ -260,7 +260,7 @@ do { \ * Texture unit state management */ -static GLboolean radeonUpdateTextureEnv( GLcontext *ctx, int unit ) +static GLboolean radeonUpdateTextureEnv( struct gl_context *ctx, int unit ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -885,7 +885,7 @@ static void set_texgen_matrix( r100ContextPtr rmesa, /* Returns GL_FALSE if fallback required. */ -static GLboolean radeon_validate_texgen( GLcontext *ctx, GLuint unit ) +static GLboolean radeon_validate_texgen( struct gl_context *ctx, GLuint unit ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -1085,7 +1085,7 @@ static GLboolean setup_hardware_state(r100ContextPtr rmesa, radeonTexObj *t, int return GL_TRUE; } -static GLboolean radeon_validate_texture(GLcontext *ctx, struct gl_texture_object *texObj, int unit) +static GLboolean radeon_validate_texture(struct gl_context *ctx, struct gl_texture_object *texObj, int unit) { r100ContextPtr rmesa = R100_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); @@ -1128,7 +1128,7 @@ static GLboolean radeon_validate_texture(GLcontext *ctx, struct gl_texture_objec return !t->border_fallback; } -static GLboolean radeonUpdateTextureUnit( GLcontext *ctx, int unit ) +static GLboolean radeonUpdateTextureUnit( struct gl_context *ctx, int unit ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); @@ -1155,7 +1155,7 @@ static GLboolean radeonUpdateTextureUnit( GLcontext *ctx, int unit ) return GL_TRUE; } -void radeonUpdateTextureState( GLcontext *ctx ) +void radeonUpdateTextureState( struct gl_context *ctx ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLboolean ok; diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c index d1ebd83550d..18ccb512d7a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texture.c +++ b/src/mesa/drivers/dri/radeon/radeon_texture.c @@ -76,7 +76,7 @@ void copy_rows(void* dst, GLuint dststride, const void* src, GLuint srcstride, /** * Allocate an empty texture image object. */ -struct gl_texture_image *radeonNewTextureImage(GLcontext *ctx) +struct gl_texture_image *radeonNewTextureImage(struct gl_context *ctx) { return CALLOC(sizeof(radeon_texture_image)); } @@ -84,7 +84,7 @@ struct gl_texture_image *radeonNewTextureImage(GLcontext *ctx) /** * Free memory associated with this texture image. */ -void radeonFreeTexImageData(GLcontext *ctx, struct gl_texture_image *timage) +void radeonFreeTexImageData(struct gl_context *ctx, struct gl_texture_image *timage) { radeon_texture_image* image = get_radeon_texture_image(timage); @@ -154,7 +154,7 @@ void radeon_teximage_unmap(radeon_texture_image *image) } } -static void map_override(GLcontext *ctx, radeonTexObj *t) +static void map_override(struct gl_context *ctx, radeonTexObj *t) { radeon_texture_image *img = get_radeon_texture_image(t->base.Image[0][0]); @@ -163,7 +163,7 @@ static void map_override(GLcontext *ctx, radeonTexObj *t) img->base.Data = t->bo->ptr; } -static void unmap_override(GLcontext *ctx, radeonTexObj *t) +static void unmap_override(struct gl_context *ctx, radeonTexObj *t) { radeon_texture_image *img = get_radeon_texture_image(t->base.Image[0][0]); @@ -175,7 +175,7 @@ static void unmap_override(GLcontext *ctx, radeonTexObj *t) /** * Map a validated texture for reading during software rendering. */ -void radeonMapTexture(GLcontext *ctx, struct gl_texture_object *texObj) +void radeonMapTexture(struct gl_context *ctx, struct gl_texture_object *texObj) { radeonTexObj* t = radeon_tex_obj(texObj); int face, level; @@ -213,7 +213,7 @@ void radeonMapTexture(GLcontext *ctx, struct gl_texture_object *texObj) } } -void radeonUnmapTexture(GLcontext *ctx, struct gl_texture_object *texObj) +void radeonUnmapTexture(struct gl_context *ctx, struct gl_texture_object *texObj) { radeonTexObj* t = radeon_tex_obj(texObj); int face, level; @@ -241,7 +241,7 @@ void radeonUnmapTexture(GLcontext *ctx, struct gl_texture_object *texObj) * This relies on internal details of _mesa_generate_mipmap, in particular * the fact that the memory for recreated texture images is always freed. */ -static void radeon_generate_mipmap(GLcontext *ctx, GLenum target, +static void radeon_generate_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { radeonTexObj* t = radeon_tex_obj(texObj); @@ -273,7 +273,7 @@ static void radeon_generate_mipmap(GLcontext *ctx, GLenum target, } -void radeonGenerateMipmap(GLcontext* ctx, GLenum target, struct gl_texture_object *texObj) +void radeonGenerateMipmap(struct gl_context* ctx, GLenum target, struct gl_texture_object *texObj) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); struct radeon_bo *bo; @@ -338,7 +338,7 @@ static gl_format radeonChoose8888TexFormat(radeonContextPtr rmesa, return _dri_texformat_argb8888; } -gl_format radeonChooseTextureFormat_mesa(GLcontext * ctx, +gl_format radeonChooseTextureFormat_mesa(struct gl_context * ctx, GLint internalFormat, GLenum format, GLenum type) @@ -347,7 +347,7 @@ gl_format radeonChooseTextureFormat_mesa(GLcontext * ctx, type, 0); } -gl_format radeonChooseTextureFormat(GLcontext * ctx, +gl_format radeonChooseTextureFormat(struct gl_context * ctx, GLint internalFormat, GLenum format, GLenum type, GLboolean fbo) @@ -641,7 +641,7 @@ static void teximage_assign_miptree(radeonContextPtr rmesa, "%s Failed to allocate miptree.\n", __func__); } -static GLuint * allocate_image_offsets(GLcontext *ctx, +static GLuint * allocate_image_offsets(struct gl_context *ctx, unsigned alignedWidth, unsigned height, unsigned depth) @@ -665,7 +665,7 @@ static GLuint * allocate_image_offsets(GLcontext *ctx, /** * Update a subregion of the given texture image. */ -static void radeon_store_teximage(GLcontext* ctx, int dims, +static void radeon_store_teximage(struct gl_context* ctx, int dims, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, @@ -758,7 +758,7 @@ static void radeon_store_teximage(GLcontext* ctx, int dims, * All glTexImage calls go through this function. */ static void radeon_teximage( - GLcontext *ctx, int dims, + struct gl_context *ctx, int dims, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, @@ -833,7 +833,7 @@ static void radeon_teximage( _mesa_unmap_teximage_pbo(ctx, packing); } -void radeonTexImage1D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid * pixels, @@ -845,7 +845,7 @@ void radeonTexImage1D(GLcontext * ctx, GLenum target, GLint level, 0, format, type, pixels, packing, texObj, texImage, 0); } -void radeonTexImage2D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid * pixels, @@ -858,7 +858,7 @@ void radeonTexImage2D(GLcontext * ctx, GLenum target, GLint level, 0, format, type, pixels, packing, texObj, texImage, 0); } -void radeonCompressedTexImage2D(GLcontext * ctx, GLenum target, +void radeonCompressedTexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid * data, @@ -869,7 +869,7 @@ void radeonCompressedTexImage2D(GLcontext * ctx, GLenum target, imageSize, 0, 0, data, &ctx->Unpack, texObj, texImage, 1); } -void radeonTexImage3D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, @@ -885,7 +885,7 @@ void radeonTexImage3D(GLcontext * ctx, GLenum target, GLint level, /** * All glTexSubImage calls go through this function. */ -static void radeon_texsubimage(GLcontext* ctx, int dims, GLenum target, int level, +static void radeon_texsubimage(struct gl_context* ctx, int dims, GLenum target, int level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, @@ -939,7 +939,7 @@ static void radeon_texsubimage(GLcontext* ctx, int dims, GLenum target, int leve _mesa_unmap_teximage_pbo(ctx, packing); } -void radeonTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, @@ -952,7 +952,7 @@ void radeonTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, format, type, pixels, packing, texObj, texImage, 0); } -void radeonTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -966,7 +966,7 @@ void radeonTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, 0); } -void radeonCompressedTexSubImage2D(GLcontext * ctx, GLenum target, +void radeonCompressedTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, @@ -979,7 +979,7 @@ void radeonCompressedTexSubImage2D(GLcontext * ctx, GLenum target, } -void radeonTexSubImage3D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexSubImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.h b/src/mesa/drivers/dri/radeon/radeon_texture.h index 4ce639ea34e..9138a7d5548 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texture.h +++ b/src/mesa/drivers/dri/radeon/radeon_texture.h @@ -35,47 +35,47 @@ void copy_rows(void* dst, GLuint dststride, const void* src, GLuint srcstride, GLuint numrows, GLuint rowsize); -struct gl_texture_image *radeonNewTextureImage(GLcontext *ctx); -void radeonFreeTexImageData(GLcontext *ctx, struct gl_texture_image *timage); +struct gl_texture_image *radeonNewTextureImage(struct gl_context *ctx); +void radeonFreeTexImageData(struct gl_context *ctx, struct gl_texture_image *timage); void radeon_teximage_map(radeon_texture_image *image, GLboolean write_enable); void radeon_teximage_unmap(radeon_texture_image *image); -void radeonMapTexture(GLcontext *ctx, struct gl_texture_object *texObj); -void radeonUnmapTexture(GLcontext *ctx, struct gl_texture_object *texObj); -void radeonGenerateMipmap(GLcontext* ctx, GLenum target, struct gl_texture_object *texObj); -int radeon_validate_texture_miptree(GLcontext * ctx, struct gl_texture_object *texObj); +void radeonMapTexture(struct gl_context *ctx, struct gl_texture_object *texObj); +void radeonUnmapTexture(struct gl_context *ctx, struct gl_texture_object *texObj); +void radeonGenerateMipmap(struct gl_context* ctx, GLenum target, struct gl_texture_object *texObj); +int radeon_validate_texture_miptree(struct gl_context * ctx, struct gl_texture_object *texObj); -gl_format radeonChooseTextureFormat_mesa(GLcontext * ctx, +gl_format radeonChooseTextureFormat_mesa(struct gl_context * ctx, GLint internalFormat, GLenum format, GLenum type); -gl_format radeonChooseTextureFormat(GLcontext * ctx, +gl_format radeonChooseTextureFormat(struct gl_context * ctx, GLint internalFormat, GLenum format, GLenum type, GLboolean fbo); -void radeonTexImage1D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonTexImage2D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonCompressedTexImage2D(GLcontext * ctx, GLenum target, +void radeonCompressedTexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid * data, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonTexImage3D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, @@ -83,7 +83,7 @@ void radeonTexImage3D(GLcontext * ctx, GLenum target, GLint level, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, @@ -91,7 +91,7 @@ void radeonTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -99,7 +99,7 @@ void radeonTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonCompressedTexSubImage2D(GLcontext * ctx, GLenum target, +void radeonCompressedTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, @@ -107,7 +107,7 @@ void radeonCompressedTexSubImage2D(GLcontext * ctx, GLenum target, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonTexSubImage3D(GLcontext * ctx, GLenum target, GLint level, +void radeonTexSubImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, @@ -116,21 +116,21 @@ void radeonTexSubImage3D(GLcontext * ctx, GLenum target, GLint level, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonGetTexImage(GLcontext * ctx, GLenum target, GLint level, +void radeonGetTexImage(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonGetCompressedTexImage(GLcontext *ctx, GLenum target, GLint level, +void radeonGetCompressedTexImage(struct gl_context *ctx, GLenum target, GLint level, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void radeonCopyTexImage2D(GLcontext *ctx, GLenum target, GLint level, +void radeonCopyTexImage2D(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -void radeonCopyTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, +void radeonCopyTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index a8ba0334111..b3aaa0e504e 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -291,7 +291,7 @@ savageCreateContext( gl_api api, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; savageContextPtr imesa; __DRIscreen *sPriv = driContextPriv->driScreenPriv; struct dd_function_table functions; diff --git a/src/mesa/drivers/dri/savage/savagecontext.h b/src/mesa/drivers/dri/savage/savagecontext.h index 6723456ec98..75bec62fa84 100644 --- a/src/mesa/drivers/dri/savage/savagecontext.h +++ b/src/mesa/drivers/dri/savage/savagecontext.h @@ -148,7 +148,7 @@ struct savage_elt_t { struct savage_context_t { GLint refcount; - GLcontext *glCtx; + struct gl_context *glCtx; int lastTexHeap; driTexHeap *textureHeaps[SAVAGE_NR_TEX_HEAPS]; diff --git a/src/mesa/drivers/dri/savage/savagedd.c b/src/mesa/drivers/dri/savage/savagedd.c index bbf49aec272..3f8d7aafb08 100644 --- a/src/mesa/drivers/dri/savage/savagedd.c +++ b/src/mesa/drivers/dri/savage/savagedd.c @@ -45,7 +45,7 @@ ***************************************/ -static const GLubyte *savageDDGetString( GLcontext *ctx, GLenum name ) +static const GLubyte *savageDDGetString( struct gl_context *ctx, GLenum name ) { static char *cardNames[S3_LAST] = { "Unknown", @@ -79,7 +79,7 @@ static const GLubyte *savageDDGetString( GLcontext *ctx, GLenum name ) } } #if 0 -static GLint savageGetParameteri(const GLcontext *ctx, GLint param) +static GLint savageGetParameteri(const struct gl_context *ctx, GLint param) { switch (param) { case DD_HAVE_HARDWARE_FOG: @@ -91,7 +91,7 @@ static GLint savageGetParameteri(const GLcontext *ctx, GLint param) #endif -void savageDDInitDriverFuncs( GLcontext *ctx ) +void savageDDInitDriverFuncs( struct gl_context *ctx ) { ctx->Driver.GetString = savageDDGetString; } diff --git a/src/mesa/drivers/dri/savage/savagedd.h b/src/mesa/drivers/dri/savage/savagedd.h index 698a8d5de92..c5261412999 100644 --- a/src/mesa/drivers/dri/savage/savagedd.h +++ b/src/mesa/drivers/dri/savage/savagedd.h @@ -28,5 +28,5 @@ #include "main/context.h" -void savageDDInitDriverFuncs( GLcontext *ctx ); +void savageDDInitDriverFuncs( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/savage/savageioctl.c b/src/mesa/drivers/dri/savage/savageioctl.c index 9e181ce3be9..46bbb653b81 100644 --- a/src/mesa/drivers/dri/savage/savageioctl.c +++ b/src/mesa/drivers/dri/savage/savageioctl.c @@ -119,7 +119,7 @@ void savageGetDMABuffer( savageContextPtr imesa ) #if 0 /* Still keeping this around because it demonstrates page flipping and * automatic z-clear. */ -static void savage_BCI_clear(GLcontext *ctx, drm_savage_clear_t *pclear) +static void savage_BCI_clear(struct gl_context *ctx, drm_savage_clear_t *pclear) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); int nbox = imesa->sarea->nbox; @@ -325,7 +325,7 @@ static GLuint savageIntersectClipRects(drm_clip_rect_t *dest, } -static void savageDDClear( GLcontext *ctx, GLbitfield mask ) +static void savageDDClear( struct gl_context *ctx, GLbitfield mask ) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); GLuint colorMask, depthMask, clearColor, clearDepth, flags; @@ -635,7 +635,7 @@ void savageFlushCmdBuf( savageContextPtr imesa, GLboolean discard ) } -static void savageDDFlush( GLcontext *ctx ) +static void savageDDFlush( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); if (SAVAGE_DEBUG & DEBUG_VERBOSE_MSG) @@ -644,7 +644,7 @@ static void savageDDFlush( GLcontext *ctx ) savageFlushCmdBuf(imesa, GL_FALSE); } -static void savageDDFinish( GLcontext *ctx ) +static void savageDDFinish( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); if (SAVAGE_DEBUG & DEBUG_VERBOSE_MSG) @@ -654,7 +654,7 @@ static void savageDDFinish( GLcontext *ctx ) WAIT_IDLE_EMPTY(imesa); } -void savageDDInitIoctlFuncs( GLcontext *ctx ) +void savageDDInitIoctlFuncs( struct gl_context *ctx ) { ctx->Driver.Clear = savageDDClear; ctx->Driver.Flush = savageDDFlush; diff --git a/src/mesa/drivers/dri/savage/savageioctl.h b/src/mesa/drivers/dri/savage/savageioctl.h index e7e80816c10..7d34825c296 100644 --- a/src/mesa/drivers/dri/savage/savageioctl.h +++ b/src/mesa/drivers/dri/savage/savageioctl.h @@ -37,7 +37,7 @@ void savageWaitEvent( savageContextPtr imesa, unsigned int event); void savageFlushCmdBufLocked( savageContextPtr imesa, GLboolean discard ); void savageFlushCmdBuf( savageContextPtr imesa, GLboolean discard ); -void savageDDInitIoctlFuncs( GLcontext *ctx ); +void savageDDInitIoctlFuncs( struct gl_context *ctx ); void savageSwapBuffers( __DRIdrawable *dPriv ); diff --git a/src/mesa/drivers/dri/savage/savagerender.c b/src/mesa/drivers/dri/savage/savagerender.c index 2d9e80e29c4..8cc448ad4f7 100644 --- a/src/mesa/drivers/dri/savage/savagerender.c +++ b/src/mesa/drivers/dri/savage/savagerender.c @@ -142,7 +142,7 @@ /* Render pipeline stage */ /**********************************************************************/ -static GLboolean savage_run_render( GLcontext *ctx, +static GLboolean savage_run_render( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -234,7 +234,7 @@ struct texnorm_stage_data { #define TEXNORM_STAGE_DATA(stage) ((struct texnorm_stage_data *)stage->privatePtr) -static GLboolean run_texnorm_stage( GLcontext *ctx, +static GLboolean run_texnorm_stage( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct texnorm_stage_data *store = TEXNORM_STAGE_DATA(stage); @@ -307,7 +307,7 @@ static GLboolean run_texnorm_stage( GLcontext *ctx, /* Called the first time stage->run() is invoked. */ -static GLboolean alloc_texnorm_data( GLcontext *ctx, +static GLboolean alloc_texnorm_data( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -325,7 +325,7 @@ static GLboolean alloc_texnorm_data( GLcontext *ctx, return GL_TRUE; } -static void validate_texnorm( GLcontext *ctx, +static void validate_texnorm( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct texnorm_stage_data *store = TEXNORM_STAGE_DATA(stage); diff --git a/src/mesa/drivers/dri/savage/savagespan.c b/src/mesa/drivers/dri/savage/savagespan.c index 735aac50fd7..8542f47fd92 100644 --- a/src/mesa/drivers/dri/savage/savagespan.c +++ b/src/mesa/drivers/dri/savage/savagespan.c @@ -187,7 +187,7 @@ * the frame buffer. */ static void -savageCopyPixels( GLcontext *ctx, +savageCopyPixels( struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint destx, GLint desty, GLenum type ) @@ -198,7 +198,7 @@ savageCopyPixels( GLcontext *ctx, _swrast_CopyPixels(ctx, srcx, srcy, width, height, destx, desty, type); } static void -savageDrawPixels( GLcontext *ctx, +savageDrawPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -211,7 +211,7 @@ savageDrawPixels( GLcontext *ctx, _swrast_DrawPixels(ctx, x, y, width, height, format, type, packing, pixels); } static void -savageReadPixels( GLcontext *ctx, +savageReadPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, @@ -226,7 +226,7 @@ savageReadPixels( GLcontext *ctx, /* * Make sure the hardware is idle when span-rendering. */ -static void savageSpanRenderStart( GLcontext *ctx ) +static void savageSpanRenderStart( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); FLUSH_BATCH(imesa); @@ -234,7 +234,7 @@ static void savageSpanRenderStart( GLcontext *ctx ) } -void savageDDInitSpanFuncs( GLcontext *ctx ) +void savageDDInitSpanFuncs( struct gl_context *ctx ) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = savageSpanRenderStart; diff --git a/src/mesa/drivers/dri/savage/savagespan.h b/src/mesa/drivers/dri/savage/savagespan.h index 00094e255e8..41d6f75cbbe 100644 --- a/src/mesa/drivers/dri/savage/savagespan.h +++ b/src/mesa/drivers/dri/savage/savagespan.h @@ -28,7 +28,7 @@ #include "drirenderbuffer.h" -extern void savageDDInitSpanFuncs( GLcontext *ctx ); +extern void savageDDInitSpanFuncs( struct gl_context *ctx ); extern void savageSetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis, diff --git a/src/mesa/drivers/dri/savage/savagestate.c b/src/mesa/drivers/dri/savage/savagestate.c index 84e1b525854..0906f85b1fa 100644 --- a/src/mesa/drivers/dri/savage/savagestate.c +++ b/src/mesa/drivers/dri/savage/savagestate.c @@ -73,8 +73,8 @@ #define S3D_TR 15 -static void savageBlendFunc_s4(GLcontext *); -static void savageBlendFunc_s3d(GLcontext *); +static void savageBlendFunc_s4(struct gl_context *); +static void savageBlendFunc_s3d(struct gl_context *); static INLINE GLuint savagePackColor(GLuint format, GLubyte r, GLubyte g, @@ -92,16 +92,16 @@ static INLINE GLuint savagePackColor(GLuint format, } -static void savageDDAlphaFunc_s4(GLcontext *ctx, GLenum func, GLfloat ref) +static void savageDDAlphaFunc_s4(struct gl_context *ctx, GLenum func, GLfloat ref) { savageBlendFunc_s4(ctx); } -static void savageDDAlphaFunc_s3d(GLcontext *ctx, GLenum func, GLfloat ref) +static void savageDDAlphaFunc_s3d(struct gl_context *ctx, GLenum func, GLfloat ref) { savageBlendFunc_s3d(ctx); } -static void savageDDBlendEquationSeparate(GLcontext *ctx, +static void savageDDBlendEquationSeparate(struct gl_context *ctx, GLenum modeRGB, GLenum modeA) { assert( modeRGB == modeA ); @@ -119,7 +119,7 @@ static void savageDDBlendEquationSeparate(GLcontext *ctx, } -static void savageBlendFunc_s4(GLcontext *ctx) +static void savageBlendFunc_s4(struct gl_context *ctx) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); uint32_t drawLocalCtrl = imesa->regs.s4.drawLocalCtrl.ui; @@ -294,7 +294,7 @@ static void savageBlendFunc_s4(GLcontext *ctx) drawCtrl1 != imesa->regs.s4.drawCtrl1.ui) imesa->dirty |= SAVAGE_UPLOAD_GLOBAL; } -static void savageBlendFunc_s3d(GLcontext *ctx) +static void savageBlendFunc_s3d(struct gl_context *ctx) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); uint32_t drawCtrl = imesa->regs.s3d.drawCtrl.ui; @@ -465,14 +465,14 @@ static void savageBlendFunc_s3d(GLcontext *ctx) imesa->dirty |= SAVAGE_UPLOAD_LOCAL; } -static void savageDDBlendFuncSeparate_s4( GLcontext *ctx, GLenum sfactorRGB, +static void savageDDBlendFuncSeparate_s4( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { assert (dfactorRGB == dfactorA && sfactorRGB == sfactorA); savageBlendFunc_s4( ctx ); } -static void savageDDBlendFuncSeparate_s3d( GLcontext *ctx, GLenum sfactorRGB, +static void savageDDBlendFuncSeparate_s3d( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -482,7 +482,7 @@ static void savageDDBlendFuncSeparate_s3d( GLcontext *ctx, GLenum sfactorRGB, -static void savageDDDepthFunc_s4(GLcontext *ctx, GLenum func) +static void savageDDDepthFunc_s4(struct gl_context *ctx, GLenum func) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); ZCmpFunc zmode; @@ -546,7 +546,7 @@ static void savageDDDepthFunc_s4(GLcontext *ctx, GLenum func) zWatermarks != imesa->regs.s4.zWatermarks.ui) imesa->dirty |= SAVAGE_UPLOAD_GLOBAL; } -static void savageDDDepthFunc_s3d(GLcontext *ctx, GLenum func) +static void savageDDDepthFunc_s3d(struct gl_context *ctx, GLenum func) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); ZCmpFunc zmode; @@ -600,11 +600,11 @@ static void savageDDDepthFunc_s3d(GLcontext *ctx, GLenum func) imesa->dirty |= SAVAGE_UPLOAD_GLOBAL; } -static void savageDDDepthMask_s4(GLcontext *ctx, GLboolean flag) +static void savageDDDepthMask_s4(struct gl_context *ctx, GLboolean flag) { savageDDDepthFunc_s4(ctx,ctx->Depth.Func); } -static void savageDDDepthMask_s3d(GLcontext *ctx, GLboolean flag) +static void savageDDDepthMask_s3d(struct gl_context *ctx, GLboolean flag) { savageDDDepthFunc_s3d(ctx,ctx->Depth.Func); } @@ -617,7 +617,7 @@ static void savageDDDepthMask_s3d(GLcontext *ctx, GLboolean flag) */ -static void savageDDScissor( GLcontext *ctx, GLint x, GLint y, +static void savageDDScissor( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -635,7 +635,7 @@ static void savageDDScissor( GLcontext *ctx, GLint x, GLint y, -static void savageDDDrawBuffer(GLcontext *ctx, GLenum mode ) +static void savageDDDrawBuffer(struct gl_context *ctx, GLenum mode ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); uint32_t destCtrl = imesa->regs.s4.destCtrl.ui; @@ -667,13 +667,13 @@ static void savageDDDrawBuffer(GLcontext *ctx, GLenum mode ) imesa->dirty |= SAVAGE_UPLOAD_GLOBAL; } -static void savageDDReadBuffer(GLcontext *ctx, GLenum mode ) +static void savageDDReadBuffer(struct gl_context *ctx, GLenum mode ) { /* nothing, until we implement h/w glRead/CopyPixels or CopyTexImage */ } #if 0 -static void savageDDSetColor(GLcontext *ctx, +static void savageDDSetColor(struct gl_context *ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a ) { @@ -686,7 +686,7 @@ static void savageDDSetColor(GLcontext *ctx, * Window position and viewport transformation */ -void savageCalcViewport( GLcontext *ctx ) +void savageCalcViewport( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -712,14 +712,14 @@ void savageCalcViewport( GLcontext *ctx ) imesa->SetupNewInputs = ~0; } -static void savageViewport( GLcontext *ctx, +static void savageViewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { savageCalcViewport( ctx ); } -static void savageDepthRange( GLcontext *ctx, +static void savageDepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { savageCalcViewport( ctx ); @@ -730,7 +730,7 @@ static void savageDepthRange( GLcontext *ctx, * Miscellaneous */ -static void savageDDClearColor(GLcontext *ctx, +static void savageDDClearColor(struct gl_context *ctx, const GLfloat color[4] ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -746,7 +746,7 @@ static void savageDDClearColor(GLcontext *ctx, /* Fallback to swrast for select and feedback. */ -static void savageRenderMode( GLcontext *ctx, GLenum mode ) +static void savageRenderMode( struct gl_context *ctx, GLenum mode ) { FALLBACK( ctx, SAVAGE_FALLBACK_RENDERMODE, (mode != GL_RENDER) ); } @@ -758,7 +758,7 @@ static void savageRenderMode( GLcontext *ctx, GLenum mode ) * Culling - the savage isn't quite as clean here as the rest of * its interfaces, but it's not bad. */ -static void savageDDCullFaceFrontFace(GLcontext *ctx, GLenum unused) +static void savageDDCullFaceFrontFace(struct gl_context *ctx, GLenum unused) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); GLuint cullMode=imesa->LcsCullMode; @@ -793,7 +793,7 @@ static void savageDDCullFaceFrontFace(GLcontext *ctx, GLenum unused) } #endif /* end #if HW_CULL */ -static void savageUpdateCull( GLcontext *ctx ) +static void savageUpdateCull( struct gl_context *ctx ) { #if HW_CULL savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -829,7 +829,7 @@ static void savageUpdateCull( GLcontext *ctx ) * to have any effect. If only some channels are masked we need a * software fallback on all chips. */ -static void savageDDColorMask_s4(GLcontext *ctx, +static void savageDDColorMask_s4(struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -855,7 +855,7 @@ static void savageDDColorMask_s4(GLcontext *ctx, imesa->dirty |= SAVAGE_UPLOAD_LOCAL; } } -static void savageDDColorMask_s3d(GLcontext *ctx, +static void savageDDColorMask_s3d(struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -865,7 +865,7 @@ static void savageDDColorMask_s3d(GLcontext *ctx, FALLBACK (ctx, SAVAGE_FALLBACK_COLORMASK, !(r && g && b)); } -static void savageUpdateSpecular_s4(GLcontext *ctx) { +static void savageUpdateSpecular_s4(struct gl_context *ctx) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); uint32_t drawLocalCtrl = imesa->regs.s4.drawLocalCtrl.ui; @@ -879,7 +879,7 @@ static void savageUpdateSpecular_s4(GLcontext *ctx) { imesa->dirty |= SAVAGE_UPLOAD_LOCAL; } -static void savageUpdateSpecular_s3d(GLcontext *ctx) { +static void savageUpdateSpecular_s3d(struct gl_context *ctx) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); uint32_t drawCtrl = imesa->regs.s3d.drawCtrl.ui; @@ -893,18 +893,18 @@ static void savageUpdateSpecular_s3d(GLcontext *ctx) { imesa->dirty |= SAVAGE_UPLOAD_LOCAL; } -static void savageDDLightModelfv_s4(GLcontext *ctx, GLenum pname, +static void savageDDLightModelfv_s4(struct gl_context *ctx, GLenum pname, const GLfloat *param) { savageUpdateSpecular_s4 (ctx); } -static void savageDDLightModelfv_s3d(GLcontext *ctx, GLenum pname, +static void savageDDLightModelfv_s3d(struct gl_context *ctx, GLenum pname, const GLfloat *param) { savageUpdateSpecular_s3d (ctx); } -static void savageDDShadeModel_s4(GLcontext *ctx, GLuint mod) +static void savageDDShadeModel_s4(struct gl_context *ctx, GLuint mod) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); uint32_t drawLocalCtrl = imesa->regs.s4.drawLocalCtrl.ui; @@ -921,7 +921,7 @@ static void savageDDShadeModel_s4(GLcontext *ctx, GLuint mod) if (drawLocalCtrl != imesa->regs.s4.drawLocalCtrl.ui) imesa->dirty |= SAVAGE_UPLOAD_LOCAL; } -static void savageDDShadeModel_s3d(GLcontext *ctx, GLuint mod) +static void savageDDShadeModel_s3d(struct gl_context *ctx, GLuint mod) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); uint32_t drawCtrl = imesa->regs.s3d.drawCtrl.ui; @@ -946,7 +946,7 @@ static void savageDDShadeModel_s3d(GLcontext *ctx, GLuint mod) * on savage3d and savage4. No need for two separate functions. */ -static void savageDDFogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) +static void savageDDFogfv(struct gl_context *ctx, GLenum pname, const GLfloat *param) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); GLuint fogClr; @@ -977,7 +977,7 @@ static void savageDDFogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) static void -savageDDStencilFuncSeparate(GLcontext *ctx, GLenum face, GLenum func, +savageDDStencilFuncSeparate(struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1010,7 +1010,7 @@ savageDDStencilFuncSeparate(GLcontext *ctx, GLenum face, GLenum func, } static void -savageDDStencilMaskSeparate(GLcontext *ctx, GLenum face, GLuint mask) +savageDDStencilMaskSeparate(struct gl_context *ctx, GLenum face, GLuint mask) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1039,7 +1039,7 @@ static unsigned get_stencil_op_value( GLenum op ) } static void -savageDDStencilOpSeparate(GLcontext *ctx, GLenum face, GLenum fail, +savageDDStencilOpSeparate(struct gl_context *ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1057,7 +1057,7 @@ savageDDStencilOpSeparate(GLcontext *ctx, GLenum face, GLenum fail, /* ============================================================= */ -static void savageDDEnable_s4(GLcontext *ctx, GLenum cap, GLboolean state) +static void savageDDEnable_s4(struct gl_context *ctx, GLenum cap, GLboolean state) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1148,7 +1148,7 @@ static void savageDDEnable_s4(GLcontext *ctx, GLenum cap, GLboolean state) ; } } -static void savageDDEnable_s3d(GLcontext *ctx, GLenum cap, GLboolean state) +static void savageDDEnable_s3d(struct gl_context *ctx, GLenum cap, GLboolean state) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1227,7 +1227,7 @@ static void savageDDEnable_s3d(GLcontext *ctx, GLenum cap, GLboolean state) } } -void savageDDUpdateHwState( GLcontext *ctx ) +void savageDDUpdateHwState( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1671,7 +1671,7 @@ void savageDDInitState( savageContextPtr imesa ) { NEW_TEXTURE_MATRIX|\ NEW_USER_CLIP|NEW_CLIENT_STATE)) -static void savageDDInvalidateState( GLcontext *ctx, GLuint new_state ) +static void savageDDInvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -1681,7 +1681,7 @@ static void savageDDInvalidateState( GLcontext *ctx, GLuint new_state ) } -void savageDDInitStateFuncs(GLcontext *ctx) +void savageDDInitStateFuncs(struct gl_context *ctx) { ctx->Driver.UpdateState = savageDDInvalidateState; ctx->Driver.BlendEquationSeparate = savageDDBlendEquationSeparate; diff --git a/src/mesa/drivers/dri/savage/savagestate.h b/src/mesa/drivers/dri/savage/savagestate.h index 5fe718d7a65..dca4fd0c01d 100644 --- a/src/mesa/drivers/dri/savage/savagestate.h +++ b/src/mesa/drivers/dri/savage/savagestate.h @@ -28,14 +28,14 @@ #include "savagecontext.h" -void savageCalcViewport( GLcontext *ctx ); +void savageCalcViewport( struct gl_context *ctx ); void savageEmitOldState( savageContextPtr imesa ); void savageEmitChangedState( savageContextPtr imesa ); -extern void savageDDUpdateHwState( GLcontext *ctx ); +extern void savageDDUpdateHwState( struct gl_context *ctx ); extern void savageDDInitState( savageContextPtr imesa ); -extern void savageDDInitStateFuncs( GLcontext *ctx ); -extern void savageDDRenderStart(GLcontext *ctx); -extern void savageDDRenderEnd(GLcontext *ctx); +extern void savageDDInitStateFuncs( struct gl_context *ctx ); +extern void savageDDRenderStart(struct gl_context *ctx); +extern void savageDDRenderEnd(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/dri/savage/savagetex.c b/src/mesa/drivers/dri/savage/savagetex.c index 89090da5c63..3aece732c99 100644 --- a/src/mesa/drivers/dri/savage/savagetex.c +++ b/src/mesa/drivers/dri/savage/savagetex.c @@ -649,7 +649,7 @@ _savage_texstore_a1118888(TEXSTORE_PARAMS) /* Called by the _mesa_store_teximage[123]d() functions. */ static gl_format -savageChooseTextureFormat( GLcontext *ctx, GLint internalFormat, +savageChooseTextureFormat( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1148,7 +1148,7 @@ savage4_set_filter_mode( savageContextPtr imesa, unsigned unit, } -static void savageUpdateTex0State_s4( GLcontext *ctx ) +static void savageUpdateTex0State_s4( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); struct gl_texture_object *tObj; @@ -1392,7 +1392,7 @@ static void savageUpdateTex0State_s4( GLcontext *ctx ) return; } -static void savageUpdateTex1State_s4( GLcontext *ctx ) +static void savageUpdateTex1State_s4( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); struct gl_texture_object *tObj; @@ -1575,7 +1575,7 @@ static void savageUpdateTex1State_s4( GLcontext *ctx ) if(t->base.heap->heapId == SAVAGE_AGP_HEAP) imesa->regs.s4.texAddr[1].ui |= 0x1; } -static void savageUpdateTexState_s3d( GLcontext *ctx ) +static void savageUpdateTexState_s3d( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); struct gl_texture_object *tObj; @@ -1746,7 +1746,7 @@ static void savageTimestampTextures( savageContextPtr imesa ) } -static void savageUpdateTextureState_s4( GLcontext *ctx ) +static void savageUpdateTextureState_s4( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1771,7 +1771,7 @@ static void savageUpdateTextureState_s4( GLcontext *ctx ) imesa->dirty |= (SAVAGE_UPLOAD_TEX0 | SAVAGE_UPLOAD_TEX1); } -static void savageUpdateTextureState_s3d( GLcontext *ctx ) +static void savageUpdateTextureState_s3d( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1789,7 +1789,7 @@ static void savageUpdateTextureState_s3d( GLcontext *ctx ) savageUpdateTexState_s3d( ctx ); imesa->dirty |= (SAVAGE_UPLOAD_TEX0); } -void savageUpdateTextureState( GLcontext *ctx) +void savageUpdateTextureState( struct gl_context *ctx) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); FALLBACK (ctx, SAVAGE_FALLBACK_TEXTURE, GL_FALSE); @@ -1806,7 +1806,7 @@ void savageUpdateTextureState( GLcontext *ctx) * DRIVER functions *****************************************/ -static void savageTexEnv( GLcontext *ctx, GLenum target, +static void savageTexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); @@ -1847,7 +1847,7 @@ static void savageTexImageChanged (savageTexObjPtr t) { } } -static void savageTexImage1D( GLcontext *ctx, GLenum target, GLint level, +static void savageTexImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -1872,7 +1872,7 @@ static void savageTexImage1D( GLcontext *ctx, GLenum target, GLint level, SAVAGE_CONTEXT(ctx)->new_state |= SAVAGE_NEW_TEXTURE; } -static void savageTexSubImage1D( GLcontext *ctx, +static void savageTexSubImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -1904,7 +1904,7 @@ static void savageTexSubImage1D( GLcontext *ctx, SAVAGE_CONTEXT(ctx)->new_state |= SAVAGE_NEW_TEXTURE; } -static void savageTexImage2D( GLcontext *ctx, GLenum target, GLint level, +static void savageTexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -1929,7 +1929,7 @@ static void savageTexImage2D( GLcontext *ctx, GLenum target, GLint level, SAVAGE_CONTEXT(ctx)->new_state |= SAVAGE_NEW_TEXTURE; } -static void savageTexSubImage2D( GLcontext *ctx, +static void savageTexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -1962,7 +1962,7 @@ static void savageTexSubImage2D( GLcontext *ctx, } static void -savageCompressedTexImage2D( GLcontext *ctx, GLenum target, GLint level, +savageCompressedTexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -1987,7 +1987,7 @@ savageCompressedTexImage2D( GLcontext *ctx, GLenum target, GLint level, } static void -savageCompressedTexSubImage2D( GLcontext *ctx, +savageCompressedTexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -2018,7 +2018,7 @@ savageCompressedTexSubImage2D( GLcontext *ctx, SAVAGE_CONTEXT(ctx)->new_state |= SAVAGE_NEW_TEXTURE; } -static void savageTexParameter( GLcontext *ctx, GLenum target, +static void savageTexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat *params ) { @@ -2050,7 +2050,7 @@ static void savageTexParameter( GLcontext *ctx, GLenum target, imesa->new_state |= SAVAGE_NEW_TEXTURE; } -static void savageBindTexture( GLcontext *ctx, GLenum target, +static void savageBindTexture( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj ) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); @@ -2061,7 +2061,7 @@ static void savageBindTexture( GLcontext *ctx, GLenum target, imesa->new_state |= SAVAGE_NEW_TEXTURE; } -static void savageDeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj ) +static void savageDeleteTexture( struct gl_context *ctx, struct gl_texture_object *tObj ) { driTextureObject *t = (driTextureObject *)tObj->DriverData; savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); @@ -2078,7 +2078,7 @@ static void savageDeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj static struct gl_texture_object * -savageNewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +savageNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; obj = _mesa_new_texture_object(ctx, name, target); diff --git a/src/mesa/drivers/dri/savage/savagetex.h b/src/mesa/drivers/dri/savage/savagetex.h index e5f8a80f85d..6108c1aade9 100644 --- a/src/mesa/drivers/dri/savage/savagetex.h +++ b/src/mesa/drivers/dri/savage/savagetex.h @@ -75,7 +75,7 @@ typedef struct { #define __HWParseTexEnvCombine(imesa, flag0, TexCtrl, TexBlendCtrl) -void savageUpdateTextureState( GLcontext *ctx ); +void savageUpdateTextureState( struct gl_context *ctx ); void savageDDInitTextureFuncs( struct dd_function_table *functions ); void savageDestroyTexObj( savageContextPtr imesa, savageTexObjPtr t ); diff --git a/src/mesa/drivers/dri/savage/savagetris.c b/src/mesa/drivers/dri/savage/savagetris.c index 0050485e313..79a951147f9 100644 --- a/src/mesa/drivers/dri/savage/savagetris.c +++ b/src/mesa/drivers/dri/savage/savagetris.c @@ -53,8 +53,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "savagetex.h" #include "savageioctl.h" -static void savageRasterPrimitive( GLcontext *ctx, GLuint prim ); -static void savageRenderPrimitive( GLcontext *ctx, GLenum prim ); +static void savageRasterPrimitive( struct gl_context *ctx, GLuint prim ); +static void savageRenderPrimitive( struct gl_context *ctx, GLenum prim ); static GLenum reduced_prim[GL_POLYGON+1] = { @@ -562,7 +562,7 @@ savage_fallback_tri( savageContextPtr imesa, savageVertexPtr v1, savageVertexPtr v2 ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; SWvertex v[3]; FLUSH_BATCH(imesa); WAIT_IDLE_EMPTY(imesa); @@ -578,7 +578,7 @@ savage_fallback_line( savageContextPtr imesa, savageVertexPtr v0, savageVertexPtr v1 ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; SWvertex v[2]; FLUSH_BATCH(imesa); WAIT_IDLE_EMPTY(imesa); @@ -592,7 +592,7 @@ static void savage_fallback_point( savageContextPtr imesa, savageVertexPtr v0 ) { - GLcontext *ctx = imesa->glCtx; + struct gl_context *ctx = imesa->glCtx; SWvertex v[1]; FLUSH_BATCH(imesa); WAIT_IDLE_EMPTY(imesa); @@ -645,7 +645,7 @@ savage_fallback_point( savageContextPtr imesa, /* Render clipped primitives */ /**********************************************************************/ -static void savageRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void savageRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -661,13 +661,13 @@ static void savageRenderClippedPoly( GLcontext *ctx, const GLuint *elts, } } -static void savageRenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +static void savageRenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); } /* -static void savageFastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void savageFastRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { r128ContextPtr rmesa = R128_CONTEXT( ctx ); @@ -711,7 +711,7 @@ static void savageFastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED) -static void savageChooseRenderState(GLcontext *ctx) +static void savageChooseRenderState(struct gl_context *ctx) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); GLuint flags = ctx->_TriangleCaps; @@ -781,7 +781,7 @@ static void savageChooseRenderState(GLcontext *ctx) /* Validate state at pipeline start */ /**********************************************************************/ -static void savageRunPipeline( GLcontext *ctx ) +static void savageRunPipeline( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -829,7 +829,7 @@ static void savageRunPipeline( GLcontext *ctx ) * primitives. */ -static void savageRasterPrimitive( GLcontext *ctx, GLuint prim ) +static void savageRasterPrimitive( struct gl_context *ctx, GLuint prim ) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); @@ -851,7 +851,7 @@ static void savageRasterPrimitive( GLcontext *ctx, GLuint prim ) #endif } -static void savageRenderPrimitive( GLcontext *ctx, GLenum prim ) +static void savageRenderPrimitive( struct gl_context *ctx, GLenum prim ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); GLuint rprim = reduced_prim[prim]; @@ -870,7 +870,7 @@ static void savageRenderPrimitive( GLcontext *ctx, GLenum prim ) * them. Fallback to swrast we can't. Returns GL_TRUE if projective * texture coordinates must be faked, GL_FALSE otherwise. */ -static GLboolean savageCheckPTexHack( GLcontext *ctx ) +static GLboolean savageCheckPTexHack( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -933,7 +933,7 @@ do { \ #define SAVAGE_EMIT_ST1 0x0300 -static INLINE GLuint savageChooseVertexFormat_s3d( GLcontext *ctx ) +static INLINE GLuint savageChooseVertexFormat_s3d( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -996,7 +996,7 @@ static INLINE GLuint savageChooseVertexFormat_s3d( GLcontext *ctx ) } -static INLINE GLuint savageChooseVertexFormat_s4( GLcontext *ctx ) +static INLINE GLuint savageChooseVertexFormat_s4( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -1121,7 +1121,7 @@ static INLINE GLuint savageChooseVertexFormat_s4( GLcontext *ctx ) } -static void savageRenderStart( GLcontext *ctx ) +static void savageRenderStart( struct gl_context *ctx ) { savageContextPtr imesa = SAVAGE_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -1199,7 +1199,7 @@ static void savageRenderStart( GLcontext *ctx ) } } -static void savageRenderFinish( GLcontext *ctx ) +static void savageRenderFinish( struct gl_context *ctx ) { /* Flush the last primitive now, before any state is changed. */ savageFlushVertices(SAVAGE_CONTEXT(ctx)); @@ -1227,7 +1227,7 @@ static const char * const fallbackStrings[] = { "Projective texture", }; -void savageFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void savageFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); savageContextPtr imesa = SAVAGE_CONTEXT(ctx); @@ -1279,7 +1279,7 @@ void savageFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) /* Initialization. */ /**********************************************************************/ -void savageInitTriFuncs( GLcontext *ctx ) +void savageInitTriFuncs( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); static int firsttime = 1; diff --git a/src/mesa/drivers/dri/savage/savagetris.h b/src/mesa/drivers/dri/savage/savagetris.h index a2a9375ed54..5dcae78f760 100644 --- a/src/mesa/drivers/dri/savage/savagetris.h +++ b/src/mesa/drivers/dri/savage/savagetris.h @@ -38,10 +38,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/mtypes.h" -extern void savageInitTriFuncs( GLcontext *ctx ); +extern void savageInitTriFuncs( struct gl_context *ctx ); -extern void savageFallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void savageFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( ctx, bit, mode ) savageFallback( ctx, bit, mode ) diff --git a/src/mesa/drivers/dri/sis/sis6326_clear.c b/src/mesa/drivers/dri/sis/sis6326_clear.c index d46ecc9cd27..fba6c7f2d7d 100644 --- a/src/mesa/drivers/dri/sis/sis6326_clear.c +++ b/src/mesa/drivers/dri/sis/sis6326_clear.c @@ -34,11 +34,11 @@ #include "swrast/swrast.h" #include "main/macros.h" -static void sis_clear_front_buffer(GLcontext *ctx, GLenum mask, GLint x, +static void sis_clear_front_buffer(struct gl_context *ctx, GLenum mask, GLint x, GLint y, GLint width, GLint height); -static void sis_clear_back_buffer(GLcontext *ctx, GLenum mask, GLint x, +static void sis_clear_back_buffer(struct gl_context *ctx, GLenum mask, GLint x, GLint y, GLint width, GLint height); -static void sis_clear_z_buffer(GLcontext * ctx, GLbitfield mask, GLint x, +static void sis_clear_z_buffer(struct gl_context * ctx, GLbitfield mask, GLint x, GLint y, GLint width, GLint height ); static void @@ -69,7 +69,7 @@ sis6326UpdateZPattern(sisContextPtr smesa, GLclampd z) } void -sis6326DDClear(GLcontext *ctx, GLbitfield mask) +sis6326DDClear(struct gl_context *ctx, GLbitfield mask) { sisContextPtr smesa = SIS_CONTEXT(ctx); GLint x1, y1, width1, height1; @@ -114,7 +114,7 @@ sis6326DDClear(GLcontext *ctx, GLbitfield mask) void -sis6326DDClearColor(GLcontext *ctx, const GLfloat color[4]) +sis6326DDClearColor(struct gl_context *ctx, const GLfloat color[4]) { sisContextPtr smesa = SIS_CONTEXT(ctx); GLubyte c[4]; @@ -128,7 +128,7 @@ sis6326DDClearColor(GLcontext *ctx, const GLfloat color[4]) } void -sis6326DDClearDepth(GLcontext *ctx, GLclampd d) +sis6326DDClearDepth(struct gl_context *ctx, GLclampd d) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -136,7 +136,7 @@ sis6326DDClearDepth(GLcontext *ctx, GLclampd d) } static void -sis_clear_back_buffer(GLcontext *ctx, GLenum mask, GLint x, GLint y, +sis_clear_back_buffer(struct gl_context *ctx, GLenum mask, GLint x, GLint y, GLint width, GLint height) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -160,7 +160,7 @@ sis_clear_back_buffer(GLcontext *ctx, GLenum mask, GLint x, GLint y, } static void -sis_clear_front_buffer(GLcontext *ctx, GLenum mask, GLint x, GLint y, +sis_clear_front_buffer(struct gl_context *ctx, GLenum mask, GLint x, GLint y, GLint width, GLint height) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -211,7 +211,7 @@ sis_clear_front_buffer(GLcontext *ctx, GLenum mask, GLint x, GLint y, } static void -sis_clear_z_buffer(GLcontext * ctx, GLbitfield mask, GLint x, GLint y, +sis_clear_z_buffer(struct gl_context * ctx, GLbitfield mask, GLint x, GLint y, GLint width, GLint height) { sisContextPtr smesa = SIS_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/sis/sis6326_state.c b/src/mesa/drivers/dri/sis/sis6326_state.c index 52008c7ea32..9708f639124 100644 --- a/src/mesa/drivers/dri/sis/sis6326_state.c +++ b/src/mesa/drivers/dri/sis/sis6326_state.c @@ -46,7 +46,7 @@ */ static void -sis6326DDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) +sis6326DDAlphaFunc( struct gl_context *ctx, GLenum func, GLfloat ref ) { sisContextPtr smesa = SIS_CONTEXT(ctx); GLubyte refbyte; @@ -91,7 +91,7 @@ sis6326DDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) } static void -sis6326DDBlendFuncSeparate( GLcontext *ctx, +sis6326DDBlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -172,7 +172,7 @@ sis6326DDBlendFuncSeparate( GLcontext *ctx, */ static void -sis6326DDDepthFunc( GLcontext *ctx, GLenum func ) +sis6326DDDepthFunc( struct gl_context *ctx, GLenum func ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *prev = &smesa->prev; @@ -214,7 +214,7 @@ sis6326DDDepthFunc( GLcontext *ctx, GLenum func ) } static void -sis6326DDDepthMask( GLcontext *ctx, GLboolean flag ) +sis6326DDDepthMask( struct gl_context *ctx, GLboolean flag ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *current = &smesa->current; @@ -230,7 +230,7 @@ sis6326DDDepthMask( GLcontext *ctx, GLboolean flag ) */ static void -sis6326DDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params ) +sis6326DDFogfv( struct gl_context *ctx, GLenum pname, const GLfloat *params ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *current = &smesa->current; @@ -258,7 +258,7 @@ sis6326DDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params ) */ void -sis6326UpdateClipping(GLcontext *ctx) +sis6326UpdateClipping(struct gl_context *ctx) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -300,7 +300,7 @@ sis6326UpdateClipping(GLcontext *ctx) } static void -sis6326DDScissor( GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) +sis6326DDScissor( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { if (ctx->Scissor.Enabled) sis6326UpdateClipping( ctx ); @@ -311,20 +311,20 @@ sis6326DDScissor( GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) */ static void -sis6326UpdateCull( GLcontext *ctx ) +sis6326UpdateCull( struct gl_context *ctx ) { /* XXX culling */ } static void -sis6326DDCullFace( GLcontext *ctx, GLenum mode ) +sis6326DDCullFace( struct gl_context *ctx, GLenum mode ) { sis6326UpdateCull( ctx ); } static void -sis6326DDFrontFace( GLcontext *ctx, GLenum mode ) +sis6326DDFrontFace( struct gl_context *ctx, GLenum mode ) { sis6326UpdateCull( ctx ); } @@ -333,7 +333,7 @@ sis6326DDFrontFace( GLcontext *ctx, GLenum mode ) * Masks */ -static void sis6326DDColorMask( GLcontext *ctx, +static void sis6326DDColorMask( struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -350,7 +350,7 @@ static void sis6326DDColorMask( GLcontext *ctx, * Rendering attributes */ -static void sis6326UpdateSpecular(GLcontext *ctx) +static void sis6326UpdateSpecular(struct gl_context *ctx) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *current = &smesa->current; @@ -361,14 +361,14 @@ static void sis6326UpdateSpecular(GLcontext *ctx) current->hwCapEnable &= ~S_ENABLE_Specular; } -static void sis6326DDLightModelfv(GLcontext *ctx, GLenum pname, +static void sis6326DDLightModelfv(struct gl_context *ctx, GLenum pname, const GLfloat *param) { if (pname == GL_LIGHT_MODEL_COLOR_CONTROL) { sis6326UpdateSpecular(ctx); } } -static void sis6326DDShadeModel( GLcontext *ctx, GLenum mode ) +static void sis6326DDShadeModel( struct gl_context *ctx, GLenum mode ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -384,7 +384,7 @@ static void sis6326DDShadeModel( GLcontext *ctx, GLenum mode ) * Viewport */ -static void sis6326CalcViewport( GLcontext *ctx ) +static void sis6326CalcViewport( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -400,14 +400,14 @@ static void sis6326CalcViewport( GLcontext *ctx ) m[MAT_TZ] = v[MAT_TZ] * smesa->depth_scale; } -static void sis6326DDViewport( GLcontext *ctx, +static void sis6326DDViewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { sis6326CalcViewport( ctx ); } -static void sis6326DDDepthRange( GLcontext *ctx, +static void sis6326DDDepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { sis6326CalcViewport( ctx ); @@ -418,7 +418,7 @@ static void sis6326DDDepthRange( GLcontext *ctx, */ static void -sis6326DDLogicOpCode( GLcontext *ctx, GLenum opcode ) +sis6326DDLogicOpCode( struct gl_context *ctx, GLenum opcode ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -487,7 +487,7 @@ sis6326DDLogicOpCode( GLcontext *ctx, GLenum opcode ) } } -void sis6326DDDrawBuffer( GLcontext *ctx, GLenum mode ) +void sis6326DDDrawBuffer( struct gl_context *ctx, GLenum mode ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -544,7 +544,7 @@ void sis6326DDDrawBuffer( GLcontext *ctx, GLenum mode ) */ static void -sis6326DDEnable( GLcontext *ctx, GLenum cap, GLboolean state ) +sis6326DDEnable( struct gl_context *ctx, GLenum cap, GLboolean state ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -617,7 +617,7 @@ sis6326DDEnable( GLcontext *ctx, GLenum cap, GLboolean state ) /* Called before beginning of rendering. */ void -sis6326UpdateHWState( GLcontext *ctx ) +sis6326UpdateHWState( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *prev = &smesa->prev; @@ -639,7 +639,7 @@ sis6326UpdateHWState( GLcontext *ctx ) } static void -sis6326DDInvalidateState( GLcontext *ctx, GLuint new_state ) +sis6326DDInvalidateState( struct gl_context *ctx, GLuint new_state ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -656,7 +656,7 @@ void sis6326DDInitState( sisContextPtr smesa ) { __GLSiSHardware *prev = &smesa->prev; __GLSiSHardware *current = &smesa->current; - GLcontext *ctx = smesa->glCtx; + struct gl_context *ctx = smesa->glCtx; /* add Texture Perspective Enable */ current->hwCapEnable = S_ENABLE_TextureCache | @@ -708,7 +708,7 @@ void sis6326DDInitState( sisContextPtr smesa ) /* Initialize the driver's state functions. */ -void sis6326DDInitStateFuncs( GLcontext *ctx ) +void sis6326DDInitStateFuncs( struct gl_context *ctx ) { ctx->Driver.UpdateState = sis6326DDInvalidateState; diff --git a/src/mesa/drivers/dri/sis/sis_clear.c b/src/mesa/drivers/dri/sis/sis_clear.c index d358ef62dc7..a5d870469da 100644 --- a/src/mesa/drivers/dri/sis/sis_clear.c +++ b/src/mesa/drivers/dri/sis/sis_clear.c @@ -38,12 +38,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "swrast/swrast.h" #include "main/macros.h" -static GLbitfield sis_3D_Clear( GLcontext * ctx, GLbitfield mask, +static GLbitfield sis_3D_Clear( struct gl_context * ctx, GLbitfield mask, GLint x, GLint y, GLint width, GLint height ); -static void sis_clear_color_buffer( GLcontext *ctx, GLenum mask, GLint x, +static void sis_clear_color_buffer( struct gl_context *ctx, GLenum mask, GLint x, GLint y, GLint width, GLint height ); -static void sis_clear_z_stencil_buffer( GLcontext * ctx, +static void sis_clear_z_stencil_buffer( struct gl_context * ctx, GLbitfield mask, GLint x, GLint y, GLint width, GLint height ); @@ -94,7 +94,7 @@ sisUpdateZStencilPattern( sisContextPtr smesa, GLclampd z, GLint stencil ) } void -sisDDClear( GLcontext * ctx, GLbitfield mask ) +sisDDClear( struct gl_context * ctx, GLbitfield mask ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -148,7 +148,7 @@ sisDDClear( GLcontext * ctx, GLbitfield mask ) void -sisDDClearColor( GLcontext * ctx, const GLfloat color[4] ) +sisDDClearColor( struct gl_context * ctx, const GLfloat color[4] ) { sisContextPtr smesa = SIS_CONTEXT(ctx); GLubyte c[4]; @@ -162,7 +162,7 @@ sisDDClearColor( GLcontext * ctx, const GLfloat color[4] ) } void -sisDDClearDepth( GLcontext * ctx, GLclampd d ) +sisDDClearDepth( struct gl_context * ctx, GLclampd d ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -170,7 +170,7 @@ sisDDClearDepth( GLcontext * ctx, GLclampd d ) } void -sisDDClearStencil( GLcontext * ctx, GLint s ) +sisDDClearStencil( struct gl_context * ctx, GLint s ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -178,7 +178,7 @@ sisDDClearStencil( GLcontext * ctx, GLint s ) } static GLbitfield -sis_3D_Clear( GLcontext * ctx, GLbitfield mask, +sis_3D_Clear( struct gl_context * ctx, GLbitfield mask, GLint x, GLint y, GLint width, GLint height ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -323,7 +323,7 @@ sis_3D_Clear( GLcontext * ctx, GLbitfield mask, } static void -sis_clear_color_buffer( GLcontext *ctx, GLenum mask, GLint x, GLint y, +sis_clear_color_buffer( struct gl_context *ctx, GLenum mask, GLint x, GLint y, GLint width, GLint height ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -389,7 +389,7 @@ sis_clear_color_buffer( GLcontext *ctx, GLenum mask, GLint x, GLint y, } static void -sis_clear_z_stencil_buffer( GLcontext * ctx, GLbitfield mask, +sis_clear_z_stencil_buffer( struct gl_context * ctx, GLbitfield mask, GLint x, GLint y, GLint width, GLint height ) { sisContextPtr smesa = SIS_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/sis/sis_context.c b/src/mesa/drivers/dri/sis/sis_context.c index 07b363826dd..c5a9fdfb2a0 100644 --- a/src/mesa/drivers/dri/sis/sis_context.c +++ b/src/mesa/drivers/dri/sis/sis_context.c @@ -147,7 +147,7 @@ WaitingFor3dIdle(sisContextPtr smesa, int wLen) } } -void sisReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, +void sisReAllocateBuffers(struct gl_context *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -163,7 +163,7 @@ sisCreateContext( gl_api api, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; __DRIscreen *sPriv = driContextPriv->driScreenPriv; sisContextPtr smesa; sisScreenPtr sisScreen; diff --git a/src/mesa/drivers/dri/sis/sis_context.h b/src/mesa/drivers/dri/sis/sis_context.h index 54e98fd00a8..a82a659431e 100644 --- a/src/mesa/drivers/dri/sis/sis_context.h +++ b/src/mesa/drivers/dri/sis/sis_context.h @@ -256,7 +256,7 @@ struct sis_renderbuffer { struct sis_context { /* This must be first in this structure */ - GLcontext *glCtx; + struct gl_context *glCtx; /* Vertex state */ GLuint vertex_size; @@ -444,7 +444,7 @@ extern GLboolean sisCreateContext( gl_api api, void *sharedContextPrivate ); extern void sisDestroyContext( __DRIcontext * ); -void sisReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, +void sisReAllocateBuffers(struct gl_context *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height); extern GLboolean sisMakeCurrent( __DRIcontext *driContextPriv, diff --git a/src/mesa/drivers/dri/sis/sis_dd.c b/src/mesa/drivers/dri/sis/sis_dd.c index af1d9ee0ad0..90e894b842c 100644 --- a/src/mesa/drivers/dri/sis/sis_dd.c +++ b/src/mesa/drivers/dri/sis/sis_dd.c @@ -65,7 +65,7 @@ sisGetBufferSize( struct gl_framebuffer *buffer, /* Return various strings for glGetString(). */ static const GLubyte * -sisGetString( GLcontext *ctx, GLenum name ) +sisGetString( struct gl_context *ctx, GLenum name ) { sisContextPtr smesa = SIS_CONTEXT(ctx); static char buffer[128]; @@ -90,7 +90,7 @@ sisGetString( GLcontext *ctx, GLenum name ) /* Send all commands to the hardware. */ static void -sisFlush( GLcontext *ctx ) +sisFlush( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -101,7 +101,7 @@ sisFlush( GLcontext *ctx ) * completed processing. */ static void -sisFinish( GLcontext *ctx ) +sisFinish( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -118,7 +118,7 @@ sisDeleteRenderbuffer(struct gl_renderbuffer *rb) } static GLboolean -sisRenderbufferStorage(GLcontext *ctx, struct gl_renderbuffer *rb, +sisRenderbufferStorage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { rb->Width = width; diff --git a/src/mesa/drivers/dri/sis/sis_fog.c b/src/mesa/drivers/dri/sis/sis_fog.c index 6c774e010eb..a9b84654a3d 100644 --- a/src/mesa/drivers/dri/sis/sis_fog.c +++ b/src/mesa/drivers/dri/sis/sis_fog.c @@ -40,7 +40,7 @@ static GLint convertFtToFogFt( GLfloat dwInValue ); static GLint doFPtoFixedNoRound( GLfloat dwInValue, int nFraction ); void -sisDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params ) +sisDDFogfv( struct gl_context *ctx, GLenum pname, const GLfloat *params ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *prev = &smesa->prev; diff --git a/src/mesa/drivers/dri/sis/sis_screen.c b/src/mesa/drivers/dri/sis/sis_screen.c index 7ca5031846d..75f6fcf2116 100644 --- a/src/mesa/drivers/dri/sis/sis_screen.c +++ b/src/mesa/drivers/dri/sis/sis_screen.c @@ -262,7 +262,7 @@ sisSwapBuffers(__DRIdrawable *dPriv) { if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { sisContextPtr smesa = (sisContextPtr) dPriv->driContextPriv->driverPrivate; - GLcontext *ctx = smesa->glCtx; + struct gl_context *ctx = smesa->glCtx; if (ctx->Visual.doubleBufferMode) { _mesa_notifySwapBuffers( ctx ); /* flush pending rendering comands */ diff --git a/src/mesa/drivers/dri/sis/sis_span.c b/src/mesa/drivers/dri/sis/sis_span.c index ba7f6d0932e..01c1fc428da 100644 --- a/src/mesa/drivers/dri/sis/sis_span.c +++ b/src/mesa/drivers/dri/sis/sis_span.c @@ -143,7 +143,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. -void sisSpanRenderStart( GLcontext *ctx ) +void sisSpanRenderStart( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -152,7 +152,7 @@ void sisSpanRenderStart( GLcontext *ctx ) WaitEngIdle( smesa ); } -void sisSpanRenderFinish( GLcontext *ctx ) +void sisSpanRenderFinish( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -161,7 +161,7 @@ void sisSpanRenderFinish( GLcontext *ctx ) } void -sisDDInitSpanFuncs( GLcontext *ctx ) +sisDDInitSpanFuncs( struct gl_context *ctx ) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = sisSpanRenderStart; diff --git a/src/mesa/drivers/dri/sis/sis_span.h b/src/mesa/drivers/dri/sis/sis_span.h index eca72027d52..cbe4bbdc551 100644 --- a/src/mesa/drivers/dri/sis/sis_span.h +++ b/src/mesa/drivers/dri/sis/sis_span.h @@ -34,10 +34,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" -extern void sisSpanRenderStart( GLcontext *ctx ); -extern void sisSpanRenderFinish( GLcontext *ctx ); +extern void sisSpanRenderStart( struct gl_context *ctx ); +extern void sisSpanRenderFinish( struct gl_context *ctx ); -extern void sisDDInitSpanFuncs( GLcontext *ctx ); +extern void sisDDInitSpanFuncs( struct gl_context *ctx ); extern void sisSetSpanFunctions(struct sis_renderbuffer *srb, const struct gl_config *vis); diff --git a/src/mesa/drivers/dri/sis/sis_state.c b/src/mesa/drivers/dri/sis/sis_state.c index 6173231a82e..e53c326441b 100644 --- a/src/mesa/drivers/dri/sis/sis_state.c +++ b/src/mesa/drivers/dri/sis/sis_state.c @@ -49,7 +49,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ static void -sisDDAlphaFunc( GLcontext * ctx, GLenum func, GLfloat ref ) +sisDDAlphaFunc( struct gl_context * ctx, GLenum func, GLfloat ref ) { sisContextPtr smesa = SIS_CONTEXT(ctx); GLubyte refbyte; @@ -94,7 +94,7 @@ sisDDAlphaFunc( GLcontext * ctx, GLenum func, GLfloat ref ) } static void -sisDDBlendFuncSeparate( GLcontext *ctx, +sisDDBlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -193,7 +193,7 @@ sisDDBlendFuncSeparate( GLcontext *ctx, */ static void -sisDDDepthFunc( GLcontext * ctx, GLenum func ) +sisDDDepthFunc( struct gl_context * ctx, GLenum func ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *prev = &smesa->prev; @@ -235,7 +235,7 @@ sisDDDepthFunc( GLcontext * ctx, GLenum func ) } void -sisDDDepthMask( GLcontext * ctx, GLboolean flag ) +sisDDDepthMask( struct gl_context * ctx, GLboolean flag ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *prev = &smesa->prev; @@ -277,7 +277,7 @@ sisDDDepthMask( GLcontext * ctx, GLboolean flag ) */ void -sisUpdateClipping( GLcontext *ctx ) +sisUpdateClipping( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -324,7 +324,7 @@ sisUpdateClipping( GLcontext *ctx ) } static void -sisDDScissor( GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) +sisDDScissor( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { if (ctx->Scissor.Enabled) sisUpdateClipping( ctx ); @@ -335,7 +335,7 @@ sisDDScissor( GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) */ static void -sisUpdateCull( GLcontext *ctx ) +sisUpdateCull( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); GLint cullflag, frontface; @@ -356,13 +356,13 @@ sisUpdateCull( GLcontext *ctx ) static void -sisDDCullFace( GLcontext *ctx, GLenum mode ) +sisDDCullFace( struct gl_context *ctx, GLenum mode ) { sisUpdateCull( ctx ); } static void -sisDDFrontFace( GLcontext *ctx, GLenum mode ) +sisDDFrontFace( struct gl_context *ctx, GLenum mode ) { sisUpdateCull( ctx ); } @@ -371,7 +371,7 @@ sisDDFrontFace( GLcontext *ctx, GLenum mode ) * Masks */ -static void sisDDColorMask( GLcontext *ctx, +static void sisDDColorMask( struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -402,7 +402,7 @@ static void sisDDColorMask( GLcontext *ctx, * Rendering attributes */ -static void sisUpdateSpecular(GLcontext *ctx) +static void sisUpdateSpecular(struct gl_context *ctx) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *current = &smesa->current; @@ -413,7 +413,7 @@ static void sisUpdateSpecular(GLcontext *ctx) current->hwCapEnable &= ~MASK_SpecularEnable; } -static void sisDDLightModelfv(GLcontext *ctx, GLenum pname, +static void sisDDLightModelfv(struct gl_context *ctx, GLenum pname, const GLfloat *param) { if (pname == GL_LIGHT_MODEL_COLOR_CONTROL) { @@ -421,7 +421,7 @@ static void sisDDLightModelfv(GLcontext *ctx, GLenum pname, } } -static void sisDDShadeModel( GLcontext *ctx, GLenum mode ) +static void sisDDShadeModel( struct gl_context *ctx, GLenum mode ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -437,7 +437,7 @@ static void sisDDShadeModel( GLcontext *ctx, GLenum mode ) * Viewport */ -static void sisCalcViewport( GLcontext *ctx ) +static void sisCalcViewport( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -453,14 +453,14 @@ static void sisCalcViewport( GLcontext *ctx ) m[MAT_TZ] = v[MAT_TZ] * smesa->depth_scale; } -static void sisDDViewport( GLcontext *ctx, +static void sisDDViewport( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { sisCalcViewport( ctx ); } -static void sisDDDepthRange( GLcontext *ctx, +static void sisDDDepthRange( struct gl_context *ctx, GLclampd nearval, GLclampd farval ) { sisCalcViewport( ctx ); @@ -471,7 +471,7 @@ static void sisDDDepthRange( GLcontext *ctx, */ static void -sisDDLogicOpCode( GLcontext *ctx, GLenum opcode ) +sisDDLogicOpCode( struct gl_context *ctx, GLenum opcode ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -537,7 +537,7 @@ sisDDLogicOpCode( GLcontext *ctx, GLenum opcode ) } } -void sisDDDrawBuffer( GLcontext *ctx, GLenum mode ) +void sisDDDrawBuffer( struct gl_context *ctx, GLenum mode ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *prev = &smesa->prev; @@ -589,7 +589,7 @@ void sisDDDrawBuffer( GLcontext *ctx, GLenum mode ) */ static void -sisDDEnable( GLcontext * ctx, GLenum cap, GLboolean state ) +sisDDEnable( struct gl_context * ctx, GLenum cap, GLboolean state ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -672,7 +672,7 @@ sisDDEnable( GLcontext * ctx, GLenum cap, GLboolean state ) /* Called before beginning of rendering. */ void -sisUpdateHWState( GLcontext *ctx ) +sisUpdateHWState( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); __GLSiSHardware *prev = &smesa->prev; @@ -698,7 +698,7 @@ sisUpdateHWState( GLcontext *ctx ) } static void -sisDDInvalidateState( GLcontext *ctx, GLuint new_state ) +sisDDInvalidateState( struct gl_context *ctx, GLuint new_state ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -715,7 +715,7 @@ void sisDDInitState( sisContextPtr smesa ) { __GLSiSHardware *current = &smesa->current; __GLSiSHardware *prev = &(smesa->prev); - GLcontext *ctx = smesa->glCtx; + struct gl_context *ctx = smesa->glCtx; /* add Texture Perspective Enable */ prev->hwCapEnable = MASK_FogPerspectiveEnable | MASK_TextureCacheEnable | @@ -826,7 +826,7 @@ void sisDDInitState( sisContextPtr smesa ) /* Initialize the driver's state functions. */ -void sisDDInitStateFuncs( GLcontext *ctx ) +void sisDDInitStateFuncs( struct gl_context *ctx ) { ctx->Driver.UpdateState = sisDDInvalidateState; diff --git a/src/mesa/drivers/dri/sis/sis_state.h b/src/mesa/drivers/dri/sis/sis_state.h index 2d0ea9c5fb8..dcade4a9796 100644 --- a/src/mesa/drivers/dri/sis/sis_state.h +++ b/src/mesa/drivers/dri/sis/sis_state.h @@ -34,35 +34,35 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "sis_context.h" /* sis6326_clear.c */ -extern void sis6326DDClear( GLcontext *ctx, GLbitfield mask ); -extern void sis6326DDClearColor( GLcontext * ctx, const GLfloat color[4] ); -extern void sis6326DDClearDepth( GLcontext * ctx, GLclampd d ); +extern void sis6326DDClear( struct gl_context *ctx, GLbitfield mask ); +extern void sis6326DDClearColor( struct gl_context * ctx, const GLfloat color[4] ); +extern void sis6326DDClearDepth( struct gl_context * ctx, GLclampd d ); extern void sis6326UpdateZPattern(sisContextPtr smesa, GLclampd z); /* sis_clear.c */ -extern void sisDDClear( GLcontext *ctx, GLbitfield mask ); -extern void sisDDClearColor( GLcontext * ctx, const GLfloat color[4] ); -extern void sisDDClearDepth( GLcontext * ctx, GLclampd d ); -extern void sisDDClearStencil( GLcontext * ctx, GLint s ); +extern void sisDDClear( struct gl_context *ctx, GLbitfield mask ); +extern void sisDDClearColor( struct gl_context * ctx, const GLfloat color[4] ); +extern void sisDDClearDepth( struct gl_context * ctx, GLclampd d ); +extern void sisDDClearStencil( struct gl_context * ctx, GLint s ); extern void sisUpdateZStencilPattern( sisContextPtr smesa, GLclampd z, int stencil ); /* sis_fog.c */ -extern void sisDDFogfv( GLcontext * ctx, GLenum pname, const GLfloat * params ); +extern void sisDDFogfv( struct gl_context * ctx, GLenum pname, const GLfloat * params ); /* sis6326_state.c */ extern void sis6326DDInitState( sisContextPtr smesa ); -extern void sis6326DDInitStateFuncs( GLcontext *ctx ); -extern void sis6326UpdateClipping( GLcontext * gc ); -extern void sis6326DDDrawBuffer( GLcontext *ctx, GLenum mode ); -extern void sis6326UpdateHWState( GLcontext *ctx ); +extern void sis6326DDInitStateFuncs( struct gl_context *ctx ); +extern void sis6326UpdateClipping( struct gl_context * gc ); +extern void sis6326DDDrawBuffer( struct gl_context *ctx, GLenum mode ); +extern void sis6326UpdateHWState( struct gl_context *ctx ); /* sis_state.c */ extern void sisDDInitState( sisContextPtr smesa ); -extern void sisDDInitStateFuncs( GLcontext *ctx ); -extern void sisDDDepthMask( GLcontext * ctx, GLboolean flag ); -extern void sisUpdateClipping( GLcontext * gc ); -extern void sisDDDrawBuffer( GLcontext *ctx, GLenum mode ); -extern void sisUpdateHWState( GLcontext *ctx ); +extern void sisDDInitStateFuncs( struct gl_context *ctx ); +extern void sisDDDepthMask( struct gl_context * ctx, GLboolean flag ); +extern void sisUpdateClipping( struct gl_context * gc ); +extern void sisDDDrawBuffer( struct gl_context *ctx, GLenum mode ); +extern void sisUpdateHWState( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/sis/sis_stencil.c b/src/mesa/drivers/dri/sis/sis_stencil.c index 55c0440ebae..92eb08f31fb 100644 --- a/src/mesa/drivers/dri/sis/sis_stencil.c +++ b/src/mesa/drivers/dri/sis/sis_stencil.c @@ -36,7 +36,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "sis_stencil.h" static void -sisDDStencilFuncSeparate( GLcontext * ctx, GLenum face, +sisDDStencilFuncSeparate( struct gl_context * ctx, GLenum face, GLenum func, GLint ref, GLuint mask ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -85,7 +85,7 @@ sisDDStencilFuncSeparate( GLcontext * ctx, GLenum face, } static void -sisDDStencilMaskSeparate( GLcontext * ctx, GLenum face, GLuint mask ) +sisDDStencilMaskSeparate( struct gl_context * ctx, GLenum face, GLuint mask ) { if (!ctx->Visual.stencilBits) return; @@ -95,7 +95,7 @@ sisDDStencilMaskSeparate( GLcontext * ctx, GLenum face, GLuint mask ) } static void -sisDDStencilOpSeparate( GLcontext * ctx, GLenum face, GLenum fail, +sisDDStencilOpSeparate( struct gl_context * ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -197,7 +197,7 @@ sisDDStencilOpSeparate( GLcontext * ctx, GLenum face, GLenum fail, } void -sisDDInitStencilFuncs( GLcontext *ctx ) +sisDDInitStencilFuncs( struct gl_context *ctx ) { ctx->Driver.StencilFuncSeparate = sisDDStencilFuncSeparate; ctx->Driver.StencilMaskSeparate = sisDDStencilMaskSeparate; diff --git a/src/mesa/drivers/dri/sis/sis_stencil.h b/src/mesa/drivers/dri/sis/sis_stencil.h index 6b556c43781..9d061e87fd7 100644 --- a/src/mesa/drivers/dri/sis/sis_stencil.h +++ b/src/mesa/drivers/dri/sis/sis_stencil.h @@ -31,6 +31,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __SIS_STENCIL_H__ #define __SIS_STENCIL_H__ -extern void sisDDInitStencilFuncs( GLcontext *ctx ); +extern void sisDDInitStencilFuncs( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/sis/sis_tex.c b/src/mesa/drivers/dri/sis/sis_tex.c index 31709c3af6e..bb4896d9bdf 100644 --- a/src/mesa/drivers/dri/sis/sis_tex.c +++ b/src/mesa/drivers/dri/sis/sis_tex.c @@ -152,7 +152,7 @@ sisFreeTexImage( sisContextPtr smesa, sisTexObjPtr t, int level ) } static void -sisTexEnv( GLcontext *ctx, GLenum target, GLenum pname, const GLfloat *param ) +sisTexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -160,7 +160,7 @@ sisTexEnv( GLcontext *ctx, GLenum target, GLenum pname, const GLfloat *param ) } static void -sisTexParameter( GLcontext *ctx, GLenum target, +sisTexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat *params ) { @@ -170,7 +170,7 @@ sisTexParameter( GLcontext *ctx, GLenum target, } static void -sisBindTexture( GLcontext *ctx, GLenum target, +sisBindTexture( struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -194,7 +194,7 @@ sisBindTexture( GLcontext *ctx, GLenum target, } static void -sisDeleteTexture( GLcontext * ctx, struct gl_texture_object *texObj ) +sisDeleteTexture( struct gl_context * ctx, struct gl_texture_object *texObj ) { sisContextPtr smesa = SIS_CONTEXT(ctx); sisTexObjPtr t; @@ -220,14 +220,14 @@ sisDeleteTexture( GLcontext * ctx, struct gl_texture_object *texObj ) _mesa_delete_texture_object(ctx, texObj); } -static GLboolean sisIsTextureResident( GLcontext * ctx, +static GLboolean sisIsTextureResident( struct gl_context * ctx, struct gl_texture_object *texObj ) { return (texObj->DriverData != NULL); } static gl_format -sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat, +sisChooseTextureFormat( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -352,7 +352,7 @@ sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat, } } -static void sisTexImage1D( GLcontext *ctx, GLenum target, GLint level, +static void sisTexImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -389,7 +389,7 @@ static void sisTexImage1D( GLcontext *ctx, GLenum target, GLint level, } -static void sisTexSubImage1D( GLcontext *ctx, +static void sisTexSubImage1D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -439,7 +439,7 @@ static void sisTexSubImage1D( GLcontext *ctx, smesa->TexStates[ctx->Texture.CurrentUnit] |= NEW_TEXTURING; } -static void sisTexImage2D( GLcontext *ctx, GLenum target, GLint level, +static void sisTexImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -475,7 +475,7 @@ static void sisTexImage2D( GLcontext *ctx, GLenum target, GLint level, smesa->TexStates[ctx->Texture.CurrentUnit] |= NEW_TEXTURING; } -static void sisTexSubImage2D( GLcontext *ctx, +static void sisTexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -544,7 +544,7 @@ static void sisTexSubImage2D( GLcontext *ctx, * texture object from the core mesa gl_texture_object. Not done at this time. */ static struct gl_texture_object * -sisNewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +sisNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; obj = _mesa_new_texture_object(ctx, name, target); diff --git a/src/mesa/drivers/dri/sis/sis_tex.h b/src/mesa/drivers/dri/sis/sis_tex.h index c499e80e86d..f467b7dca9e 100644 --- a/src/mesa/drivers/dri/sis/sis_tex.h +++ b/src/mesa/drivers/dri/sis/sis_tex.h @@ -32,6 +32,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define __SIS_TEX_H__ extern void sisInitTextureFuncs( struct dd_function_table *table ); -extern void sisUpdateTextureState( GLcontext *ctx ); +extern void sisUpdateTextureState( struct gl_context *ctx ); #endif /* __SIS_TEX_H__ */ diff --git a/src/mesa/drivers/dri/sis/sis_texstate.c b/src/mesa/drivers/dri/sis/sis_texstate.c index 7b0eebd066f..daec2393211 100644 --- a/src/mesa/drivers/dri/sis/sis_texstate.c +++ b/src/mesa/drivers/dri/sis/sis_texstate.c @@ -46,7 +46,7 @@ static GLint TransferTexturePitch (GLint dwPitch); /* Handle texenv stuff, called from validate_texture (renderstart) */ static void -sis_set_texture_env0( GLcontext *ctx, struct gl_texture_object *texObj, +sis_set_texture_env0( struct gl_context *ctx, struct gl_texture_object *texObj, int unit ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -182,7 +182,7 @@ sis_set_texture_env0( GLcontext *ctx, struct gl_texture_object *texObj, /* Handle texenv stuff, called from validate_texture (renderstart) */ static void -sis_set_texture_env1( GLcontext *ctx, struct gl_texture_object *texObj, +sis_set_texture_env1( struct gl_context *ctx, struct gl_texture_object *texObj, int unit) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -318,7 +318,7 @@ sis_set_texture_env1( GLcontext *ctx, struct gl_texture_object *texObj, /* Returns 0 if a software fallback is necessary */ static GLboolean -sis_set_texobj_parm( GLcontext *ctx, struct gl_texture_object *texObj, +sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, int hw_unit ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -583,7 +583,7 @@ sis_set_texobj_parm( GLcontext *ctx, struct gl_texture_object *texObj, /* Disable a texture unit, called from validate_texture */ static void -sis_reset_texture_env (GLcontext *ctx, int hw_unit) +sis_reset_texture_env (struct gl_context *ctx, int hw_unit) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -620,7 +620,7 @@ sis_reset_texture_env (GLcontext *ctx, int hw_unit) } } -static void updateTextureUnit( GLcontext *ctx, int unit ) +static void updateTextureUnit( struct gl_context *ctx, int unit ) { sisContextPtr smesa = SIS_CONTEXT( ctx ); const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -656,7 +656,7 @@ static void updateTextureUnit( GLcontext *ctx, int unit ) } -void sisUpdateTextureState( GLcontext *ctx ) +void sisUpdateTextureState( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT( ctx ); int i; diff --git a/src/mesa/drivers/dri/sis/sis_tris.c b/src/mesa/drivers/dri/sis/sis_tris.c index d109a8c41e9..8db593fb9c7 100644 --- a/src/mesa/drivers/dri/sis/sis_tris.c +++ b/src/mesa/drivers/dri/sis/sis_tris.c @@ -92,8 +92,8 @@ static const GLuint hw_prim_agp_shade[OP_3D_TRIANGLE_DRAW+1] = { MASK_PsShadingFlatC }; -static void sisRasterPrimitive( GLcontext *ctx, GLuint hwprim ); -static void sisRenderPrimitive( GLcontext *ctx, GLenum prim ); +static void sisRasterPrimitive( struct gl_context *ctx, GLuint hwprim ); +static void sisRenderPrimitive( struct gl_context *ctx, GLenum prim ); /*********************************************************************** * Emit primitives as inline vertices * @@ -556,7 +556,7 @@ sis_fallback_tri( sisContextPtr smesa, sisVertex *v1, sisVertex *v2 ) { - GLcontext *ctx = smesa->glCtx; + struct gl_context *ctx = smesa->glCtx; SWvertex v[3]; _swsetup_Translate( ctx, v0, &v[0] ); _swsetup_Translate( ctx, v1, &v[1] ); @@ -573,7 +573,7 @@ sis_fallback_line( sisContextPtr smesa, sisVertex *v0, sisVertex *v1 ) { - GLcontext *ctx = smesa->glCtx; + struct gl_context *ctx = smesa->glCtx; SWvertex v[2]; _swsetup_Translate( ctx, v0, &v[0] ); _swsetup_Translate( ctx, v1, &v[1] ); @@ -588,7 +588,7 @@ static void sis_fallback_point( sisContextPtr smesa, sisVertex *v0 ) { - GLcontext *ctx = smesa->glCtx; + struct gl_context *ctx = smesa->glCtx; SWvertex v[1]; _swsetup_Translate( ctx, v0, &v[0] ); sisSpanRenderStart( ctx ); @@ -643,7 +643,7 @@ sis_fallback_point( sisContextPtr smesa, #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED) #define _SIS_NEW_RENDER_STATE (ANY_RASTER_FLAGS | ANY_FALLBACK_FLAGS) -static void sisChooseRenderState(GLcontext *ctx) +static void sisChooseRenderState(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); sisContextPtr smesa = SIS_CONTEXT( ctx ); @@ -701,7 +701,7 @@ static void sisChooseRenderState(GLcontext *ctx) /**********************************************************************/ /* Multipass rendering for front buffering */ /**********************************************************************/ -static GLboolean multipass_cliprect( GLcontext *ctx, GLuint pass ) +static GLboolean multipass_cliprect( struct gl_context *ctx, GLuint pass ) { sisContextPtr smesa = SIS_CONTEXT( ctx ); @@ -743,7 +743,7 @@ static GLboolean multipass_cliprect( GLcontext *ctx, GLuint pass ) /* Validate state at pipeline start */ /**********************************************************************/ -static void sisRunPipeline( GLcontext *ctx ) +static void sisRunPipeline( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT( ctx ); @@ -776,7 +776,7 @@ static void sisRunPipeline( GLcontext *ctx ) * and lines, points and bitmaps. */ -static void sisRasterPrimitive( GLcontext *ctx, GLuint hwprim ) +static void sisRasterPrimitive( struct gl_context *ctx, GLuint hwprim ) { sisContextPtr smesa = SIS_CONTEXT(ctx); if (smesa->hw_primitive != hwprim) { @@ -810,7 +810,7 @@ static void sisRasterPrimitive( GLcontext *ctx, GLuint hwprim ) } } -static void sisRenderPrimitive( GLcontext *ctx, GLenum prim ) +static void sisRenderPrimitive( struct gl_context *ctx, GLenum prim ) { sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -836,7 +836,7 @@ do { \ smesa->vertex_attr_count++; \ } while (0) -static void sisRenderStart( GLcontext *ctx ) +static void sisRenderStart( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -927,7 +927,7 @@ static void sisRenderStart( GLcontext *ctx ) } } -static void sisRenderFinish( GLcontext *ctx ) +static void sisRenderFinish( struct gl_context *ctx ) { } @@ -1039,7 +1039,7 @@ static const char *getFallbackString(GLuint bit) return fallbackStrings[i]; } -void sisFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void sisFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); sisContextPtr smesa = SIS_CONTEXT(ctx); @@ -1090,7 +1090,7 @@ void sisFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) /* Initialization. */ /**********************************************************************/ -void sisInitTriFuncs( GLcontext *ctx ) +void sisInitTriFuncs( struct gl_context *ctx ) { sisContextPtr smesa = SIS_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/sis/sis_tris.h b/src/mesa/drivers/dri/sis/sis_tris.h index b34fe8c7c98..d454090607b 100644 --- a/src/mesa/drivers/dri/sis/sis_tris.h +++ b/src/mesa/drivers/dri/sis/sis_tris.h @@ -34,10 +34,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "sis_lock.h" #include "main/mtypes.h" -extern void sisInitTriFuncs( GLcontext *ctx ); +extern void sisInitTriFuncs( struct gl_context *ctx ); extern void sisFlushPrims( sisContextPtr smesa ); extern void sisFlushPrimsLocked( sisContextPtr smesa ); -extern void sisFallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void sisFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( smesa, bit, mode ) sisFallback( smesa->glCtx, bit, mode ) diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 5b521356270..52ba3acf658 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -273,7 +273,7 @@ bytes_per_line(unsigned pitch_bits, unsigned mul) } static GLboolean -swrast_alloc_front_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +swrast_alloc_front_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { struct swrast_renderbuffer *xrb = swrast_renderbuffer(rb); @@ -290,7 +290,7 @@ swrast_alloc_front_storage(GLcontext *ctx, struct gl_renderbuffer *rb, } static GLboolean -swrast_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +swrast_alloc_back_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { struct swrast_renderbuffer *xrb = swrast_renderbuffer(rb); @@ -499,7 +499,7 @@ get_window_size( struct gl_framebuffer *fb, GLsizei *w, GLsizei *h ) } static void -swrast_check_and_update_window_size( GLcontext *ctx, struct gl_framebuffer *fb ) +swrast_check_and_update_window_size( struct gl_context *ctx, struct gl_framebuffer *fb ) { GLsizei width, height; @@ -510,7 +510,7 @@ swrast_check_and_update_window_size( GLcontext *ctx, struct gl_framebuffer *fb ) } static const GLubyte * -get_string(GLcontext *ctx, GLenum pname) +get_string(struct gl_context *ctx, GLenum pname) { (void) ctx; switch (pname) { @@ -524,7 +524,7 @@ get_string(GLcontext *ctx, GLenum pname) } static void -update_state( GLcontext *ctx, GLuint new_state ) +update_state( struct gl_context *ctx, GLuint new_state ) { /* not much to do here - pass it on */ _swrast_InvalidateState( ctx, new_state ); @@ -534,7 +534,7 @@ update_state( GLcontext *ctx, GLuint new_state ) } static void -viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) +viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { struct gl_framebuffer *draw = ctx->WinSysDrawBuffer; struct gl_framebuffer *read = ctx->WinSysReadBuffer; @@ -543,7 +543,7 @@ viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) swrast_check_and_update_window_size(ctx, read); } -static gl_format swrastChooseTextureFormat(GLcontext * ctx, +static gl_format swrastChooseTextureFormat(struct gl_context * ctx, GLint internalFormat, GLenum format, GLenum type) @@ -575,8 +575,8 @@ dri_create_context(gl_api api, { struct dri_context *ctx = NULL; struct dri_context *share = (struct dri_context *)sharedContextPrivate; - GLcontext *mesaCtx = NULL; - GLcontext *sharedCtx = NULL; + struct gl_context *mesaCtx = NULL; + struct gl_context *sharedCtx = NULL; struct dd_function_table functions; TRACE; @@ -646,7 +646,7 @@ dri_destroy_context(__DRIcontext * cPriv) if (cPriv) { struct dri_context *ctx = dri_context(cPriv); - GLcontext *mesaCtx; + struct gl_context *mesaCtx; mesaCtx = &ctx->Base; @@ -664,7 +664,7 @@ dri_make_current(__DRIcontext * cPriv, __DRIdrawable * driDrawPriv, __DRIdrawable * driReadPriv) { - GLcontext *mesaCtx; + struct gl_context *mesaCtx; struct gl_framebuffer *mesaDraw; struct gl_framebuffer *mesaRead; TRACE; diff --git a/src/mesa/drivers/dri/swrast/swrast_priv.h b/src/mesa/drivers/dri/swrast/swrast_priv.h index 054bdba27b6..bdb52ef26f1 100644 --- a/src/mesa/drivers/dri/swrast/swrast_priv.h +++ b/src/mesa/drivers/dri/swrast/swrast_priv.h @@ -58,7 +58,7 @@ struct dri_context { /* mesa, base class, must be first */ - GLcontext Base; + struct gl_context Base; /* dri */ __DRIcontext *cPriv; @@ -71,7 +71,7 @@ dri_context(__DRIcontext * driContextPriv) } static INLINE struct dri_context * -swrast_context(GLcontext *ctx) +swrast_context(struct gl_context *ctx) { return (struct dri_context *) ctx; } diff --git a/src/mesa/drivers/dri/swrast/swrast_spantemp.h b/src/mesa/drivers/dri/swrast/swrast_spantemp.h index 1e9405eebfb..69f8d9f2404 100644 --- a/src/mesa/drivers/dri/swrast/swrast_spantemp.h +++ b/src/mesa/drivers/dri/swrast/swrast_spantemp.h @@ -37,7 +37,7 @@ #define _SWRAST_SPANTEMP_ONCE static INLINE void -PUT_PIXEL( GLcontext *glCtx, GLint x, GLint y, GLvoid *p ) +PUT_PIXEL( struct gl_context *glCtx, GLint x, GLint y, GLvoid *p ) { __DRIcontext *ctx = swrast_context(glCtx)->cPriv; __DRIdrawable *draw = swrast_drawable(glCtx->DrawBuffer)->dPriv; @@ -51,7 +51,7 @@ PUT_PIXEL( GLcontext *glCtx, GLint x, GLint y, GLvoid *p ) static INLINE void -GET_PIXEL( GLcontext *glCtx, GLint x, GLint y, GLubyte *p ) +GET_PIXEL( struct gl_context *glCtx, GLint x, GLint y, GLubyte *p ) { __DRIcontext *ctx = swrast_context(glCtx)->cPriv; __DRIdrawable *read = swrast_drawable(glCtx->ReadBuffer)->dPriv; @@ -63,7 +63,7 @@ GET_PIXEL( GLcontext *glCtx, GLint x, GLint y, GLubyte *p ) } static INLINE void -PUT_ROW( GLcontext *glCtx, GLint x, GLint y, GLuint n, char *row ) +PUT_ROW( struct gl_context *glCtx, GLint x, GLint y, GLuint n, char *row ) { __DRIcontext *ctx = swrast_context(glCtx)->cPriv; __DRIdrawable *draw = swrast_drawable(glCtx->DrawBuffer)->dPriv; @@ -76,7 +76,7 @@ PUT_ROW( GLcontext *glCtx, GLint x, GLint y, GLuint n, char *row ) } static INLINE void -GET_ROW( GLcontext *glCtx, GLint x, GLint y, GLuint n, char *row ) +GET_ROW( struct gl_context *glCtx, GLint x, GLint y, GLuint n, char *row ) { __DRIcontext *ctx = swrast_context(glCtx)->cPriv; __DRIdrawable *read = swrast_drawable(glCtx->ReadBuffer)->dPriv; @@ -118,7 +118,7 @@ GET_ROW( GLcontext *glCtx, GLint x, GLint y, GLuint n, char *row ) static void -NAME(get_row)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(get_row)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values ) { #ifdef SPAN_VARS @@ -138,7 +138,7 @@ NAME(get_row)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(get_values)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(get_values)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values ) { #ifdef SPAN_VARS @@ -156,7 +156,7 @@ NAME(get_values)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_row)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte mask[] ) { @@ -189,7 +189,7 @@ NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_row_rgb)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_row_rgb)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte mask[] ) { @@ -230,7 +230,7 @@ NAME(put_row_rgb)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_mono_row)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte mask[] ) { @@ -263,7 +263,7 @@ NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_values)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_values)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte mask[] ) { @@ -286,7 +286,7 @@ NAME(put_values)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_mono_values)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_mono_values)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte mask[] ) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.c b/src/mesa/drivers/dri/tdfx/tdfx_context.c index adefc1472a7..63dfa5ae746 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.c @@ -124,7 +124,7 @@ static const struct dri_extension napalm_extensions[] = /* * Enable/Disable the extensions for this context. */ -static void tdfxDDInitExtensions( GLcontext *ctx ) +static void tdfxDDInitExtensions( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -168,7 +168,7 @@ GLboolean tdfxCreateContext( gl_api api, void *sharedContextPrivate ) { tdfxContextPtr fxMesa; - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; __DRIscreen *sPriv = driContextPriv->driScreenPriv; tdfxScreenPrivate *fxScreen = (tdfxScreenPrivate *) sPriv->private; TDFXSAREAPriv *saPriv = (TDFXSAREAPriv *) ((char *) sPriv->pSAREA + @@ -635,7 +635,7 @@ tdfxMakeCurrent( __DRIcontext *driContextPriv, if ( driContextPriv ) { tdfxContextPtr newFx = (tdfxContextPtr) driContextPriv->driverPrivate; - GLcontext *newCtx = newFx->glCtx; + struct gl_context *newCtx = newFx->glCtx; GET_CURRENT_CONTEXT(curCtx); if ((newFx->driDrawable != driDrawPriv) diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.h b/src/mesa/drivers/dri/tdfx/tdfx_context.h index 2b2807903be..fb38419dcdd 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.h @@ -810,7 +810,7 @@ typedef void (*tdfx_point_func)( tdfxContextPtr, tdfxVertex * ); struct tdfx_context { /* Set once and never changed: */ - GLcontext *glCtx; /* The core Mesa context */ + struct gl_context *glCtx; /* The core Mesa context */ GLuint new_gl_state; GLuint new_state; @@ -957,10 +957,10 @@ extern GLboolean tdfxInitGlide( tdfxContextPtr tmesa ); extern void -FX_grColorMaskv(GLcontext *ctx, const GLboolean rgba[4]); +FX_grColorMaskv(struct gl_context *ctx, const GLboolean rgba[4]); extern void -FX_grColorMaskv_NoLock(GLcontext *ctx, const GLboolean rgba[4]); +FX_grColorMaskv_NoLock(struct gl_context *ctx, const GLboolean rgba[4]); /* Color packing utilities diff --git a/src/mesa/drivers/dri/tdfx/tdfx_dd.c b/src/mesa/drivers/dri/tdfx/tdfx_dd.c index 101b6da6878..d60931ad7fd 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_dd.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_dd.c @@ -54,7 +54,7 @@ const GLboolean true4[4] = { GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE }; * checks for this rather than doing a glGet(GL_MAX_TEXTURE_SIZE). * Why? */ -static const GLubyte *tdfxDDGetString( GLcontext *ctx, GLenum name ) +static const GLubyte *tdfxDDGetString( struct gl_context *ctx, GLenum name ) { tdfxContextPtr fxMesa = (tdfxContextPtr) ctx->DriverCtx; @@ -103,7 +103,7 @@ static const GLubyte *tdfxDDGetString( GLcontext *ctx, GLenum name ) static void -tdfxBeginQuery(GLcontext *ctx, struct gl_query_object *q) +tdfxBeginQuery(struct gl_context *ctx, struct gl_query_object *q) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -119,7 +119,7 @@ tdfxBeginQuery(GLcontext *ctx, struct gl_query_object *q) static void -tdfxEndQuery(GLcontext *ctx, struct gl_query_object *q) +tdfxEndQuery(struct gl_context *ctx, struct gl_query_object *q) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); FxI32 total_pixels; @@ -187,7 +187,7 @@ void tdfxDDInitDriverFuncs( const struct gl_config *visual, */ void -FX_grColorMaskv(GLcontext *ctx, const GLboolean rgba[4]) +FX_grColorMaskv(struct gl_context *ctx, const GLboolean rgba[4]) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); LOCK_HARDWARE(fxMesa); @@ -207,7 +207,7 @@ FX_grColorMaskv(GLcontext *ctx, const GLboolean rgba[4]) } void -FX_grColorMaskv_NoLock(GLcontext *ctx, const GLboolean rgba[4]) +FX_grColorMaskv_NoLock(struct gl_context *ctx, const GLboolean rgba[4]) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); if (ctx->Visual.redBits == 8) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_pixels.c b/src/mesa/drivers/dri/tdfx/tdfx_pixels.c index 5a7184056dc..bbbd0d5740f 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_pixels.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_pixels.c @@ -153,7 +153,7 @@ inClipRects_Region(tdfxContextPtr fxMesa, int x, int y, int width, int height) #if 0 GLboolean -tdfx_bitmap_R5G6B5(GLcontext * ctx, GLint px, GLint py, +tdfx_bitmap_R5G6B5(struct gl_context * ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte * bitmap) @@ -317,7 +317,7 @@ tdfx_bitmap_R5G6B5(GLcontext * ctx, GLint px, GLint py, #if 0 GLboolean -tdfx_bitmap_R8G8B8A8(GLcontext * ctx, GLint px, GLint py, +tdfx_bitmap_R8G8B8A8(struct gl_context * ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte * bitmap) @@ -475,7 +475,7 @@ tdfx_bitmap_R8G8B8A8(GLcontext * ctx, GLint px, GLint py, #endif void -tdfx_readpixels_R5G6B5(GLcontext * ctx, GLint x, GLint y, +tdfx_readpixels_R5G6B5(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, @@ -532,7 +532,7 @@ tdfx_readpixels_R5G6B5(GLcontext * ctx, GLint x, GLint y, } void -tdfx_readpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y, +tdfx_readpixels_R8G8B8A8(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, @@ -591,7 +591,7 @@ tdfx_readpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y, } void -tdfx_drawpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y, +tdfx_drawpixels_R8G8B8A8(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, diff --git a/src/mesa/drivers/dri/tdfx/tdfx_pixels.h b/src/mesa/drivers/dri/tdfx/tdfx_pixels.h index f5e5427653e..f4cc20fd625 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_pixels.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_pixels.h @@ -41,33 +41,33 @@ #include "main/context.h" extern void -tdfx_bitmap_R5G6B5( GLcontext *ctx, GLint px, GLint py, +tdfx_bitmap_R5G6B5( struct gl_context *ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ); extern void -tdfx_bitmap_R8G8B8A8( GLcontext *ctx, GLint px, GLint py, +tdfx_bitmap_R8G8B8A8( struct gl_context *ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ); extern void -tdfx_readpixels_R5G6B5( GLcontext *ctx, GLint x, GLint y, +tdfx_readpixels_R5G6B5( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, GLvoid *dstImage ); extern void -tdfx_readpixels_R8G8B8A8( GLcontext *ctx, GLint x, GLint y, +tdfx_readpixels_R8G8B8A8( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, GLvoid *dstImage ); extern void -tdfx_drawpixels_R8G8B8A8( GLcontext *ctx, GLint x, GLint y, +tdfx_drawpixels_R8G8B8A8( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, diff --git a/src/mesa/drivers/dri/tdfx/tdfx_render.c b/src/mesa/drivers/dri/tdfx/tdfx_render.c index 979bcd45140..f0837567877 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_render.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_render.c @@ -45,7 +45,7 @@ /* Clear the color and/or depth buffers. */ -static void tdfxClear( GLcontext *ctx, GLbitfield mask ) +static void tdfxClear( struct gl_context *ctx, GLbitfield mask ) { tdfxContextPtr fxMesa = (tdfxContextPtr) ctx->DriverCtx; GLbitfield softwareMask = mask & (BUFFER_BIT_ACCUM); @@ -314,7 +314,7 @@ static void tdfxClear( GLcontext *ctx, GLbitfield mask ) -static void tdfxFinish( GLcontext *ctx ) +static void tdfxFinish( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -325,7 +325,7 @@ static void tdfxFinish( GLcontext *ctx ) UNLOCK_HARDWARE( fxMesa ); } -static void tdfxFlush( GLcontext *ctx ) +static void tdfxFlush( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -528,7 +528,7 @@ static void uploadTextureSource( tdfxContextPtr fxMesa ) static void uploadTextureImages( tdfxContextPtr fxMesa ) { - GLcontext *ctx = fxMesa->glCtx; + struct gl_context *ctx = fxMesa->glCtx; int unit; for (unit = 0; unit < TDFX_NUM_TMU; unit++) { if (ctx->Texture.Unit[unit]._ReallyEnabled & (TEXTURE_1D_BIT|TEXTURE_2D_BIT)) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_span.c b/src/mesa/drivers/dri/tdfx/tdfx_span.c index 5af4a4602e3..12524e2316a 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_span.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_span.c @@ -582,7 +582,7 @@ GetFbParams(tdfxContextPtr fxMesa, static void -tdfxDDWriteDepthSpan(GLcontext * ctx, struct gl_renderbuffer *rb, +tdfxDDWriteDepthSpan(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, const GLubyte mask[]) { @@ -819,7 +819,7 @@ tdfxDDWriteDepthSpan(GLcontext * ctx, struct gl_renderbuffer *rb, } static void -tdfxDDWriteMonoDepthSpan(GLcontext * ctx, struct gl_renderbuffer *rb, +tdfxDDWriteMonoDepthSpan(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, const GLubyte mask[]) { @@ -833,7 +833,7 @@ tdfxDDWriteMonoDepthSpan(GLcontext * ctx, struct gl_renderbuffer *rb, static void -tdfxDDReadDepthSpan(GLcontext * ctx, struct gl_renderbuffer *rb, +tdfxDDReadDepthSpan(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) { GLuint *depth = (GLuint *) values; @@ -937,7 +937,7 @@ tdfxDDReadDepthSpan(GLcontext * ctx, struct gl_renderbuffer *rb, static void -tdfxDDWriteDepthPixels(GLcontext * ctx, struct gl_renderbuffer *rb, +tdfxDDWriteDepthPixels(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], const void *values, const GLubyte mask[]) { @@ -1020,7 +1020,7 @@ tdfxDDWriteDepthPixels(GLcontext * ctx, struct gl_renderbuffer *rb, static void -tdfxDDReadDepthPixels(GLcontext * ctx, struct gl_renderbuffer *rb, GLuint n, +tdfxDDReadDepthPixels(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], void *values) { GLuint *depth = (GLuint *) values; @@ -1107,7 +1107,7 @@ tdfxDDReadDepthPixels(GLcontext * ctx, struct gl_renderbuffer *rb, GLuint n, #define BUILD_ZS(z, s) (((s) << 24) | (z)) static void -write_stencil_span(GLcontext * ctx, struct gl_renderbuffer *rb, +write_stencil_span(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *values, const GLubyte mask[]) { @@ -1166,7 +1166,7 @@ write_stencil_span(GLcontext * ctx, struct gl_renderbuffer *rb, static void -write_mono_stencil_span(GLcontext * ctx, struct gl_renderbuffer *rb, +write_mono_stencil_span(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const void *value, const GLubyte mask[]) { @@ -1180,7 +1180,7 @@ write_mono_stencil_span(GLcontext * ctx, struct gl_renderbuffer *rb, static void -read_stencil_span(GLcontext * ctx, struct gl_renderbuffer *rb, +read_stencil_span(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) { @@ -1232,7 +1232,7 @@ read_stencil_span(GLcontext * ctx, struct gl_renderbuffer *rb, static void -write_stencil_pixels(GLcontext * ctx, struct gl_renderbuffer *rb, +write_stencil_pixels(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], const void *values, const GLubyte mask[]) { @@ -1271,7 +1271,7 @@ write_stencil_pixels(GLcontext * ctx, struct gl_renderbuffer *rb, static void -read_stencil_pixels(GLcontext * ctx, struct gl_renderbuffer *rb, +read_stencil_pixels(struct gl_context * ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], void *values) { @@ -1318,13 +1318,13 @@ read_stencil_pixels(GLcontext * ctx, struct gl_renderbuffer *rb, /**********************************************************************/ -static void tdfxSpanRenderStart( GLcontext *ctx ) +static void tdfxSpanRenderStart( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); LOCK_HARDWARE(fxMesa); } -static void tdfxSpanRenderFinish( GLcontext *ctx ) +static void tdfxSpanRenderFinish( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); _swrast_flush( ctx ); @@ -1335,7 +1335,7 @@ static void tdfxSpanRenderFinish( GLcontext *ctx ) /* Initialize swrast device driver */ /**********************************************************************/ -void tdfxDDInitSpanFuncs( GLcontext *ctx ) +void tdfxDDInitSpanFuncs( struct gl_context *ctx ) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference( ctx ); swdd->SpanRenderStart = tdfxSpanRenderStart; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_span.h b/src/mesa/drivers/dri/tdfx/tdfx_span.h index cd391919599..ae3d074a582 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_span.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_span.h @@ -40,7 +40,7 @@ #include "main/context.h" #include "drirenderbuffer.h" -extern void tdfxDDInitSpanFuncs( GLcontext *ctx ); +extern void tdfxDDInitSpanFuncs( struct gl_context *ctx ); extern void tdfxSetSpanFunctions(driRenderbuffer *rb, const struct gl_config *vis); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_state.c b/src/mesa/drivers/dri/tdfx/tdfx_state.c index dcbc7647f29..3f6822d4574 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_state.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_state.c @@ -60,7 +60,7 @@ * Alpha blending */ -static void tdfxUpdateAlphaMode( GLcontext *ctx ) +static void tdfxUpdateAlphaMode( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); GrCmpFnc_t func; @@ -283,7 +283,7 @@ static void tdfxUpdateAlphaMode( GLcontext *ctx ) } } -static void tdfxDDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) +static void tdfxDDAlphaFunc( struct gl_context *ctx, GLenum func, GLfloat ref ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -291,7 +291,7 @@ static void tdfxDDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref ) fxMesa->new_state |= TDFX_NEW_ALPHA; } -static void tdfxDDBlendEquationSeparate( GLcontext *ctx, +static void tdfxDDBlendEquationSeparate( struct gl_context *ctx, GLenum modeRGB, GLenum modeA ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -301,7 +301,7 @@ static void tdfxDDBlendEquationSeparate( GLcontext *ctx, fxMesa->new_state |= TDFX_NEW_ALPHA; } -static void tdfxDDBlendFuncSeparate( GLcontext *ctx, +static void tdfxDDBlendFuncSeparate( struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ) { @@ -321,7 +321,7 @@ static void tdfxDDBlendFuncSeparate( GLcontext *ctx, * Stipple */ -void tdfxUpdateStipple( GLcontext *ctx ) +void tdfxUpdateStipple( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); GrStippleMode_t mode = GR_STIPPLE_DISABLE; @@ -347,7 +347,7 @@ void tdfxUpdateStipple( GLcontext *ctx ) * Depth testing */ -static void tdfxUpdateZMode( GLcontext *ctx ) +static void tdfxUpdateZMode( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); GrCmpFnc_t func; @@ -386,7 +386,7 @@ static void tdfxUpdateZMode( GLcontext *ctx ) } } -static void tdfxDDDepthFunc( GLcontext *ctx, GLenum func ) +static void tdfxDDDepthFunc( struct gl_context *ctx, GLenum func ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -394,7 +394,7 @@ static void tdfxDDDepthFunc( GLcontext *ctx, GLenum func ) fxMesa->new_state |= TDFX_NEW_DEPTH; } -static void tdfxDDDepthMask( GLcontext *ctx, GLboolean flag ) +static void tdfxDDDepthMask( struct gl_context *ctx, GLboolean flag ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -402,7 +402,7 @@ static void tdfxDDDepthMask( GLcontext *ctx, GLboolean flag ) fxMesa->new_state |= TDFX_NEW_DEPTH; } -static void tdfxDDClearDepth( GLcontext *ctx, GLclampd d ) +static void tdfxDDClearDepth( struct gl_context *ctx, GLclampd d ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -445,7 +445,7 @@ static GrStencil_t convertGLStencilOp( GLenum op ) } -static void tdfxUpdateStencil( GLcontext *ctx ) +static void tdfxUpdateStencil( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -470,7 +470,7 @@ static void tdfxUpdateStencil( GLcontext *ctx ) static void -tdfxDDStencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, +tdfxDDStencilFuncSeparate( struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -480,7 +480,7 @@ tdfxDDStencilFuncSeparate( GLcontext *ctx, GLenum face, GLenum func, } static void -tdfxDDStencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) +tdfxDDStencilMaskSeparate( struct gl_context *ctx, GLenum face, GLuint mask ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -489,7 +489,7 @@ tdfxDDStencilMaskSeparate( GLcontext *ctx, GLenum face, GLuint mask ) } static void -tdfxDDStencilOpSeparate( GLcontext *ctx, GLenum face, GLenum sfail, +tdfxDDStencilOpSeparate( struct gl_context *ctx, GLenum face, GLenum sfail, GLenum zfail, GLenum zpass ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -503,7 +503,7 @@ tdfxDDStencilOpSeparate( GLcontext *ctx, GLenum face, GLenum sfail, * Fog - orthographic fog still not working */ -static void tdfxUpdateFogAttrib( GLcontext *ctx ) +static void tdfxUpdateFogAttrib( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); GrFogMode_t mode; @@ -562,7 +562,7 @@ static void tdfxUpdateFogAttrib( GLcontext *ctx ) } } -static void tdfxDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) +static void tdfxDDFogfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -614,7 +614,7 @@ static int intersect_rect( drm_clip_rect_t *out, * Examine XF86 cliprect list and scissor state to recompute our * cliprect list. */ -void tdfxUpdateClipping( GLcontext *ctx ) +void tdfxUpdateClipping( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); __DRIdrawable *dPriv = fxMesa->driDrawable; @@ -695,7 +695,7 @@ void tdfxUpdateClipping( GLcontext *ctx ) * Culling */ -void tdfxUpdateCull( GLcontext *ctx ) +void tdfxUpdateCull( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); GrCullMode_t mode = GR_CULL_DISABLE; @@ -737,7 +737,7 @@ void tdfxUpdateCull( GLcontext *ctx ) } } -static void tdfxDDCullFace( GLcontext *ctx, GLenum mode ) +static void tdfxDDCullFace( struct gl_context *ctx, GLenum mode ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -745,7 +745,7 @@ static void tdfxDDCullFace( GLcontext *ctx, GLenum mode ) fxMesa->new_state |= TDFX_NEW_CULL; } -static void tdfxDDFrontFace( GLcontext *ctx, GLenum mode ) +static void tdfxDDFrontFace( struct gl_context *ctx, GLenum mode ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -758,7 +758,7 @@ static void tdfxDDFrontFace( GLcontext *ctx, GLenum mode ) * Line drawing. */ -static void tdfxUpdateLine( GLcontext *ctx ) +static void tdfxUpdateLine( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -771,7 +771,7 @@ static void tdfxUpdateLine( GLcontext *ctx ) } -static void tdfxDDLineWidth( GLcontext *ctx, GLfloat width ) +static void tdfxDDLineWidth( struct gl_context *ctx, GLfloat width ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); FLUSH_BATCH( fxMesa ); @@ -783,7 +783,7 @@ static void tdfxDDLineWidth( GLcontext *ctx, GLfloat width ) * Color Attributes */ -static void tdfxDDColorMask( GLcontext *ctx, +static void tdfxDDColorMask( struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) { @@ -810,7 +810,7 @@ static void tdfxDDColorMask( GLcontext *ctx, } -static void tdfxDDClearColor( GLcontext *ctx, +static void tdfxDDClearColor( struct gl_context *ctx, const GLfloat color[4] ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -829,7 +829,7 @@ static void tdfxDDClearColor( GLcontext *ctx, * Light Model */ -static void tdfxDDLightModelfv( GLcontext *ctx, GLenum pname, +static void tdfxDDLightModelfv( struct gl_context *ctx, GLenum pname, const GLfloat *param ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -841,7 +841,7 @@ static void tdfxDDLightModelfv( GLcontext *ctx, GLenum pname, } } -static void tdfxDDShadeModel( GLcontext *ctx, GLenum mode ) +static void tdfxDDShadeModel( struct gl_context *ctx, GLenum mode ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -856,7 +856,7 @@ static void tdfxDDShadeModel( GLcontext *ctx, GLenum mode ) */ static void -tdfxDDScissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h) +tdfxDDScissor(struct gl_context * ctx, GLint x, GLint y, GLsizei w, GLsizei h) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); FLUSH_BATCH( fxMesa ); @@ -867,7 +867,7 @@ tdfxDDScissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h) * Render */ -static void tdfxUpdateRenderAttrib( GLcontext *ctx ) +static void tdfxUpdateRenderAttrib( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); FLUSH_BATCH( fxMesa ); @@ -878,7 +878,7 @@ static void tdfxUpdateRenderAttrib( GLcontext *ctx ) * Viewport */ -void tdfxUpdateViewport( GLcontext *ctx ) +void tdfxUpdateViewport( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -895,7 +895,7 @@ void tdfxUpdateViewport( GLcontext *ctx ) } -static void tdfxDDViewport( GLcontext *ctx, GLint x, GLint y, +static void tdfxDDViewport( struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -904,7 +904,7 @@ static void tdfxDDViewport( GLcontext *ctx, GLint x, GLint y, } -static void tdfxDDDepthRange( GLcontext *ctx, GLclampd nearVal, GLclampd farVal ) +static void tdfxDDDepthRange( struct gl_context *ctx, GLclampd nearVal, GLclampd farVal ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); FLUSH_BATCH( fxMesa ); @@ -916,7 +916,7 @@ static void tdfxDDDepthRange( GLcontext *ctx, GLclampd nearVal, GLclampd farVal * State enable/disable */ -static void tdfxDDEnable( GLcontext *ctx, GLenum cap, GLboolean state ) +static void tdfxDDEnable( struct gl_context *ctx, GLenum cap, GLboolean state ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -1017,7 +1017,7 @@ static void tdfxDDEnable( GLcontext *ctx, GLenum cap, GLboolean state ) /* Set the buffer used for drawing */ /* XXX support for separate read/draw buffers hasn't been tested */ -static void tdfxDDDrawBuffer( GLcontext *ctx, GLenum mode ) +static void tdfxDDDrawBuffer( struct gl_context *ctx, GLenum mode ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1054,7 +1054,7 @@ static void tdfxDDDrawBuffer( GLcontext *ctx, GLenum mode ) } -static void tdfxDDReadBuffer( GLcontext *ctx, GLenum mode ) +static void tdfxDDReadBuffer( struct gl_context *ctx, GLenum mode ) { /* XXX ??? */ } @@ -1064,7 +1064,7 @@ static void tdfxDDReadBuffer( GLcontext *ctx, GLenum mode ) * Polygon stipple */ -static void tdfxDDPolygonStipple( GLcontext *ctx, const GLubyte *mask ) +static void tdfxDDPolygonStipple( struct gl_context *ctx, const GLubyte *mask ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); const GLubyte *m = mask; @@ -1119,7 +1119,7 @@ static void tdfxDDPolygonStipple( GLcontext *ctx, const GLubyte *mask ) -static void tdfxDDRenderMode( GLcontext *ctx, GLenum mode ) +static void tdfxDDRenderMode( struct gl_context *ctx, GLenum mode ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); FALLBACK( fxMesa, TDFX_FALLBACK_RENDER_MODE, (mode != GL_RENDER) ); @@ -1150,7 +1150,7 @@ static void tdfxDDPrintState( const char *msg, GLuint flags ) -void tdfxDDUpdateHwState( GLcontext *ctx ) +void tdfxDDUpdateHwState( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); int new_state = fxMesa->new_state; @@ -1226,7 +1226,7 @@ void tdfxDDUpdateHwState( GLcontext *ctx ) } -static void tdfxDDInvalidateState( GLcontext *ctx, GLuint new_state ) +static void tdfxDDInvalidateState( struct gl_context *ctx, GLuint new_state ) { _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); @@ -1242,7 +1242,7 @@ static void tdfxDDInvalidateState( GLcontext *ctx, GLuint new_state ) */ void tdfxInitState( tdfxContextPtr fxMesa ) { - GLcontext *ctx = fxMesa->glCtx; + struct gl_context *ctx = fxMesa->glCtx; GLint i; fxMesa->ColorCombine.Function = GR_COMBINE_FUNCTION_LOCAL; @@ -1390,7 +1390,7 @@ void tdfxInitState( tdfxContextPtr fxMesa ) -void tdfxDDInitStateFuncs( GLcontext *ctx ) +void tdfxDDInitStateFuncs( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_state.h b/src/mesa/drivers/dri/tdfx/tdfx_state.h index 4880b990fcd..2e96fcbeb5d 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_state.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_state.h @@ -40,21 +40,21 @@ #include "main/context.h" #include "tdfx_context.h" -extern void tdfxDDInitStateFuncs( GLcontext *ctx ); +extern void tdfxDDInitStateFuncs( struct gl_context *ctx ); -extern void tdfxDDUpdateHwState( GLcontext *ctx ); +extern void tdfxDDUpdateHwState( struct gl_context *ctx ); extern void tdfxInitState( tdfxContextPtr fxMesa ); -extern void tdfxUpdateClipping( GLcontext *ctx ); +extern void tdfxUpdateClipping( struct gl_context *ctx ); -extern void tdfxFallback( GLcontext *ctx, GLuint bit, GLboolean mode ); +extern void tdfxFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ); #define FALLBACK( rmesa, bit, mode ) tdfxFallback( rmesa->glCtx, bit, mode ) -extern void tdfxUpdateCull( GLcontext *ctx ); -extern void tdfxUpdateStipple( GLcontext *ctx ); -extern void tdfxUpdateViewport( GLcontext *ctx ); +extern void tdfxUpdateCull( struct gl_context *ctx ); +extern void tdfxUpdateStipple( struct gl_context *ctx ); +extern void tdfxUpdateViewport( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tex.c b/src/mesa/drivers/dri/tdfx/tdfx_tex.c index 1c51452c104..0326b847cb8 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_tex.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_tex.c @@ -52,7 +52,7 @@ /* no borders! can't halve 1x1! (stride > width * comp) not allowed */ static void -_mesa_halve2x2_teximage2d ( GLcontext *ctx, +_mesa_halve2x2_teximage2d ( struct gl_context *ctx, struct gl_texture_image *texImage, GLuint bytesPerPixel, GLint srcWidth, GLint srcHeight, @@ -176,7 +176,7 @@ logbase2(int n) static void -tdfxGenerateMipmap(GLcontext *ctx, GLenum target, +tdfxGenerateMipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { GLint mipWidth, mipHeight; @@ -242,7 +242,7 @@ tdfxGenerateMipmap(GLcontext *ctx, GLenum target, * 32 32 GR_LOD_LOG2_32 (=5) GR_ASPECT_LOG2_1x1 (=0) */ static void -tdfxTexGetInfo(const GLcontext *ctx, int w, int h, +tdfxTexGetInfo(const struct gl_context *ctx, int w, int h, GrLOD_t *lodlevel, GrAspectRatio_t *aspectratio, float *sscale, float *tscale, int *wscale, int *hscale) @@ -307,7 +307,7 @@ tdfxTexGetInfo(const GLcontext *ctx, int w, int h, * We need to call this when a texture object's minification filter * or texture image sizes change. */ -static void RevalidateTexture(GLcontext *ctx, struct gl_texture_object *tObj) +static void RevalidateTexture(struct gl_context *ctx, struct gl_texture_object *tObj) { tdfxTexInfo *ti = TDFX_TEXTURE_DATA(tObj); GLint minl, maxl; @@ -390,7 +390,7 @@ fxAllocTexObjData(tdfxContextPtr fxMesa) * Called via glBindTexture. */ static void -tdfxBindTexture(GLcontext * ctx, GLenum target, +tdfxBindTexture(struct gl_context * ctx, GLenum target, struct gl_texture_object *tObj) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -419,7 +419,7 @@ tdfxBindTexture(GLcontext * ctx, GLenum target, * Called via glTexEnv. */ static void -tdfxTexEnv(GLcontext * ctx, GLenum target, GLenum pname, +tdfxTexEnv(struct gl_context * ctx, GLenum target, GLenum pname, const GLfloat * param) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -445,7 +445,7 @@ tdfxTexEnv(GLcontext * ctx, GLenum target, GLenum pname, * Called via glTexParameter. */ static void -tdfxTexParameter(GLcontext * ctx, GLenum target, +tdfxTexParameter(struct gl_context * ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat * params) { @@ -610,7 +610,7 @@ tdfxTexParameter(GLcontext * ctx, GLenum target, * Here, we delete the Glide data associated with the texture. */ static void -tdfxDeleteTexture(GLcontext * ctx, struct gl_texture_object *tObj) +tdfxDeleteTexture(struct gl_context * ctx, struct gl_texture_object *tObj) { if (ctx && ctx->DriverCtx) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -626,7 +626,7 @@ tdfxDeleteTexture(GLcontext * ctx, struct gl_texture_object *tObj) * Return true if texture is resident, false otherwise. */ static GLboolean -tdfxIsTextureResident(GLcontext *ctx, struct gl_texture_object *tObj) +tdfxIsTextureResident(struct gl_context *ctx, struct gl_texture_object *tObj) { tdfxTexInfo *ti = TDFX_TEXTURE_DATA(tObj); return (GLboolean) (ti && ti->isInTM); @@ -707,7 +707,7 @@ convertPalette(FxU32 data[256], const struct gl_color_table *table) static void -tdfxUpdateTexturePalette(GLcontext * ctx, struct gl_texture_object *tObj) +tdfxUpdateTexturePalette(struct gl_context * ctx, struct gl_texture_object *tObj) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -760,7 +760,7 @@ fxTexusError(const char *string, FxBool fatal) static gl_format -tdfxChooseTextureFormat( GLcontext *ctx, GLint internalFormat, +tdfxChooseTextureFormat( struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1216,7 +1216,7 @@ fxFetchFunction(GLint mesaFormat) static GLboolean -adjust2DRatio (GLcontext *ctx, +adjust2DRatio (struct gl_context *ctx, GLint xoffset, GLint yoffset, GLint width, GLint height, GLenum format, GLenum type, const GLvoid *pixels, @@ -1302,7 +1302,7 @@ adjust2DRatio (GLcontext *ctx, static void -tdfxTexImage2D(GLcontext *ctx, GLenum target, GLint level, +tdfxTexImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, @@ -1454,7 +1454,7 @@ tdfxTexImage2D(GLcontext *ctx, GLenum target, GLint level, static void -tdfxTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, +tdfxTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1521,7 +1521,7 @@ tdfxTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, static void -tdfxTexImage1D(GLcontext *ctx, GLenum target, GLint level, +tdfxTexImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, @@ -1537,7 +1537,7 @@ tdfxTexImage1D(GLcontext *ctx, GLenum target, GLint level, } static void -tdfxTexSubImage1D(GLcontext *ctx, GLenum target, GLint level, +tdfxTexSubImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, @@ -1561,7 +1561,7 @@ tdfxTexSubImage1D(GLcontext *ctx, GLenum target, GLint level, /**********************************************************************/ static void -tdfxCompressedTexImage2D (GLcontext *ctx, GLenum target, +tdfxCompressedTexImage2D (struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -1671,7 +1671,7 @@ tdfxCompressedTexImage2D (GLcontext *ctx, GLenum target, static void -tdfxCompressedTexSubImage2D( GLcontext *ctx, GLenum target, +tdfxCompressedTexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLint height, GLenum format, @@ -1752,7 +1752,7 @@ PrintTexture(int w, int h, int c, const GLubyte * data) GLboolean -tdfxTestProxyTexImage(GLcontext *ctx, GLenum target, +tdfxTestProxyTexImage(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLint width, GLint height, @@ -1840,7 +1840,7 @@ tdfxTestProxyTexImage(GLcontext *ctx, GLenum target, * texture object from the core mesa gl_texture_object. Not done at this time. */ static struct gl_texture_object * -tdfxNewTextureObject( GLcontext *ctx, GLuint name, GLenum target ) +tdfxNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; obj = _mesa_new_texture_object(ctx, name, target); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tex.h b/src/mesa/drivers/dri/tdfx/tdfx_tex.h index a445935a018..26885fae3e3 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_tex.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_tex.h @@ -47,47 +47,47 @@ extern void -tdfxTexValidate(GLcontext * ctx, struct gl_texture_object *tObj); +tdfxTexValidate(struct gl_context * ctx, struct gl_texture_object *tObj); #if 000 /* DEAD? */ extern void -fxDDTexUseGlobalPalette(GLcontext * ctx, GLboolean state); +fxDDTexUseGlobalPalette(struct gl_context * ctx, GLboolean state); #endif extern GLboolean -tdfxTestProxyTexImage(GLcontext *ctx, GLenum target, +tdfxTestProxyTexImage(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLint width, GLint height, GLint depth, GLint border); extern GLvoid * -tdfxDDGetTexImage(GLcontext * ctx, GLenum target, GLint level, +tdfxDDGetTexImage(struct gl_context * ctx, GLenum target, GLint level, const struct gl_texture_object *texObj, GLenum * formatOut, GLenum * typeOut, GLboolean * freeImageOut); extern void -tdfxDDGetCompressedTexImage( GLcontext *ctx, GLenum target, +tdfxDDGetCompressedTexImage( struct gl_context *ctx, GLenum target, GLint lod, void *image, const struct gl_texture_object *texObj, struct gl_texture_image *texImage ); extern GLint -tdfxSpecificCompressedTexFormat(GLcontext *ctx, +tdfxSpecificCompressedTexFormat(struct gl_context *ctx, GLint internalFormat, GLint numDimensions); extern GLint -tdfxBaseCompressedTexFormat(GLcontext *ctx, +tdfxBaseCompressedTexFormat(struct gl_context *ctx, GLint internalFormat); extern GLboolean -tdfxDDIsCompressedFormat(GLcontext *ctx, GLint internalFormat); +tdfxDDIsCompressedFormat(struct gl_context *ctx, GLint internalFormat); extern GLsizei -tdfxDDCompressedImageSize(GLcontext *ctx, +tdfxDDCompressedImageSize(struct gl_context *ctx, GLenum intFormat, GLuint numDimensions, GLuint width, diff --git a/src/mesa/drivers/dri/tdfx/tdfx_texman.c b/src/mesa/drivers/dri/tdfx/tdfx_texman.c index dc464539166..1160ae2d0bc 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_texman.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_texman.c @@ -744,7 +744,7 @@ tdfxTMDownloadTexture(tdfxContextPtr fxMesa, struct gl_texture_object *tObj) void -tdfxTMReloadMipMapLevel(GLcontext *ctx, struct gl_texture_object *tObj, +tdfxTMReloadMipMapLevel(struct gl_context *ctx, struct gl_texture_object *tObj, GLint level) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -964,7 +964,7 @@ tdfxTMFreeTexture(tdfxContextPtr fxMesa, struct gl_texture_object *tObj) */ void tdfxTMRestoreTextures_NoLock( tdfxContextPtr fxMesa ) { - GLcontext *ctx = fxMesa->glCtx; + struct gl_context *ctx = fxMesa->glCtx; struct _mesa_HashTable *textures = fxMesa->glCtx->Shared->TexObjects; GLuint id; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_texman.h b/src/mesa/drivers/dri/tdfx/tdfx_texman.h index a9af4cb7c56..87bdc3fea93 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_texman.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_texman.h @@ -48,7 +48,7 @@ extern void tdfxTMClose( tdfxContextPtr fxMesa ); extern void tdfxTMDownloadTexture(tdfxContextPtr fxMesa, struct gl_texture_object *tObj); -extern void tdfxTMReloadMipMapLevel( GLcontext *ctx, +extern void tdfxTMReloadMipMapLevel( struct gl_context *ctx, struct gl_texture_object *tObj, GLint level ); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_texstate.c b/src/mesa/drivers/dri/tdfx/tdfx_texstate.c index b04f48c7a77..227f36be65d 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_texstate.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_texstate.c @@ -160,7 +160,7 @@ * If we fail, we'll have to use software rendering. */ static GLboolean -SetupTexEnvNapalm(GLcontext *ctx, GLboolean useIteratedRGBA, +SetupTexEnvNapalm(struct gl_context *ctx, GLboolean useIteratedRGBA, const struct gl_texture_unit *texUnit, GLenum baseFormat, struct tdfx_texcombine_ext *env) { @@ -838,7 +838,7 @@ SetupTexEnvNapalm(GLcontext *ctx, GLboolean useIteratedRGBA, * If failure, we'll use software rendering. */ static GLboolean -SetupSingleTexEnvVoodoo3(GLcontext *ctx, int unit, +SetupSingleTexEnvVoodoo3(struct gl_context *ctx, int unit, GLenum envMode, GLenum baseFormat) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1047,7 +1047,7 @@ SetupSingleTexEnvVoodoo3(GLcontext *ctx, int unit, * If failure, we'll use software rendering. */ static GLboolean -SetupDoubleTexEnvVoodoo3(GLcontext *ctx, int tmu0, +SetupDoubleTexEnvVoodoo3(struct gl_context *ctx, int tmu0, GLenum envMode0, GLenum baseFormat0, GLenum envMode1, GLenum baseFormat1) { @@ -1362,7 +1362,7 @@ setupSingleTMU(tdfxContextPtr fxMesa, struct gl_texture_object *tObj) { struct tdfxSharedState *shared = (struct tdfxSharedState *) fxMesa->glCtx->Shared->DriverData; tdfxTexInfo *ti = TDFX_TEXTURE_DATA(tObj); - const GLcontext *ctx = fxMesa->glCtx; + const struct gl_context *ctx = fxMesa->glCtx; /* Make sure we're not loaded incorrectly */ if (ti->isInTM && !shared->umaTexMemory) { @@ -1571,7 +1571,7 @@ selectSingleTMUSrc(tdfxContextPtr fxMesa, GLint tmu, FxBool LODblend) #if 0 static void print_state(tdfxContextPtr fxMesa) { - GLcontext *ctx = fxMesa->glCtx; + struct gl_context *ctx = fxMesa->glCtx; struct gl_texture_object *tObj0 = ctx->Texture.Unit[0]._Current; struct gl_texture_object *tObj1 = ctx->Texture.Unit[1]._Current; GLenum base0 = tObj0->Image[0][tObj0->BaseLevel] ? tObj0->Image[0][tObj0->BaseLevel]->Format : 99; @@ -1599,7 +1599,7 @@ static void print_state(tdfxContextPtr fxMesa) * Input: ctx - the context * unit - the OpenGL texture unit to use. */ -static void setupTextureSingleTMU(GLcontext * ctx, GLuint unit) +static void setupTextureSingleTMU(struct gl_context * ctx, GLuint unit) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); tdfxTexInfo *ti; @@ -1715,7 +1715,7 @@ setupDoubleTMU(tdfxContextPtr fxMesa, const struct gl_shared_state *mesaShared = fxMesa->glCtx->Shared; const struct tdfxSharedState *shared = (struct tdfxSharedState *) mesaShared->DriverData; - const GLcontext *ctx = fxMesa->glCtx; + const struct gl_context *ctx = fxMesa->glCtx; tdfxTexInfo *ti0 = TDFX_TEXTURE_DATA(tObj0); tdfxTexInfo *ti1 = TDFX_TEXTURE_DATA(tObj1); GLuint tstate = 0; @@ -1914,7 +1914,7 @@ setupDoubleTMU(tdfxContextPtr fxMesa, #undef T1_IN_TMU1 } -static void setupTextureDoubleTMU(GLcontext * ctx) +static void setupTextureDoubleTMU(struct gl_context * ctx) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); struct gl_texture_object *tObj0 = ctx->Texture.Unit[1]._Current; @@ -2019,7 +2019,7 @@ static void setupTextureDoubleTMU(GLcontext * ctx) void -tdfxUpdateTextureState( GLcontext *ctx ) +tdfxUpdateTextureState( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -2108,7 +2108,7 @@ tdfxUpdateTextureState( GLcontext *ctx ) * This is very common in Quake3. */ void -tdfxUpdateTextureBinding( GLcontext *ctx ) +tdfxUpdateTextureBinding( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); struct gl_texture_object *tObj0 = ctx->Texture.Unit[0]._Current; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_texstate.h b/src/mesa/drivers/dri/tdfx/tdfx_texstate.h index 0c5c4101cad..92ac3a37eb9 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_texstate.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_texstate.h @@ -37,7 +37,7 @@ #ifndef __TDFX_TEXSTATE_H__ #define __TDFX_TEXSTATE_H__ -extern void tdfxUpdateTextureState( GLcontext *ctx ); -extern void tdfxUpdateTextureBinding( GLcontext *ctx ); +extern void tdfxUpdateTextureState( struct gl_context *ctx ); +extern void tdfxUpdateTextureBinding( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tris.c b/src/mesa/drivers/dri/tdfx/tdfx_tris.c index d65833c20b0..1f8cf6cde19 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_tris.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_tris.c @@ -49,8 +49,8 @@ #include "tdfx_render.h" -static void tdfxRasterPrimitive( GLcontext *ctx, GLenum prim ); -static void tdfxRenderPrimitive( GLcontext *ctx, GLenum prim ); +static void tdfxRasterPrimitive( struct gl_context *ctx, GLenum prim ); +static void tdfxRenderPrimitive( struct gl_context *ctx, GLenum prim ); static GLenum reduced_prim[GL_POLYGON+1] = { GL_POINTS, @@ -136,7 +136,7 @@ do { \ * primitives. */ static void -tdfx_translate_vertex( GLcontext *ctx, const tdfxVertex *src, SWvertex *dst) +tdfx_translate_vertex( struct gl_context *ctx, const tdfxVertex *src, SWvertex *dst) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -193,7 +193,7 @@ tdfx_fallback_tri( tdfxContextPtr fxMesa, tdfxVertex *v1, tdfxVertex *v2 ) { - GLcontext *ctx = fxMesa->glCtx; + struct gl_context *ctx = fxMesa->glCtx; SWvertex v[3]; tdfx_translate_vertex( ctx, v0, &v[0] ); tdfx_translate_vertex( ctx, v1, &v[1] ); @@ -207,7 +207,7 @@ tdfx_fallback_line( tdfxContextPtr fxMesa, tdfxVertex *v0, tdfxVertex *v1 ) { - GLcontext *ctx = fxMesa->glCtx; + struct gl_context *ctx = fxMesa->glCtx; SWvertex v[2]; tdfx_translate_vertex( ctx, v0, &v[0] ); tdfx_translate_vertex( ctx, v1, &v[1] ); @@ -219,7 +219,7 @@ static void tdfx_fallback_point( tdfxContextPtr fxMesa, tdfxVertex *v0 ) { - GLcontext *ctx = fxMesa->glCtx; + struct gl_context *ctx = fxMesa->glCtx; SWvertex v[1]; tdfx_translate_vertex( ctx, v0, &v[0] ); _swrast_Point( ctx, &v[0] ); @@ -229,7 +229,7 @@ tdfx_fallback_point( tdfxContextPtr fxMesa, * Functions to draw basic primitives * ***********************************************************************/ -static void tdfx_print_vertex( GLcontext *ctx, const tdfxVertex *v ) +static void tdfx_print_vertex( struct gl_context *ctx, const tdfxVertex *v ) { tdfxContextPtr tmesa = TDFX_CONTEXT( ctx ); @@ -557,7 +557,7 @@ static void init_rast_tab( void ) */ #define INIT(x) tdfxRenderPrimitive( ctx, x ) -static void tdfx_render_vb_points( GLcontext *ctx, +static void tdfx_render_vb_points( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -584,7 +584,7 @@ static void tdfx_render_vb_points( GLcontext *ctx, } } -static void tdfx_render_vb_line_strip( GLcontext *ctx, +static void tdfx_render_vb_line_strip( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -612,7 +612,7 @@ static void tdfx_render_vb_line_strip( GLcontext *ctx, } } -static void tdfx_render_vb_line_loop( GLcontext *ctx, +static void tdfx_render_vb_line_loop( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -649,7 +649,7 @@ static void tdfx_render_vb_line_loop( GLcontext *ctx, } } -static void tdfx_render_vb_lines( GLcontext *ctx, +static void tdfx_render_vb_lines( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -677,7 +677,7 @@ static void tdfx_render_vb_lines( GLcontext *ctx, } } -static void tdfx_render_vb_triangles( GLcontext *ctx, +static void tdfx_render_vb_triangles( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -708,7 +708,7 @@ static void tdfx_render_vb_triangles( GLcontext *ctx, } -static void tdfx_render_vb_tri_strip( GLcontext *ctx, +static void tdfx_render_vb_tri_strip( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -730,7 +730,7 @@ static void tdfx_render_vb_tri_strip( GLcontext *ctx, } -static void tdfx_render_vb_tri_fan( GLcontext *ctx, +static void tdfx_render_vb_tri_fan( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -745,7 +745,7 @@ static void tdfx_render_vb_tri_fan( GLcontext *ctx, fxVB + start, sizeof(tdfxVertex) ); } -static void tdfx_render_vb_quads( GLcontext *ctx, +static void tdfx_render_vb_quads( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -771,7 +771,7 @@ static void tdfx_render_vb_quads( GLcontext *ctx, } } -static void tdfx_render_vb_quad_strip( GLcontext *ctx, +static void tdfx_render_vb_quad_strip( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -788,7 +788,7 @@ static void tdfx_render_vb_quad_strip( GLcontext *ctx, count-start, fxVB + start, sizeof(tdfxVertex)); } -static void tdfx_render_vb_poly( GLcontext *ctx, +static void tdfx_render_vb_poly( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -803,7 +803,7 @@ static void tdfx_render_vb_poly( GLcontext *ctx, fxVB + start, sizeof(tdfxVertex)); } -static void tdfx_render_vb_noop( GLcontext *ctx, +static void tdfx_render_vb_noop( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -811,7 +811,7 @@ static void tdfx_render_vb_noop( GLcontext *ctx, (void) (ctx && start && count && flags); } -static void (*tdfx_render_tab_verts[GL_POLYGON+2])(GLcontext *, +static void (*tdfx_render_tab_verts[GL_POLYGON+2])(struct gl_context *, GLuint, GLuint, GLuint) = @@ -897,7 +897,7 @@ static void (*tdfx_render_tab_verts[GL_POLYGON+2])(GLcontext *, -static void tdfxRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void tdfxRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -920,13 +920,13 @@ static void tdfxRenderClippedPoly( GLcontext *ctx, const GLuint *elts, tnl->Driver.Render.PrimitiveNotify( ctx, prim ); } -static void tdfxRenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +static void tdfxRenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); } -static void tdfxFastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, +static void tdfxFastRenderClippedPoly( struct gl_context *ctx, const GLuint *elts, GLuint n ) { int i; @@ -974,7 +974,7 @@ static void tdfxFastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, _NEW_POLYGONSTIPPLE) -static void tdfxChooseRenderState(GLcontext *ctx) +static void tdfxChooseRenderState(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1061,7 +1061,7 @@ static void tdfxChooseRenderState(GLcontext *ctx) * TODO: Use single back-buffer cliprect where possible. * NOTE: starts at 1, not zero! */ -static GLboolean multipass_cliprect( GLcontext *ctx, GLuint pass ) +static GLboolean multipass_cliprect( struct gl_context *ctx, GLuint pass ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); if (pass >= fxMesa->numClipRects) @@ -1081,7 +1081,7 @@ static GLboolean multipass_cliprect( GLcontext *ctx, GLuint pass ) /* Runtime render state and callbacks */ /**********************************************************************/ -static void tdfxRunPipeline( GLcontext *ctx ) +static void tdfxRunPipeline( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1103,7 +1103,7 @@ static void tdfxRunPipeline( GLcontext *ctx ) } -static void tdfxRenderStart( GLcontext *ctx ) +static void tdfxRenderStart( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1138,7 +1138,7 @@ static void tdfxRenderStart( GLcontext *ctx ) /* Always called between RenderStart and RenderFinish --> We already * hold the lock. */ -static void tdfxRasterPrimitive( GLcontext *ctx, GLenum prim ) +static void tdfxRasterPrimitive( struct gl_context *ctx, GLenum prim ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -1170,7 +1170,7 @@ static void tdfxRasterPrimitive( GLcontext *ctx, GLenum prim ) * which renders strips as strips, the equivalent calculations are * performed in tdfx_render.c. */ -static void tdfxRenderPrimitive( GLcontext *ctx, GLenum prim ) +static void tdfxRenderPrimitive( struct gl_context *ctx, GLenum prim ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); GLuint rprim = reduced_prim[prim]; @@ -1185,7 +1185,7 @@ static void tdfxRenderPrimitive( GLcontext *ctx, GLenum prim ) } } -static void tdfxRenderFinish( GLcontext *ctx ) +static void tdfxRenderFinish( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1227,7 +1227,7 @@ static char *getFallbackString(GLuint bit) } -void tdfxFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) +void tdfxFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -1266,7 +1266,7 @@ void tdfxFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) } -void tdfxDDInitTriFuncs( GLcontext *ctx ) +void tdfxDDInitTriFuncs( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tris.h b/src/mesa/drivers/dri/tdfx/tdfx_tris.h index ec48a486927..421b8e1c0d7 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_tris.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_tris.h @@ -35,7 +35,7 @@ #include "main/mtypes.h" -extern void tdfxDDInitTriFuncs( GLcontext *ctx ); +extern void tdfxDDInitTriFuncs( struct gl_context *ctx ); #endif diff --git a/src/mesa/drivers/dri/tdfx/tdfx_vb.c b/src/mesa/drivers/dri/tdfx/tdfx_vb.c index 546d89aa846..dafb6eccd99 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_vb.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_vb.c @@ -33,7 +33,7 @@ #include "tdfx_vb.h" #include "tdfx_render.h" -static void copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); tdfxVertex *dst = fxMesa->verts + edst; @@ -42,10 +42,10 @@ static void copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ) } static struct { - void (*emit)( GLcontext *, GLuint, GLuint, void * ); + void (*emit)( struct gl_context *, GLuint, GLuint, void * ); tnl_interp_func interp; tnl_copy_pv_func copy_pv; - GLboolean (*check_tex_sizes)( GLcontext *ctx ); + GLboolean (*check_tex_sizes)( struct gl_context *ctx ); GLuint vertex_format; } setup_tab[TDFX_MAX_SETUP]; @@ -55,7 +55,7 @@ static struct { #define GET_COLOR(ptr, idx) ((ptr)->data[idx]) -static void interp_extras( GLcontext *ctx, +static void interp_extras( struct gl_context *ctx, GLfloat t, GLuint dst, GLuint out, GLuint in, GLboolean force_boundary ) @@ -79,7 +79,7 @@ static void interp_extras( GLcontext *ctx, force_boundary); } -static void copy_pv_extras( GLcontext *ctx, GLuint dst, GLuint src ) +static void copy_pv_extras( struct gl_context *ctx, GLuint dst, GLuint src ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -204,7 +204,7 @@ void tdfxPrintSetupFlags(char *msg, GLuint flags ) -void tdfxCheckTexSizes( GLcontext *ctx ) +void tdfxCheckTexSizes( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -234,7 +234,7 @@ void tdfxCheckTexSizes( GLcontext *ctx ) } -void tdfxBuildVertices( GLcontext *ctx, GLuint start, GLuint end, +void tdfxBuildVertices( struct gl_context *ctx, GLuint start, GLuint end, GLuint newinputs ) { tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -275,7 +275,7 @@ void tdfxBuildVertices( GLcontext *ctx, GLuint start, GLuint end, } -void tdfxChooseVertexState( GLcontext *ctx ) +void tdfxChooseVertexState( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tdfxContextPtr fxMesa = TDFX_CONTEXT( ctx ); @@ -321,7 +321,7 @@ void tdfxChooseVertexState( GLcontext *ctx ) -void tdfxInitVB( GLcontext *ctx ) +void tdfxInitVB( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); GLuint size = TNL_CONTEXT(ctx)->vb.Size; @@ -337,7 +337,7 @@ void tdfxInitVB( GLcontext *ctx ) } -void tdfxFreeVB( GLcontext *ctx ) +void tdfxFreeVB( struct gl_context *ctx ) { tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); if (fxMesa->verts) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_vb.h b/src/mesa/drivers/dri/tdfx/tdfx_vb.h index 1e190e85f64..238a076d87a 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_vb.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_vb.h @@ -48,21 +48,21 @@ _NEW_FOG) -extern void tdfxValidateBuildProjVerts(GLcontext *ctx, +extern void tdfxValidateBuildProjVerts(struct gl_context *ctx, GLuint start, GLuint count, GLuint newinputs ); extern void tdfxPrintSetupFlags(char *msg, GLuint flags ); -extern void tdfxInitVB( GLcontext *ctx ); +extern void tdfxInitVB( struct gl_context *ctx ); -extern void tdfxFreeVB( GLcontext *ctx ); +extern void tdfxFreeVB( struct gl_context *ctx ); -extern void tdfxCheckTexSizes( GLcontext *ctx ); +extern void tdfxCheckTexSizes( struct gl_context *ctx ); -extern void tdfxChooseVertexState( GLcontext *ctx ); +extern void tdfxChooseVertexState( struct gl_context *ctx ); -extern void tdfxBuildVertices( GLcontext *ctx, GLuint start, GLuint end, +extern void tdfxBuildVertices( struct gl_context *ctx, GLuint start, GLuint end, GLuint newinputs ); #endif diff --git a/src/mesa/drivers/dri/tdfx/tdfx_vbtmp.h b/src/mesa/drivers/dri/tdfx/tdfx_vbtmp.h index 19baf7d0d25..c593ce05eae 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_vbtmp.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_vbtmp.h @@ -33,7 +33,7 @@ #define VIEWPORT_Z(dst,z) dst = s[10] * z + s[14] -static void TAG(emit)( GLcontext *ctx, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest ) { @@ -157,7 +157,7 @@ static void TAG(emit)( GLcontext *ctx, } -static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) +static GLboolean TAG(check_tex_sizes)( struct gl_context *ctx ) { /* fprintf(stderr, "%s\n", __FUNCTION__); */ @@ -183,7 +183,7 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) } -static void TAG(interp)( GLcontext *ctx, +static void TAG(interp)( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ) diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 5e6e271b458..963609bde4a 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -77,7 +77,7 @@ GLuint VIA_DEBUG = 0; * * \sa glGetString */ -static const GLubyte *viaGetString(GLcontext *ctx, GLenum name) +static const GLubyte *viaGetString(struct gl_context *ctx, GLenum name) { static char buffer[128]; unsigned offset; @@ -133,7 +133,7 @@ viaDeleteRenderbuffer(struct gl_renderbuffer *rb) } static GLboolean -viaRenderbufferStorage(GLcontext *ctx, struct gl_renderbuffer *rb, +viaRenderbufferStorage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { rb->Width = width; @@ -352,7 +352,7 @@ calculate_buffer_parameters(struct via_context *vmesa, } -void viaReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, +void viaReAllocateBuffers(struct gl_context *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -461,7 +461,7 @@ viaCreateContext(gl_api api, __DRIcontext *driContextPriv, void *sharedContextPrivate) { - GLcontext *ctx, *shareCtx; + struct gl_context *ctx, *shareCtx; struct via_context *vmesa; __DRIscreen *sPriv = driContextPriv->driScreenPriv; viaScreenPrivate *viaScreen = (viaScreenPrivate *)sPriv->private; @@ -830,7 +830,7 @@ viaMakeCurrent(__DRIcontext *driContextPriv, if (driContextPriv) { struct via_context *vmesa = (struct via_context *)driContextPriv->driverPrivate; - GLcontext *ctx = vmesa->glCtx; + struct gl_context *ctx = vmesa->glCtx; struct gl_framebuffer *drawBuffer, *readBuffer; drawBuffer = (struct gl_framebuffer *)driDrawPriv->driverPrivate; @@ -935,7 +935,7 @@ viaSwapBuffers(__DRIdrawable *drawablePrivate) dPriv->driContextPriv->driverPrivate) { struct via_context *vmesa = (struct via_context *)dPriv->driContextPriv->driverPrivate; - GLcontext *ctx = vmesa->glCtx; + struct gl_context *ctx = vmesa->glCtx; _mesa_notifySwapBuffers(ctx); diff --git a/src/mesa/drivers/dri/unichrome/via_context.h b/src/mesa/drivers/dri/unichrome/via_context.h index 4e3bed342dd..660e7714072 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.h +++ b/src/mesa/drivers/dri/unichrome/via_context.h @@ -153,8 +153,8 @@ struct via_texture_object { struct via_context { GLint refcount; - GLcontext *glCtx; - GLcontext *shareCtx; + struct gl_context *glCtx; + struct gl_context *shareCtx; /* XXX These don't belong here. They should be per-drawable state. */ struct via_renderbuffer front; @@ -394,7 +394,7 @@ extern void viaEmitHwStateLocked(struct via_context *vmesa); extern void viaEmitScissorValues(struct via_context *vmesa, int box_nr, int emit); extern void viaXMesaSetBackClipRects(struct via_context *vmesa); extern void viaXMesaSetFrontClipRects(struct via_context *vmesa); -extern void viaReAllocateBuffers(GLcontext *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height); +extern void viaReAllocateBuffers(struct gl_context *ctx, struct gl_framebuffer *drawbuffer, GLuint width, GLuint height); extern void viaXMesaWindowMoved(struct via_context *vmesa); extern GLboolean viaTexCombineState(struct via_context *vmesa, diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.c b/src/mesa/drivers/dri/unichrome/via_ioctl.c index 25aad1b204e..116adda18ea 100644 --- a/src/mesa/drivers/dri/unichrome/via_ioctl.c +++ b/src/mesa/drivers/dri/unichrome/via_ioctl.c @@ -201,7 +201,7 @@ static void viaFillBuffer(struct via_context *vmesa, -static void viaClear(GLcontext *ctx, GLbitfield mask) +static void viaClear(struct gl_context *ctx, GLbitfield mask) { struct via_context *vmesa = VIA_CONTEXT(ctx); __DRIdrawable *dPriv = vmesa->driDrawable; @@ -951,25 +951,25 @@ void viaFlushDma(struct via_context *vmesa) } } -static void viaFlush(GLcontext *ctx) +static void viaFlush(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); VIA_FLUSH_DMA(vmesa); } -static void viaFinish(GLcontext *ctx) +static void viaFinish(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); VIA_FLUSH_DMA(vmesa); viaWaitIdle(vmesa, GL_FALSE); } -static void viaClearStencil(GLcontext *ctx, int s) +static void viaClearStencil(struct gl_context *ctx, int s) { return; } -void viaInitIoctlFuncs(GLcontext *ctx) +void viaInitIoctlFuncs(struct gl_context *ctx) { ctx->Driver.Flush = viaFlush; ctx->Driver.Clear = viaClear; diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.h b/src/mesa/drivers/dri/unichrome/via_ioctl.h index c6b32cf0853..03df789b52c 100644 --- a/src/mesa/drivers/dri/unichrome/via_ioctl.h +++ b/src/mesa/drivers/dri/unichrome/via_ioctl.h @@ -32,7 +32,7 @@ void viaFinishPrimitive(struct via_context *vmesa); void viaFlushDma(struct via_context *vmesa); void viaFlushDmaLocked(struct via_context *vmesa, GLuint flags); -void viaInitIoctlFuncs(GLcontext *ctx); +void viaInitIoctlFuncs(struct gl_context *ctx); void viaCopyBuffer(__DRIdrawable *dpriv); void viaPageFlip(__DRIdrawable *dpriv); void viaCheckDma(struct via_context *vmesa, GLuint bytes); diff --git a/src/mesa/drivers/dri/unichrome/via_render.c b/src/mesa/drivers/dri/unichrome/via_render.c index 4351f119555..10e2b4eaddf 100644 --- a/src/mesa/drivers/dri/unichrome/via_render.c +++ b/src/mesa/drivers/dri/unichrome/via_render.c @@ -86,7 +86,7 @@ /**********************************************************************/ /* Fast Render pipeline stage */ /**********************************************************************/ -static GLboolean via_run_fastrender(GLcontext *ctx, +static GLboolean via_run_fastrender(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { struct via_context *vmesa = VIA_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/unichrome/via_span.c b/src/mesa/drivers/dri/unichrome/via_span.c index 31f794ffc85..4ca584261bc 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.c +++ b/src/mesa/drivers/dri/unichrome/via_span.c @@ -149,21 +149,21 @@ /* Move locking out to get reasonable span performance. */ -void viaSpanRenderStart( GLcontext *ctx ) +void viaSpanRenderStart( struct gl_context *ctx ) { struct via_context *vmesa = VIA_CONTEXT(ctx); viaWaitIdle(vmesa, GL_FALSE); LOCK_HARDWARE(vmesa); } -void viaSpanRenderFinish( GLcontext *ctx ) +void viaSpanRenderFinish( struct gl_context *ctx ) { struct via_context *vmesa = VIA_CONTEXT(ctx); _swrast_flush( ctx ); UNLOCK_HARDWARE( vmesa ); } -void viaInitSpanFuncs(GLcontext *ctx) +void viaInitSpanFuncs(struct gl_context *ctx) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); swdd->SpanRenderStart = viaSpanRenderStart; diff --git a/src/mesa/drivers/dri/unichrome/via_span.h b/src/mesa/drivers/dri/unichrome/via_span.h index 8830075bff5..b7abf685382 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.h +++ b/src/mesa/drivers/dri/unichrome/via_span.h @@ -25,9 +25,9 @@ #ifndef _VIA_SPAN_H #define _VIA_SPAN_H -extern void viaInitSpanFuncs(GLcontext *ctx); -extern void viaSpanRenderStart( GLcontext *ctx ); -extern void viaSpanRenderFinish( GLcontext *ctx ); +extern void viaInitSpanFuncs(struct gl_context *ctx); +extern void viaSpanRenderStart( struct gl_context *ctx ); +extern void viaSpanRenderFinish( struct gl_context *ctx ); extern void viaSetSpanFunctions(struct via_renderbuffer *vrb, const struct gl_config *vis); diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index f7029b94928..033352188d4 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.c +++ b/src/mesa/drivers/dri/unichrome/via_state.c @@ -78,7 +78,7 @@ static GLuint viaComputeLodBias(GLfloat bias) void viaEmitState(struct via_context *vmesa) { - GLcontext *ctx = vmesa->glCtx; + struct gl_context *ctx = vmesa->glCtx; GLuint i = 0; GLuint j = 0; RING_VARS; @@ -523,7 +523,7 @@ static INLINE GLuint viaPackColor(GLuint bpp, } } -static void viaBlendEquationSeparate(GLcontext *ctx, +static void viaBlendEquationSeparate(struct gl_context *ctx, GLenum rgbMode, GLenum aMode) { @@ -545,7 +545,7 @@ static void viaBlendEquationSeparate(GLcontext *ctx, ctx->Color.LogicOp != GL_COPY)); } -static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor) +static void viaBlendFunc(struct gl_context *ctx, GLenum sfactor, GLenum dfactor) { struct via_context *vmesa = VIA_CONTEXT(ctx); GLboolean fallback = GL_FALSE; @@ -580,7 +580,7 @@ static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor) /* Shouldn't be called as the extension is disabled. */ -static void viaBlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB, +static void viaBlendFuncSeparate(struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA) { @@ -597,7 +597,7 @@ static void viaBlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB, /* ============================================================= * Hardware clipping */ -static void viaScissor(GLcontext *ctx, GLint x, GLint y, +static void viaScissor(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -619,7 +619,7 @@ static void viaScissor(GLcontext *ctx, GLint x, GLint y, vmesa->scissorRect.y2 = vmesa->driDrawable->h - y; } -static void viaEnable(GLcontext *ctx, GLenum cap, GLboolean state) +static void viaEnable(struct gl_context *ctx, GLenum cap, GLboolean state) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -637,13 +637,13 @@ static void viaEnable(GLcontext *ctx, GLenum cap, GLboolean state) /* Fallback to swrast for select and feedback. */ -static void viaRenderMode(GLcontext *ctx, GLenum mode) +static void viaRenderMode(struct gl_context *ctx, GLenum mode) { FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_RENDERMODE, (mode != GL_RENDER)); } -static void viaDrawBuffer(GLcontext *ctx, GLenum mode) +static void viaDrawBuffer(struct gl_context *ctx, GLenum mode) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -678,7 +678,7 @@ static void viaDrawBuffer(GLcontext *ctx, GLenum mode) viaXMesaWindowMoved(vmesa); } -static void viaClearColor(GLcontext *ctx, const GLfloat color[4]) +static void viaClearColor(struct gl_context *ctx, const GLfloat color[4]) { struct via_context *vmesa = VIA_CONTEXT(ctx); GLubyte pcolor[4]; @@ -696,7 +696,7 @@ static void viaClearColor(GLcontext *ctx, const GLfloat color[4]) #define WRITEMASK_GREEN_SHIFT 29 #define WRITEMASK_BLUE_SHIFT 28 -static void viaColorMask(GLcontext *ctx, +static void viaColorMask(struct gl_context *ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a) { @@ -716,7 +716,7 @@ static void viaColorMask(GLcontext *ctx, /* This hardware just isn't capable of private back buffers without * glitches and/or a hefty locking scheme. */ -void viaCalcViewport(GLcontext *ctx) +void viaCalcViewport(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); __DRIdrawable *dPriv = vmesa->driDrawable; @@ -733,20 +733,20 @@ void viaCalcViewport(GLcontext *ctx) m[MAT_TZ] = v[MAT_TZ] * (1.0 / vmesa->depth_max); } -static void viaViewport(GLcontext *ctx, +static void viaViewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height) { viaCalcViewport(ctx); } -static void viaDepthRange(GLcontext *ctx, +static void viaDepthRange(struct gl_context *ctx, GLclampd nearval, GLclampd farval) { viaCalcViewport(ctx); } -void viaInitState(GLcontext *ctx) +void viaInitState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -865,7 +865,7 @@ get_minmag_filter( GLenum min, GLenum mag ) } -static GLboolean viaChooseTextureState(GLcontext *ctx) +static GLboolean viaChooseTextureState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0]; @@ -950,7 +950,7 @@ static GLboolean viaChooseTextureState(GLcontext *ctx) return GL_TRUE; } -static void viaChooseColorState(GLcontext *ctx) +static void viaChooseColorState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); GLenum s = ctx->Color.BlendSrcRGB; @@ -1246,7 +1246,7 @@ static void viaChooseColorState(GLcontext *ctx) vmesa->regEnable &= ~HC_HenAW_MASK; } -static void viaChooseFogState(GLcontext *ctx) +static void viaChooseFogState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1271,7 +1271,7 @@ static void viaChooseFogState(GLcontext *ctx) } } -static void viaChooseDepthState(GLcontext *ctx) +static void viaChooseDepthState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); if (ctx->Depth.Test) { @@ -1295,7 +1295,7 @@ static void viaChooseDepthState(GLcontext *ctx) } } -static void viaChooseLineState(GLcontext *ctx) +static void viaChooseLineState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1309,7 +1309,7 @@ static void viaChooseLineState(GLcontext *ctx) } } -static void viaChoosePolygonState(GLcontext *ctx) +static void viaChoosePolygonState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1335,7 +1335,7 @@ static void viaChoosePolygonState(GLcontext *ctx) } } -static void viaChooseStencilState(GLcontext *ctx) +static void viaChooseStencilState(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1421,7 +1421,7 @@ static void viaChooseStencilState(GLcontext *ctx) -static void viaChooseTriangle(GLcontext *ctx) +static void viaChooseTriangle(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1445,7 +1445,7 @@ static void viaChooseTriangle(GLcontext *ctx) } } -void viaValidateState( GLcontext *ctx ) +void viaValidateState( struct gl_context *ctx ) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1492,7 +1492,7 @@ void viaValidateState( GLcontext *ctx ) vmesa->newState = 0; } -static void viaInvalidateState(GLcontext *ctx, GLuint newState) +static void viaInvalidateState(struct gl_context *ctx, GLuint newState) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1505,7 +1505,7 @@ static void viaInvalidateState(GLcontext *ctx, GLuint newState) _tnl_InvalidateState(ctx, newState); } -void viaInitStateFuncs(GLcontext *ctx) +void viaInitStateFuncs(struct gl_context *ctx) { /* Callbacks for internal Mesa events. */ diff --git a/src/mesa/drivers/dri/unichrome/via_state.h b/src/mesa/drivers/dri/unichrome/via_state.h index 065ec57d331..8a237055201 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.h +++ b/src/mesa/drivers/dri/unichrome/via_state.h @@ -27,10 +27,10 @@ #include "via_context.h" -extern void viaInitState(GLcontext *ctx); -extern void viaInitStateFuncs(GLcontext *ctx); -extern void viaCalcViewport(GLcontext *ctx); -extern void viaValidateState(GLcontext *ctx); +extern void viaInitState(struct gl_context *ctx); +extern void viaInitStateFuncs(struct gl_context *ctx); +extern void viaCalcViewport(struct gl_context *ctx); +extern void viaValidateState(struct gl_context *ctx); extern void viaEmitState(struct via_context *vmesa); extern void viaFallback(struct via_context *vmesa, GLuint bit, GLboolean mode); diff --git a/src/mesa/drivers/dri/unichrome/via_tex.c b/src/mesa/drivers/dri/unichrome/via_tex.c index 49426fef8d7..18fb8f33b9f 100644 --- a/src/mesa/drivers/dri/unichrome/via_tex.c +++ b/src/mesa/drivers/dri/unichrome/via_tex.c @@ -45,7 +45,7 @@ #include "via_3d_reg.h" static gl_format -viaChooseTexFormat( GLcontext *ctx, GLint internalFormat, +viaChooseTexFormat( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -437,7 +437,7 @@ GLboolean viaSwapOutWork( struct via_context *vmesa ) /* Basically, just collect the image dimensions and addresses for each * image and update the texture object state accordingly. */ -static GLboolean viaSetTexImages(GLcontext *ctx, +static GLboolean viaSetTexImages(struct gl_context *ctx, struct gl_texture_object *texObj) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -624,7 +624,7 @@ static GLboolean viaSetTexImages(GLcontext *ctx, } -GLboolean viaUpdateTextureState( GLcontext *ctx ) +GLboolean viaUpdateTextureState( struct gl_context *ctx ) { struct gl_texture_unit *texUnit = ctx->Texture.Unit; GLuint i; @@ -651,7 +651,7 @@ GLboolean viaUpdateTextureState( GLcontext *ctx ) -static void viaTexImage(GLcontext *ctx, +static void viaTexImage(struct gl_context *ctx, GLint dims, GLenum target, GLint level, GLint internalFormat, @@ -798,7 +798,7 @@ static void viaTexImage(GLcontext *ctx, _mesa_unmap_teximage_pbo(ctx, packing); } -static void viaTexImage2D(GLcontext *ctx, +static void viaTexImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, @@ -813,7 +813,7 @@ static void viaTexImage2D(GLcontext *ctx, packing, texObj, texImage ); } -static void viaTexSubImage2D(GLcontext *ctx, +static void viaTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -834,7 +834,7 @@ static void viaTexSubImage2D(GLcontext *ctx, texImage); } -static void viaTexImage1D(GLcontext *ctx, +static void viaTexImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, @@ -849,7 +849,7 @@ static void viaTexImage1D(GLcontext *ctx, packing, texObj, texImage ); } -static void viaTexSubImage1D(GLcontext *ctx, +static void viaTexSubImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -872,7 +872,7 @@ static void viaTexSubImage1D(GLcontext *ctx, -static GLboolean viaIsTextureResident(GLcontext *ctx, +static GLboolean viaIsTextureResident(struct gl_context *ctx, struct gl_texture_object *texObj) { struct via_texture_object *viaObj = @@ -884,14 +884,14 @@ static GLboolean viaIsTextureResident(GLcontext *ctx, -static struct gl_texture_image *viaNewTextureImage( GLcontext *ctx ) +static struct gl_texture_image *viaNewTextureImage( struct gl_context *ctx ) { (void) ctx; return (struct gl_texture_image *)CALLOC_STRUCT(via_texture_image); } -static struct gl_texture_object *viaNewTextureObject( GLcontext *ctx, +static struct gl_texture_object *viaNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) { @@ -906,7 +906,7 @@ static struct gl_texture_object *viaNewTextureObject( GLcontext *ctx, } -static void viaFreeTextureImageData( GLcontext *ctx, +static void viaFreeTextureImageData( struct gl_context *ctx, struct gl_texture_image *texImage ) { struct via_context *vmesa = VIA_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/unichrome/via_tex.h b/src/mesa/drivers/dri/unichrome/via_tex.h index 25eeee32f3d..9495c956b5a 100644 --- a/src/mesa/drivers/dri/unichrome/via_tex.h +++ b/src/mesa/drivers/dri/unichrome/via_tex.h @@ -30,7 +30,7 @@ struct via_context; -GLboolean viaUpdateTextureState(GLcontext *ctx); +GLboolean viaUpdateTextureState(struct gl_context *ctx); void viaInitTextureFuncs(struct dd_function_table * functions); GLboolean viaSwapOutWork( struct via_context *vmesa ); diff --git a/src/mesa/drivers/dri/unichrome/via_tris.c b/src/mesa/drivers/dri/unichrome/via_tris.c index be3c9a770ff..51f6af9228a 100644 --- a/src/mesa/drivers/dri/unichrome/via_tris.c +++ b/src/mesa/drivers/dri/unichrome/via_tris.c @@ -490,7 +490,7 @@ via_fallback_tri(struct via_context *vmesa, viaVertex *v1, viaVertex *v2) { - GLcontext *ctx = vmesa->glCtx; + struct gl_context *ctx = vmesa->glCtx; SWvertex v[3]; _swsetup_Translate(ctx, v0, &v[0]); _swsetup_Translate(ctx, v1, &v[1]); @@ -506,7 +506,7 @@ via_fallback_line(struct via_context *vmesa, viaVertex *v0, viaVertex *v1) { - GLcontext *ctx = vmesa->glCtx; + struct gl_context *ctx = vmesa->glCtx; SWvertex v[2]; _swsetup_Translate(ctx, v0, &v[0]); _swsetup_Translate(ctx, v1, &v[1]); @@ -520,7 +520,7 @@ static void via_fallback_point(struct via_context *vmesa, viaVertex *v0) { - GLcontext *ctx = vmesa->glCtx; + struct gl_context *ctx = vmesa->glCtx; SWvertex v[1]; _swsetup_Translate(ctx, v0, &v[0]); viaSpanRenderStart( ctx ); @@ -528,7 +528,7 @@ via_fallback_point(struct via_context *vmesa, viaSpanRenderFinish( ctx ); } -static void viaResetLineStipple( GLcontext *ctx ) +static void viaResetLineStipple( struct gl_context *ctx ) { struct via_context *vmesa = VIA_CONTEXT(ctx); vmesa->regCmdB |= HC_HLPrst_MASK; @@ -578,7 +578,7 @@ static void viaResetLineStipple( GLcontext *ctx ) -static void viaRenderClippedPoly(GLcontext *ctx, const GLuint *elts, +static void viaRenderClippedPoly(struct gl_context *ctx, const GLuint *elts, GLuint n) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -602,13 +602,13 @@ static void viaRenderClippedPoly(GLcontext *ctx, const GLuint *elts, tnl->Driver.Render.PrimitiveNotify( ctx, prim ); } -static void viaRenderClippedLine(GLcontext *ctx, GLuint ii, GLuint jj) +static void viaRenderClippedLine(struct gl_context *ctx, GLuint ii, GLuint jj) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line(ctx, ii, jj); } -static void viaFastRenderClippedPoly(GLcontext *ctx, const GLuint *elts, +static void viaFastRenderClippedPoly(struct gl_context *ctx, const GLuint *elts, GLuint n) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -645,7 +645,7 @@ static void viaFastRenderClippedPoly(GLcontext *ctx, const GLuint *elts, _NEW_POLYGONSTIPPLE) -static void viaChooseRenderState(GLcontext *ctx) +static void viaChooseRenderState(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -739,7 +739,7 @@ do { \ -static void viaChooseVertexState( GLcontext *ctx ) +static void viaChooseVertexState( struct gl_context *ctx ) { struct via_context *vmesa = VIA_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -822,7 +822,7 @@ static void viaChooseVertexState( GLcontext *ctx ) * them. Fallback to swrast if we can't. Returns GL_TRUE if projective * texture coordinates must be faked, GL_FALSE otherwise. */ -static GLboolean viaCheckPTexHack( GLcontext *ctx ) +static GLboolean viaCheckPTexHack( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -853,7 +853,7 @@ static GLboolean viaCheckPTexHack( GLcontext *ctx ) /**********************************************************************/ -static void viaRenderStart(GLcontext *ctx) +static void viaRenderStart(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -888,7 +888,7 @@ static void viaRenderStart(GLcontext *ctx) VB->AttribPtr[VERT_ATTRIB_POS] = VB->NdcPtr; } -static void viaRenderFinish(GLcontext *ctx) +static void viaRenderFinish(struct gl_context *ctx) { VIA_FINISH_PRIM(VIA_CONTEXT(ctx)); } @@ -897,7 +897,7 @@ static void viaRenderFinish(GLcontext *ctx) /* System to flush dma and emit state changes based on the rasterized * primitive. */ -void viaRasterPrimitive(GLcontext *ctx, +void viaRasterPrimitive(struct gl_context *ctx, GLenum glprim, GLenum hwprim) { @@ -1035,7 +1035,7 @@ void viaRasterPrimitive(GLcontext *ctx, /* Callback for mesa: */ -static void viaRenderPrimitive( GLcontext *ctx, GLuint prim ) +static void viaRenderPrimitive( struct gl_context *ctx, GLuint prim ) { viaRasterPrimitive( ctx, prim, hwPrim[prim] ); } @@ -1103,7 +1103,7 @@ void viaFinishPrimitive(struct via_context *vmesa) void viaFallback(struct via_context *vmesa, GLuint bit, GLboolean mode) { - GLcontext *ctx = vmesa->glCtx; + struct gl_context *ctx = vmesa->glCtx; TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint oldfallback = vmesa->Fallback; @@ -1148,7 +1148,7 @@ void viaFallback(struct via_context *vmesa, GLuint bit, GLboolean mode) } } -static void viaRunPipeline( GLcontext *ctx ) +static void viaRunPipeline( struct gl_context *ctx ) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1166,7 +1166,7 @@ static void viaRunPipeline( GLcontext *ctx ) /**********************************************************************/ -void viaInitTriFuncs(GLcontext *ctx) +void viaInitTriFuncs(struct gl_context *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); diff --git a/src/mesa/drivers/dri/unichrome/via_tris.h b/src/mesa/drivers/dri/unichrome/via_tris.h index bc6ef4e4eba..4bc83fc6242 100644 --- a/src/mesa/drivers/dri/unichrome/via_tris.h +++ b/src/mesa/drivers/dri/unichrome/via_tris.h @@ -28,8 +28,8 @@ #include "main/mtypes.h" extern void viaPrintRenderState(const char *msg, GLuint state); -extern void viaInitTriFuncs(GLcontext *ctx); -extern void viaRasterPrimitive(GLcontext *ctx, GLenum rPrim, GLuint hwPrim); -extern void viaRasterPrimitiveFinish(GLcontext *ctx); +extern void viaInitTriFuncs(struct gl_context *ctx); +extern void viaRasterPrimitive(struct gl_context *ctx, GLenum rPrim, GLuint hwPrim); +extern void viaRasterPrimitiveFinish(struct gl_context *ctx); #endif diff --git a/src/mesa/drivers/fbdev/glfbdev.c b/src/mesa/drivers/fbdev/glfbdev.c index fd3432a9832..5195bca97fa 100644 --- a/src/mesa/drivers/fbdev/glfbdev.c +++ b/src/mesa/drivers/fbdev/glfbdev.c @@ -95,10 +95,10 @@ struct GLFBDevBufferRec { }; /** - * Derived from Mesa's GLcontext class. + * Derived from Mesa's struct gl_context class. */ struct GLFBDevContextRec { - GLcontext glcontext; /* base class */ + struct gl_context glcontext; /* base class */ GLFBDevVisualPtr visual; GLFBDevBufferPtr drawBuffer; GLFBDevBufferPtr readBuffer; @@ -122,7 +122,7 @@ struct GLFBDevRenderbufferRec { static const GLubyte * -get_string(GLcontext *ctx, GLenum pname) +get_string(struct gl_context *ctx, GLenum pname) { (void) ctx; switch (pname) { @@ -135,7 +135,7 @@ get_string(GLcontext *ctx, GLenum pname) static void -update_state( GLcontext *ctx, GLuint new_state ) +update_state( struct gl_context *ctx, GLuint new_state ) { /* not much to do here - pass it on */ _swrast_InvalidateState( ctx, new_state ); @@ -159,7 +159,7 @@ get_buffer_size( struct gl_framebuffer *buffer, GLuint *width, GLuint *height ) * framebuffer size has changed (and update corresponding state). */ static void -viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) +viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { GLuint newWidth, newHeight; struct gl_framebuffer *buffer; @@ -463,7 +463,7 @@ delete_renderbuffer(struct gl_renderbuffer *rb) static GLboolean -renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { /* no-op: the renderbuffer storage is allocated just once when it's @@ -706,7 +706,7 @@ GLFBDevContextPtr glFBDevCreateContext( const GLFBDevVisualPtr visual, GLFBDevContextPtr share ) { GLFBDevContextPtr ctx; - GLcontext *glctx; + struct gl_context *glctx; struct dd_function_table functions; ASSERT(visual); @@ -732,7 +732,7 @@ glFBDevCreateContext( const GLFBDevVisualPtr visual, GLFBDevContextPtr share ) ctx->visual = visual; /* Create module contexts */ - glctx = (GLcontext *) &ctx->glcontext; + glctx = (struct gl_context *) &ctx->glcontext; _swrast_CreateContext( glctx ); _vbo_CreateContext( glctx ); _tnl_CreateContext( glctx ); @@ -762,7 +762,7 @@ glFBDevDestroyContext( GLFBDevContextPtr context ) GLFBDevContextPtr fbdevctx = glFBDevGetCurrentContext(); if (context) { - GLcontext *mesaCtx = &context->glcontext; + struct gl_context *mesaCtx = &context->glcontext; _swsetup_DestroyContext( mesaCtx ); _swrast_DestroyContext( mesaCtx ); diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index 4b264539cb6..37dc35cbedd 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -57,11 +57,11 @@ /** - * OSMesa rendering context, derived from core Mesa GLcontext. + * OSMesa rendering context, derived from core Mesa struct gl_context. */ struct osmesa_context { - GLcontext mesa; /*< Base class - this must be first */ + struct gl_context mesa; /*< Base class - this must be first */ struct gl_config *gl_visual; /*< Describes the buffers */ struct gl_renderbuffer *rb; /*< The user's colorbuffer */ struct gl_framebuffer *gl_buffer; /*< The framebuffer, containing user's rb */ @@ -75,7 +75,7 @@ struct osmesa_context static INLINE OSMesaContext -OSMESA_CONTEXT(GLcontext *ctx) +OSMESA_CONTEXT(struct gl_context *ctx) { /* Just cast, since we're using structure containment */ return (OSMesaContext) ctx; @@ -88,7 +88,7 @@ OSMESA_CONTEXT(GLcontext *ctx) static const GLubyte * -get_string( GLcontext *ctx, GLenum name ) +get_string( struct gl_context *ctx, GLenum name ) { (void) ctx; switch (name) { @@ -107,7 +107,7 @@ get_string( GLcontext *ctx, GLenum name ) static void -osmesa_update_state( GLcontext *ctx, GLuint new_state ) +osmesa_update_state( struct gl_context *ctx, GLuint new_state ) { /* easy - just propogate */ _swrast_InvalidateState( ctx, new_state ); @@ -557,7 +557,7 @@ do { \ * function. Otherwise, return NULL. */ static swrast_line_func -osmesa_choose_line_function( GLcontext *ctx ) +osmesa_choose_line_function( struct gl_context *ctx ) { const OSMesaContext osmesa = OSMESA_CONTEXT(ctx); const SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -668,7 +668,7 @@ osmesa_choose_line_function( GLcontext *ctx ) * Return pointer to an optimized triangle function if possible. */ static swrast_tri_func -osmesa_choose_triangle_function( GLcontext *ctx ) +osmesa_choose_triangle_function( struct gl_context *ctx ) { const OSMesaContext osmesa = OSMESA_CONTEXT(ctx); const SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -708,7 +708,7 @@ osmesa_choose_triangle_function( GLcontext *ctx ) * standard swrast functions. */ static void -osmesa_choose_triangle( GLcontext *ctx ) +osmesa_choose_triangle( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -718,7 +718,7 @@ osmesa_choose_triangle( GLcontext *ctx ) } static void -osmesa_choose_line( GLcontext *ctx ) +osmesa_choose_line( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -806,7 +806,7 @@ osmesa_delete_renderbuffer(struct gl_renderbuffer *rb) * Just set up all the gl_renderbuffer methods. */ static GLboolean -osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +osmesa_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { const OSMesaContext osmesa = OSMESA_CONTEXT(ctx); @@ -994,7 +994,7 @@ osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb, * Allocate a new renderbuffer to describe the user-provided color buffer. */ static struct gl_renderbuffer * -new_osmesa_renderbuffer(GLcontext *ctx, GLenum format, GLenum type) +new_osmesa_renderbuffer(struct gl_context *ctx, GLenum format, GLenum type) { const GLuint name = 0; struct gl_renderbuffer *rb = _mesa_new_renderbuffer(ctx, name); @@ -1157,7 +1157,7 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, if (!_mesa_initialize_context(&osmesa->mesa, osmesa->gl_visual, sharelist ? &sharelist->mesa - : (GLcontext *) NULL, + : (struct gl_context *) NULL, &functions, (void *) osmesa)) { _mesa_destroy_visual( osmesa->gl_visual ); free(osmesa); @@ -1202,7 +1202,7 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, /* Initialize the software rasterizer and helper modules. */ { - GLcontext *ctx = &osmesa->mesa; + struct gl_context *ctx = &osmesa->mesa; SWcontext *swrast; TNLcontext *tnl; @@ -1367,7 +1367,7 @@ OSMesaMakeCurrent( OSMesaContext osmesa, void *buffer, GLenum type, GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void ) { - GLcontext *ctx = _mesa_get_current_context(); + struct gl_context *ctx = _mesa_get_current_context(); if (ctx) return (OSMesaContext) ctx; else diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index 39d27044175..833e2526f3c 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -92,9 +92,9 @@ static WMesaFramebuffer wmesa_framebuffer(struct gl_framebuffer *fb) /** - * Given a GLcontext, return the corresponding WMesaContext. + * Given a struct gl_context, return the corresponding WMesaContext. */ -static WMesaContext wmesa_context(const GLcontext *ctx) +static WMesaContext wmesa_context(const struct gl_context *ctx) { return (WMesaContext) ctx; } @@ -104,7 +104,7 @@ static WMesaContext wmesa_context(const GLcontext *ctx) * Every driver should implement a GetString function in order to * return a meaningful GL_RENDERER string. */ -static const GLubyte *wmesa_get_string(GLcontext *ctx, GLenum name) +static const GLubyte *wmesa_get_string(struct gl_context *ctx, GLenum name) { return (name == GL_RENDERER) ? (GLubyte *) "Mesa Windows GDI Driver" : NULL; @@ -224,7 +224,7 @@ wmesa_get_buffer_size(struct gl_framebuffer *buffer, GLuint *width, GLuint *heig } -static void wmesa_flush(GLcontext *ctx) +static void wmesa_flush(struct gl_context *ctx) { WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->WinSysDrawBuffer); @@ -250,7 +250,7 @@ static void wmesa_flush(GLcontext *ctx) /* * Set the color used to clear the color buffer. */ -static void clear_color(GLcontext *ctx, const GLfloat color[4]) +static void clear_color(struct gl_context *ctx, const GLfloat color[4]) { WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); @@ -277,7 +277,7 @@ static void clear_color(GLcontext *ctx, const GLfloat color[4]) * Clearing of the other non-color buffers is left to the swrast. */ -static void clear(GLcontext *ctx, GLbitfield mask) +static void clear(struct gl_context *ctx, GLbitfield mask) { #define FLIP(Y) (ctx->DrawBuffer->Height - (Y) - 1) const GLint x = ctx->DrawBuffer->_Xmin; @@ -447,7 +447,7 @@ static void clear(GLcontext *ctx, GLbitfield mask) **/ /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_front(const GLcontext *ctx, +static void write_rgba_span_front(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], @@ -534,7 +534,7 @@ static void write_rgba_span_front(const GLcontext *ctx, } /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_front(const GLcontext *ctx, +static void write_rgb_span_front(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], @@ -563,7 +563,7 @@ static void write_rgb_span_front(const GLcontext *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_front(const GLcontext *ctx, +static void write_mono_rgba_span_front(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLchan color[4], @@ -588,7 +588,7 @@ static void write_mono_rgba_span_front(const GLcontext *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_front(const GLcontext *ctx, +static void write_rgba_pixels_front(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -611,7 +611,7 @@ static void write_rgba_pixels_front(const GLcontext *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_front(const GLcontext *ctx, +static void write_mono_rgba_pixels_front(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -629,7 +629,7 @@ static void write_mono_rgba_pixels_front(const GLcontext *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_front(const GLcontext *ctx, +static void read_rgba_span_front(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ) @@ -649,7 +649,7 @@ static void read_rgba_span_front(const GLcontext *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_front(const GLcontext *ctx, +static void read_rgba_pixels_front(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4]) @@ -678,7 +678,7 @@ LPDWORD lpdw = ((LPDWORD)((pwc)->pbPixels + (pwc)->ScanWidth * (y)) + (x)); \ /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_32(const GLcontext *ctx, +static void write_rgba_span_32(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], @@ -708,7 +708,7 @@ static void write_rgba_span_32(const GLcontext *ctx, /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_32(const GLcontext *ctx, +static void write_rgb_span_32(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], @@ -740,7 +740,7 @@ static void write_rgb_span_32(const GLcontext *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_32(const GLcontext *ctx, +static void write_mono_rgba_span_32(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLchan color[4], @@ -766,7 +766,7 @@ static void write_mono_rgba_span_32(const GLcontext *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_32(const GLcontext *ctx, +static void write_rgba_pixels_32(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], @@ -785,7 +785,7 @@ static void write_rgba_pixels_32(const GLcontext *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_32(const GLcontext *ctx, +static void write_mono_rgba_pixels_32(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -802,7 +802,7 @@ static void write_mono_rgba_pixels_32(const GLcontext *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_32(const GLcontext *ctx, +static void read_rgba_span_32(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ) @@ -826,7 +826,7 @@ static void read_rgba_span_32(const GLcontext *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_32(const GLcontext *ctx, +static void read_rgba_pixels_32(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4]) @@ -860,7 +860,7 @@ lpb[1] = (g); \ lpb[2] = (r); } /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_24(const GLcontext *ctx, +static void write_rgba_span_24(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], @@ -894,7 +894,7 @@ static void write_rgba_span_24(const GLcontext *ctx, /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_24(const GLcontext *ctx, +static void write_rgb_span_24(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], @@ -930,7 +930,7 @@ static void write_rgb_span_24(const GLcontext *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_24(const GLcontext *ctx, +static void write_mono_rgba_span_24(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLchan color[4], @@ -959,7 +959,7 @@ static void write_mono_rgba_span_24(const GLcontext *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_24(const GLcontext *ctx, +static void write_rgba_pixels_24(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], @@ -978,7 +978,7 @@ static void write_rgba_pixels_24(const GLcontext *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_24(const GLcontext *ctx, +static void write_mono_rgba_pixels_24(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -995,7 +995,7 @@ static void write_mono_rgba_pixels_24(const GLcontext *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_24(const GLcontext *ctx, +static void read_rgba_span_24(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ) @@ -1017,7 +1017,7 @@ static void read_rgba_span_24(const GLcontext *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_24(const GLcontext *ctx, +static void read_rgba_pixels_24(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4]) @@ -1049,7 +1049,7 @@ LPWORD lpw = ((LPWORD)((pwc)->pbPixels + (pwc)->ScanWidth * (y)) + (x)); \ /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_16(const GLcontext *ctx, +static void write_rgba_span_16(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], @@ -1079,7 +1079,7 @@ static void write_rgba_span_16(const GLcontext *ctx, /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_16(const GLcontext *ctx, +static void write_rgb_span_16(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], @@ -1111,7 +1111,7 @@ static void write_rgb_span_16(const GLcontext *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_16(const GLcontext *ctx, +static void write_mono_rgba_span_16(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, const GLchan color[4], @@ -1138,7 +1138,7 @@ static void write_mono_rgba_span_16(const GLcontext *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_16(const GLcontext *ctx, +static void write_rgba_pixels_16(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], @@ -1158,7 +1158,7 @@ static void write_rgba_pixels_16(const GLcontext *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_16(const GLcontext *ctx, +static void write_mono_rgba_pixels_16(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], @@ -1176,7 +1176,7 @@ static void write_mono_rgba_pixels_16(const GLcontext *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_16(const GLcontext *ctx, +static void read_rgba_span_16(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ) @@ -1200,7 +1200,7 @@ static void read_rgba_span_16(const GLcontext *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_16(const GLcontext *ctx, +static void read_rgba_pixels_16(const struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4]) @@ -1244,7 +1244,7 @@ wmesa_delete_renderbuffer(struct gl_renderbuffer *rb) * has changed. Do whatever's needed to cope with that. */ static GLboolean -wmesa_renderbuffer_storage(GLcontext *ctx, +wmesa_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, @@ -1320,7 +1320,7 @@ void wmesa_set_renderbuffer_funcs(struct gl_renderbuffer *rb, int pixelformat, * Resize the front/back colorbuffers to match the latest window size. */ static void -wmesa_resize_buffers(GLcontext *ctx, struct gl_framebuffer *buffer, +wmesa_resize_buffers(struct gl_context *ctx, struct gl_framebuffer *buffer, GLuint width, GLuint height) { WMesaContext pwc = wmesa_context(ctx); @@ -1348,7 +1348,7 @@ wmesa_resize_buffers(GLcontext *ctx, struct gl_framebuffer *buffer, * we get the viewport set correctly, even if the app does not call * glViewport and relies on the defaults. */ -static void wmesa_viewport(GLcontext *ctx, +static void wmesa_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height) { @@ -1371,7 +1371,7 @@ static void wmesa_viewport(GLcontext *ctx, * Called when the driver should update it's state, based on the new_state * flags. */ -static void wmesa_update_state(GLcontext *ctx, GLuint new_state) +static void wmesa_update_state(struct gl_context *ctx, GLuint new_state) { _swrast_InvalidateState(ctx, new_state); _swsetup_InvalidateState(ctx, new_state); @@ -1403,7 +1403,7 @@ WMesaContext WMesaCreateContext(HDC hDC, WMesaContext c; struct dd_function_table functions; GLint red_bits, green_bits, blue_bits, alpha_bits; - GLcontext *ctx; + struct gl_context *ctx; struct gl_config *visual; (void) Pal; @@ -1511,7 +1511,7 @@ WMesaContext WMesaCreateContext(HDC hDC, void WMesaDestroyContext( WMesaContext pwc ) { - GLcontext *ctx = &pwc->gl_ctx; + struct gl_context *ctx = &pwc->gl_ctx; WMesaFramebuffer pwfb; GET_CURRENT_CONTEXT(cur_ctx); diff --git a/src/mesa/drivers/windows/gdi/wmesadef.h b/src/mesa/drivers/windows/gdi/wmesadef.h index 1c0e2451114..a73609b007a 100644 --- a/src/mesa/drivers/windows/gdi/wmesadef.h +++ b/src/mesa/drivers/windows/gdi/wmesadef.h @@ -7,10 +7,10 @@ /** - * The Windows Mesa rendering context, derived from GLcontext. + * The Windows Mesa rendering context, derived from struct gl_context. */ struct wmesa_context { - GLcontext gl_ctx; /* The core GL/Mesa context */ + struct gl_context gl_ctx; /* The core GL/Mesa context */ HDC hDC; COLORREF clearColorRef; HPEN clearPen; diff --git a/src/mesa/drivers/windows/gldirect/dglcontext.c b/src/mesa/drivers/windows/gldirect/dglcontext.c index a420b36ffb4..10ea0578506 100644 --- a/src/mesa/drivers/windows/gldirect/dglcontext.c +++ b/src/mesa/drivers/windows/gldirect/dglcontext.c @@ -42,8 +42,8 @@ #ifdef _USE_GLD3_WGL #include "gld_driver.h" -extern void _gld_mesa_warning(GLcontext *, char *); -extern void _gld_mesa_fatal(GLcontext *, char *); +extern void _gld_mesa_warning(struct gl_context *, char *); +extern void _gld_mesa_fatal(struct gl_context *, char *); #endif // _USE_GLD3_WGL // TODO: Clean out old DX6-specific code from GLD 2.x CAD driver diff --git a/src/mesa/drivers/windows/gldirect/dglcontext.h b/src/mesa/drivers/windows/gldirect/dglcontext.h index f46d83eab0f..ce04603c191 100644 --- a/src/mesa/drivers/windows/gldirect/dglcontext.h +++ b/src/mesa/drivers/windows/gldirect/dglcontext.h @@ -87,7 +87,7 @@ typedef struct { void *glPriv; // Mesa vars: - GLcontext *glCtx; // The core Mesa context + struct gl_context *glCtx; // The core Mesa context struct gl_config *glVis; // Describes the color buffer struct gl_framebuffer *glBuffer; // Ancillary buffers @@ -135,7 +135,7 @@ typedef struct { // // Mesa context vars: // - GLcontext *glCtx; // The core Mesa context + struct gl_context *glCtx; // The core Mesa context struct gl_config *glVis; // Describes the color buffer struct gl_framebuffer *glBuffer; // Ancillary buffers diff --git a/src/mesa/drivers/windows/gldirect/dglwgl.c b/src/mesa/drivers/windows/gldirect/dglwgl.c index 74ecb01a5b0..c46cfe162f9 100644 --- a/src/mesa/drivers/windows/gldirect/dglwgl.c +++ b/src/mesa/drivers/windows/gldirect/dglwgl.c @@ -874,8 +874,8 @@ BOOL APIENTRY _GLD_WGL_EXPORT(SetPixelFormat)( // Copied from GLD2.x. KeithH // static GLboolean _gldShareLists( - GLcontext *ctx1, - GLcontext *ctx2) + struct gl_context *ctx1, + struct gl_context *ctx2) { /* Sanity check context pointers */ if (ctx1 == NULL || ctx2 == NULL) @@ -955,7 +955,7 @@ BOOL APIENTRY _GLD_WGL_EXPORT(SwapLayerBuffers)( // either MESA glViewport() or GLD wglMakeCurrent(). BOOL dglWglResizeBuffers( - GLcontext *ctx, + struct gl_context *ctx, BOOL bDefaultDriver) { DGL_ctx *dgl = NULL; diff --git a/src/mesa/drivers/windows/gldirect/dglwgl.h b/src/mesa/drivers/windows/gldirect/dglwgl.h index aac04103335..3e7e5892ca5 100644 --- a/src/mesa/drivers/windows/gldirect/dglwgl.h +++ b/src/mesa/drivers/windows/gldirect/dglwgl.h @@ -118,7 +118,7 @@ BOOL APIENTRY DGL_UseFontOutlinesA(HDC a, DWORD b, DWORD c, DWORD d, FLOAT e, FL BOOL APIENTRY DGL_UseFontOutlinesW(HDC a, DWORD b, DWORD c, DWORD d, FLOAT e, FLOAT f, int g, LPGLYPHMETRICSFLOAT h); #endif //_USE_GLD3_WGL -BOOL dglWglResizeBuffers(GLcontext *ctx, BOOL bDefaultDriver); +BOOL dglWglResizeBuffers(struct gl_context *ctx, BOOL bDefaultDriver); #ifdef __cplusplus } diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c index 4a38b35adf3..1c43a38557d 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_driver_dx7.c @@ -69,7 +69,7 @@ const float _fPersp_33 = 1.6f; //--------------------------------------------------------------------------- void _gld_mesa_warning( - __GLcontext *gc, + __struct gl_context *gc, char *str) { // Intercept Mesa's internal warning mechanism @@ -79,7 +79,7 @@ void _gld_mesa_warning( //--------------------------------------------------------------------------- void _gld_mesa_fatal( - __GLcontext *gc, + __struct gl_context *gc, char *str) { // Intercept Mesa's internal fatal-message mechanism @@ -199,7 +199,7 @@ D3DBLEND _gldConvertBlendFunc( //--------------------------------------------------------------------------- void gld_Noop_DX7( - GLcontext *ctx) + struct gl_context *ctx) { #ifdef _DEBUG gldLogMessage(GLDLOG_ERROR, "gld_Noop called!\n"); @@ -209,7 +209,7 @@ void gld_Noop_DX7( //--------------------------------------------------------------------------- void gld_Error_DX7( - GLcontext *ctx) + struct gl_context *ctx) { #ifdef _DEBUG // Quite useless. @@ -222,7 +222,7 @@ void gld_Error_DX7( //--------------------------------------------------------------------------- static GLboolean gld_set_draw_buffer_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum mode) { (void) ctx; @@ -237,7 +237,7 @@ static GLboolean gld_set_draw_buffer_DX7( //--------------------------------------------------------------------------- static void gld_set_read_buffer_DX7( - GLcontext *ctx, + struct gl_context *ctx, struct gl_framebuffer *buffer, GLenum mode) { @@ -251,7 +251,7 @@ static void gld_set_read_buffer_DX7( //--------------------------------------------------------------------------- void gld_Clear_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLbitfield mask, GLboolean all, GLint x, @@ -342,7 +342,7 @@ void gld_Clear_DX7( // Mesa 5: Parameter change static void gld_buffer_size_DX7( -// GLcontext *ctx, +// struct gl_context *ctx, struct gl_framebuffer *fb, GLuint *width, GLuint *height) @@ -356,14 +356,14 @@ static void gld_buffer_size_DX7( //--------------------------------------------------------------------------- static void gld_Finish_DX7( - GLcontext *ctx) + struct gl_context *ctx) { } //--------------------------------------------------------------------------- static void gld_Flush_DX7( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gld = GLD_GET_CONTEXT(ctx); @@ -379,7 +379,7 @@ static void gld_Flush_DX7( //--------------------------------------------------------------------------- void gld_NEW_STENCIL( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -404,7 +404,7 @@ void gld_NEW_STENCIL( //--------------------------------------------------------------------------- void gld_NEW_COLOR( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -438,7 +438,7 @@ void gld_NEW_COLOR( //--------------------------------------------------------------------------- void gld_NEW_DEPTH( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -451,7 +451,7 @@ void gld_NEW_DEPTH( //--------------------------------------------------------------------------- void gld_NEW_POLYGON( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -516,7 +516,7 @@ void gld_NEW_POLYGON( //--------------------------------------------------------------------------- void gld_NEW_FOG( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -571,7 +571,7 @@ void gld_NEW_FOG( //--------------------------------------------------------------------------- void gld_NEW_LIGHT( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -591,7 +591,7 @@ void gld_NEW_LIGHT( //--------------------------------------------------------------------------- void gld_NEW_MODELVIEW( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -639,7 +639,7 @@ void gld_NEW_MODELVIEW( //--------------------------------------------------------------------------- void gld_NEW_PROJECTION( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -718,7 +718,7 @@ void gldOrthoHook_DX7( //--------------------------------------------------------------------------- void gld_NEW_VIEWPORT( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); @@ -760,7 +760,7 @@ void gld_NEW_VIEWPORT( //--------------------------------------------------------------------------- __inline BOOL _gldAnyEvalEnabled( - GLcontext *ctx) + struct gl_context *ctx) { struct gl_eval_attrib *eval = &ctx->Eval; @@ -792,7 +792,7 @@ __inline BOOL _gldAnyEvalEnabled( //--------------------------------------------------------------------------- BOOL _gldChooseInternalPipeline( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx7 *gld) { // return TRUE; // DEBUGGING: ALWAYS USE MESA @@ -856,7 +856,7 @@ BOOL _gldChooseInternalPipeline( //--------------------------------------------------------------------------- void gld_update_state_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint new_state) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -991,7 +991,7 @@ void gld_update_state_DX7( //--------------------------------------------------------------------------- void gld_Viewport_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei w, @@ -1053,11 +1053,11 @@ void gld_Viewport_DX7( //--------------------------------------------------------------------------- -extern BOOL dglWglResizeBuffers(GLcontext *ctx, BOOL bDefaultDriver); +extern BOOL dglWglResizeBuffers(struct gl_context *ctx, BOOL bDefaultDriver); // Mesa 5: Parameter change void gldResizeBuffers_DX7( -// GLcontext *ctx) +// struct gl_context *ctx) struct gl_framebuffer *fb) { GET_CURRENT_CONTEXT(ctx); @@ -1069,7 +1069,7 @@ void gldResizeBuffers_DX7( // This is only for debugging. // To use, plug into ctx->Driver.Enable pointer below. void gld_Enable( - GLcontext *ctx, + struct gl_context *ctx, GLenum e, GLboolean b) { @@ -1082,10 +1082,10 @@ void gld_Enable( // Driver pointer setup //--------------------------------------------------------------------------- -extern const GLubyte* _gldGetStringGeneric(GLcontext*, GLenum); +extern const GLubyte* _gldGetStringGeneric(struct gl_context*, GLenum); void gldSetupDriverPointers_DX7( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx7 *gld = GLD_GET_DX7_DRIVER(gldCtx); diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h b/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h index 6f549c9d196..2e1d1365686 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_dx7.h @@ -225,68 +225,68 @@ typedef struct { //--------------------------------------------------------------------------- PROC gldGetProcAddress_DX7(LPCSTR a); -void gldEnableExtensions_DX7(GLcontext *ctx); -void gldInstallPipeline_DX7(GLcontext *ctx); -void gldSetupDriverPointers_DX7(GLcontext *ctx); +void gldEnableExtensions_DX7(struct gl_context *ctx); +void gldInstallPipeline_DX7(struct gl_context *ctx); +void gldSetupDriverPointers_DX7(struct gl_context *ctx); void gldResizeBuffers_DX7(struct gl_framebuffer *fb); // Texture functions -void gldCopyTexImage1D_DX7(GLcontext *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -void gldCopyTexImage2D_DX7(GLcontext *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -void gldCopyTexSubImage1D_DX7(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); -void gldCopyTexSubImage2D_DX7(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); -void gldCopyTexSubImage3D_DX7(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); - -void gld_NEW_TEXTURE_DX7(GLcontext *ctx); -void gld_DrawPixels_DX7(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels); -void gld_ReadPixels_DX7(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *dest); -void gld_CopyPixels_DX7(GLcontext *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type); -void gld_Bitmap_DX7(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap); -const struct gl_texture_format* gld_ChooseTextureFormat_DX7(GLcontext *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType); -void gld_TexImage2D_DX7(GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *tObj, struct gl_texture_image *texImage); -void gld_TexImage1D_DX7(GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); -void gld_TexSubImage2D_DX7( GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); -void gld_TexSubImage1D_DX7(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void gld_DeleteTexture_DX7(GLcontext *ctx, struct gl_texture_object *tObj); -void gld_ResetLineStipple_DX7(GLcontext *ctx); +void gldCopyTexImage1D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); +void gldCopyTexImage2D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +void gldCopyTexSubImage1D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); +void gldCopyTexSubImage2D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); +void gldCopyTexSubImage3D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); + +void gld_NEW_TEXTURE_DX7(struct gl_context *ctx); +void gld_DrawPixels_DX7(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels); +void gld_ReadPixels_DX7(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *dest); +void gld_CopyPixels_DX7(struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type); +void gld_Bitmap_DX7(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap); +const struct gl_texture_format* gld_ChooseTextureFormat_DX7(struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType); +void gld_TexImage2D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *tObj, struct gl_texture_image *texImage); +void gld_TexImage1D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); +void gld_TexSubImage2D_DX7( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); +void gld_TexSubImage1D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); +void gld_DeleteTexture_DX7(struct gl_context *ctx, struct gl_texture_object *tObj); +void gld_ResetLineStipple_DX7(struct gl_context *ctx); // 2D primitive functions -void gld_Points2D_DX7(GLcontext *ctx, GLuint first, GLuint last); +void gld_Points2D_DX7(struct gl_context *ctx, GLuint first, GLuint last); -void gld_Line2DFlat_DX7(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Line2DSmooth_DX7(GLcontext *ctx, GLuint v0, GLuint v1); +void gld_Line2DFlat_DX7(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Line2DSmooth_DX7(struct gl_context *ctx, GLuint v0, GLuint v1); -void gld_Triangle2DFlat_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmooth_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DFlatExtras_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmoothExtras_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DFlat_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmooth_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DFlatExtras_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmoothExtras_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad2DFlat_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmooth_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DFlatExtras_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmoothExtras_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DFlat_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmooth_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DFlatExtras_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmoothExtras_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); // 3D primitive functions -void gld_Points3D_DX7(GLcontext *ctx, GLuint first, GLuint last); -void gld_Line3DFlat_DX7(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle3DFlat_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad3DFlat_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Line3DSmooth_DX7(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle3DSmooth_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad3DSmooth_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Points3D_DX7(struct gl_context *ctx, GLuint first, GLuint last); +void gld_Line3DFlat_DX7(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle3DFlat_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad3DFlat_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Line3DSmooth_DX7(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle3DSmooth_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad3DSmooth_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); // Primitive functions for Two-sided-lighting Vertex Shader -void gld_Points2DTwoside_DX7(GLcontext *ctx, GLuint first, GLuint last); -void gld_Line2DFlatTwoside_DX7(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Line2DSmoothTwoside_DX7(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle2DFlatTwoside_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmoothTwoside_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad2DFlatTwoside_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmoothTwoside_DX7(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Points2DTwoside_DX7(struct gl_context *ctx, GLuint first, GLuint last); +void gld_Line2DFlatTwoside_DX7(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Line2DSmoothTwoside_DX7(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle2DFlatTwoside_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmoothTwoside_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad2DFlatTwoside_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmoothTwoside_DX7(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); #endif diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_ext_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_ext_dx7.c index ba60980bbe8..4ed3c3ca052 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_ext_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_ext_dx7.c @@ -69,7 +69,7 @@ #include "extensions.h" // For some reason this is not defined in an above header... -extern void _mesa_enable_imaging_extensions(GLcontext *ctx); +extern void _mesa_enable_imaging_extensions(struct gl_context *ctx); //--------------------------------------------------------------------------- // Hack for the SGIS_multitexture extension that was removed from Mesa @@ -281,7 +281,7 @@ PROC gldGetProcAddress_DX( //--------------------------------------------------------------------------- void gldEnableExtensions_DX7( - GLcontext *ctx) + struct gl_context *ctx) { GLuint i; diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_pipeline_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_pipeline_dx7.c index 9ccec69b98a..b801542736c 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_pipeline_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_pipeline_dx7.c @@ -65,7 +65,7 @@ static const struct tnl_pipeline_stage *gld_pipeline[] = { //--------------------------------------------------------------------------- void gldInstallPipeline_DX7( - GLcontext *ctx) + struct gl_context *ctx) { // Remove any existing pipeline stages, // then install GLDirect pipeline stages. diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_primitive_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_primitive_dx7.c index 0b373814fee..7fc50004de8 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_primitive_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_primitive_dx7.c @@ -277,7 +277,7 @@ //--------------------------------------------------------------------------- __inline DWORD _gldComputeFog( - GLcontext *ctx, + struct gl_context *ctx, SWvertex *swv) { // Full fog calculation. @@ -300,7 +300,7 @@ __inline DWORD _gldComputeFog( //--------------------------------------------------------------------------- void gld_ResetLineStipple_DX7( - GLcontext *ctx) + struct gl_context *ctx) { // TODO: Fake stipple with a 32x32 texture. } @@ -310,7 +310,7 @@ void gld_ResetLineStipple_DX7( //--------------------------------------------------------------------------- void gld_Points2D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint first, GLuint last) { @@ -358,7 +358,7 @@ void gld_Points2D_DX7( //--------------------------------------------------------------------------- void gld_Line2DFlat_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -391,7 +391,7 @@ void gld_Line2DFlat_DX7( //--------------------------------------------------------------------------- void gld_Line2DSmooth_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -422,7 +422,7 @@ void gld_Line2DSmooth_DX7( //--------------------------------------------------------------------------- void gld_Triangle2DFlat_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -461,7 +461,7 @@ void gld_Triangle2DFlat_DX7( //--------------------------------------------------------------------------- void gld_Triangle2DSmooth_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -500,7 +500,7 @@ void gld_Triangle2DSmooth_DX7( //--------------------------------------------------------------------------- void gld_Triangle2DFlatExtras_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -549,7 +549,7 @@ void gld_Triangle2DFlatExtras_DX7( //--------------------------------------------------------------------------- void gld_Triangle2DSmoothExtras_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -589,7 +589,7 @@ void gld_Triangle2DSmoothExtras_DX7( //--------------------------------------------------------------------------- void gld_Quad2DFlat_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -653,7 +653,7 @@ void gld_Quad2DFlat_DX7( //--------------------------------------------------------------------------- void gld_Quad2DSmooth_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -716,7 +716,7 @@ void gld_Quad2DSmooth_DX7( //--------------------------------------------------------------------------- void gld_Quad2DFlatExtras_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -793,7 +793,7 @@ void gld_Quad2DFlatExtras_DX7( //--------------------------------------------------------------------------- void gld_Quad2DSmoothExtras_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -860,7 +860,7 @@ void gld_Quad2DSmoothExtras_DX7( //--------------------------------------------------------------------------- void gld_Points3D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint first, GLuint last) { @@ -913,7 +913,7 @@ void gld_Points3D_DX7( //--------------------------------------------------------------------------- void gld_Line3DFlat_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -939,7 +939,7 @@ void gld_Line3DFlat_DX7( //--------------------------------------------------------------------------- void gld_Line3DSmooth_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -966,7 +966,7 @@ void gld_Line3DSmooth_DX7( //--------------------------------------------------------------------------- void gld_Triangle3DFlat_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -999,7 +999,7 @@ void gld_Triangle3DFlat_DX7( //--------------------------------------------------------------------------- void gld_Triangle3DSmooth_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -1033,7 +1033,7 @@ void gld_Triangle3DSmooth_DX7( //--------------------------------------------------------------------------- void gld_Quad3DFlat_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -1085,7 +1085,7 @@ void gld_Quad3DFlat_DX7( //--------------------------------------------------------------------------- void gld_Quad3DSmooth_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -1139,34 +1139,34 @@ void gld_Quad3DSmooth_DX7( /* -void gld_Points2DTwoside_DX8(GLcontext *ctx, GLuint first, GLuint last) +void gld_Points2DTwoside_DX8(struct gl_context *ctx, GLuint first, GLuint last) { // NOTE: Two-sided lighting does not apply to Points } //--------------------------------------------------------------------------- -void gld_Line2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1) +void gld_Line2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1) { // NOTE: Two-sided lighting does not apply to Lines } //--------------------------------------------------------------------------- -void gld_Line2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1) +void gld_Line2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1) { // NOTE: Two-sided lighting does not apply to Lines } //--------------------------------------------------------------------------- -void gld_Triangle2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2) +void gld_Triangle2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) { } //--------------------------------------------------------------------------- -void gld_Triangle2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2) +void gld_Triangle2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -1231,7 +1231,7 @@ void gld_Triangle2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuin //--------------------------------------------------------------------------- -void gld_Quad2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +void gld_Quad2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -1338,7 +1338,7 @@ void gld_Quad2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, //--------------------------------------------------------------------------- -void gld_Quad2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +void gld_Quad2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_texture_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_texture_dx7.c index bbe673516d6..74c3b0d344b 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_texture_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_texture_dx7.c @@ -817,7 +817,7 @@ void _gldClearSurface( //--------------------------------------------------------------------------- void gldCopyTexImage1D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, @@ -829,7 +829,7 @@ void gldCopyTexImage1D_DX7( //--------------------------------------------------------------------------- void gldCopyTexImage2D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, @@ -845,7 +845,7 @@ void gldCopyTexImage2D_DX7( //--------------------------------------------------------------------------- void gldCopyTexSubImage1D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) { @@ -855,7 +855,7 @@ void gldCopyTexSubImage1D_DX7( //--------------------------------------------------------------------------- void gldCopyTexSubImage2D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -871,7 +871,7 @@ void gldCopyTexSubImage2D_DX7( //--------------------------------------------------------------------------- void gldCopyTexSubImage3D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -903,7 +903,7 @@ typedef struct { //--------------------------------------------------------------------------- HRESULT _gldDrawPixels( - GLcontext *ctx, + struct gl_context *ctx, BOOL bChromakey, // Alpha test for glBitmap() images GLint x, // GL x position GLint y, // GL y position (needs flipping) @@ -1009,7 +1009,7 @@ HRESULT _gldDrawPixels( //--------------------------------------------------------------------------- void gld_DrawPixels_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -1086,7 +1086,7 @@ void gld_DrawPixels_DX7( //--------------------------------------------------------------------------- void gld_ReadPixels_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, @@ -1241,7 +1241,7 @@ gld_ReadPixels_DX7_return: //--------------------------------------------------------------------------- void gld_CopyPixels_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, @@ -1330,7 +1330,7 @@ void gld_CopyPixels_DX7( //--------------------------------------------------------------------------- void gld_Bitmap_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, @@ -1475,7 +1475,7 @@ void gld_Bitmap_DX7( //--------------------------------------------------------------------------- void _gldAllocateTexture( - GLcontext *ctx, + struct gl_context *ctx, struct gl_texture_object *tObj, struct gl_texture_image *texImage) { @@ -1533,7 +1533,7 @@ void _gldAllocateTexture( //--------------------------------------------------------------------------- const struct gl_texture_format* gld_ChooseTextureFormat_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType) @@ -1622,7 +1622,7 @@ const struct gl_texture_format* gld_ChooseTextureFormat_DX7( /* // Safer(?), slower version. void gld_TexImage2D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, @@ -1700,7 +1700,7 @@ void gld_TexImage2D_DX7( // Faster, more efficient version. // Copies subimage straight to dest texture void gld_TexImage2D_DX7( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, @@ -1792,7 +1792,7 @@ void gld_TexImage2D_DX7( //--------------------------------------------------------------------------- -void gld_TexImage1D_DX7(GLcontext *ctx, GLenum target, GLint level, +void gld_TexImage1D_DX7(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -1807,7 +1807,7 @@ void gld_TexImage1D_DX7(GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- /* -void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1883,7 +1883,7 @@ void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, // Faster, more efficient version. // Copies subimage straight to dest texture -void gld_TexSubImage2D_DX7( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage2D_DX7( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1963,7 +1963,7 @@ void gld_TexSubImage2D_DX7( GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- -void gld_TexSubImage1D_DX7( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage1D_DX7( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, @@ -1977,7 +1977,7 @@ void gld_TexSubImage1D_DX7( GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- void gld_DeleteTexture_DX7( - GLcontext *ctx, + struct gl_context *ctx, struct gl_texture_object *tObj) { GLD_context *gld = (GLD_context*)(ctx->DriverCtx); @@ -2036,7 +2036,7 @@ __inline void _gldSetAlphaOps( //--------------------------------------------------------------------------- void gldUpdateTextureUnit( - GLcontext *ctx, + struct gl_context *ctx, GLuint unit, BOOL bPassThrough) { @@ -2145,7 +2145,7 @@ void gldUpdateTextureUnit( //--------------------------------------------------------------------------- void gld_NEW_TEXTURE_DX7( - GLcontext *ctx) + struct gl_context *ctx) { // TODO: Support for three (ATI Radeon) or more (nVidia GeForce3) texture units diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_vb_d3d_render_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_vb_d3d_render_dx7.c index c39775cad32..0a1b9479ef7 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_vb_d3d_render_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_vb_d3d_render_dx7.c @@ -61,7 +61,7 @@ //--------------------------------------------------------------------------- /* __inline void _gldSetVertexShaderConstants( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx8 *gld) { D3DXMATRIX mat, matView, matProj; @@ -116,7 +116,7 @@ __inline void _gldSetVertexShaderConstants( //--------------------------------------------------------------------------- static GLboolean gld_d3d_render_stage_run( - GLcontext *ctx, + struct gl_context *ctx, struct tnl_pipeline_stage *stage) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_vb_mesa_render_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_vb_mesa_render_dx7.c index 72e5e1308cc..a8356c0a20e 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_vb_mesa_render_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_vb_mesa_render_dx7.c @@ -167,7 +167,7 @@ do { \ /* TODO: do this for all primitives, verts and elts: */ -static void clip_elt_triangles( GLcontext *ctx, +static void clip_elt_triangles( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -255,7 +255,7 @@ static void clip_elt_triangles( GLcontext *ctx, /* Helper functions for drivers */ /**********************************************************************/ /* -void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) +void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -266,7 +266,7 @@ void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) VB->Elts = tmp; } -void _tnl_RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); @@ -306,7 +306,7 @@ tnl_quad_func _gldSetupQuad[4] = { //--------------------------------------------------------------------------- static GLboolean _gld_mesa_render_stage_run( - GLcontext *ctx, + struct gl_context *ctx, struct tnl_pipeline_stage *stage) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); diff --git a/src/mesa/drivers/windows/gldirect/dx7/gld_wgl_dx7.c b/src/mesa/drivers/windows/gldirect/dx7/gld_wgl_dx7.c index fa44a952a09..0d860dbe1aa 100644 --- a/src/mesa/drivers/windows/gldirect/dx7/gld_wgl_dx7.c +++ b/src/mesa/drivers/windows/gldirect/dx7/gld_wgl_dx7.c @@ -57,8 +57,8 @@ extern int nContextError; #define DDLOG_CRITICAL_OR_WARN DDLOG_CRITICAL -extern void _gld_mesa_warning(GLcontext *, char *); -extern void _gld_mesa_fatal(GLcontext *, char *); +extern void _gld_mesa_warning(struct gl_context *, char *); +extern void _gld_mesa_fatal(struct gl_context *, char *); //--------------------------------------------------------------------------- @@ -243,7 +243,7 @@ void _gldDestroyPrimitiveBuffer( //--------------------------------------------------------------------------- HRESULT _gldCreatePrimitiveBuffer( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx7 *lpCtx, GLD_pb_dx7 *gldVB) { diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c index e2793ba557a..c4c2e0b5676 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_driver_dx8.c @@ -69,7 +69,7 @@ const float _fPersp_33 = 1.6f; //--------------------------------------------------------------------------- void _gld_mesa_warning( - __GLcontext *gc, + __struct gl_context *gc, char *str) { // Intercept Mesa's internal warning mechanism @@ -79,7 +79,7 @@ void _gld_mesa_warning( //--------------------------------------------------------------------------- void _gld_mesa_fatal( - __GLcontext *gc, + __struct gl_context *gc, char *str) { // Intercept Mesa's internal fatal-message mechanism @@ -199,7 +199,7 @@ D3DBLEND _gldConvertBlendFunc( //--------------------------------------------------------------------------- void gld_Noop_DX8( - GLcontext *ctx) + struct gl_context *ctx) { #ifdef _DEBUG gldLogMessage(GLDLOG_ERROR, "gld_Noop called!\n"); @@ -209,7 +209,7 @@ void gld_Noop_DX8( //--------------------------------------------------------------------------- void gld_Error_DX8( - GLcontext *ctx) + struct gl_context *ctx) { #ifdef _DEBUG // Quite useless. @@ -222,7 +222,7 @@ void gld_Error_DX8( //--------------------------------------------------------------------------- static GLboolean gld_set_draw_buffer_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum mode) { (void) ctx; @@ -237,7 +237,7 @@ static GLboolean gld_set_draw_buffer_DX8( //--------------------------------------------------------------------------- static void gld_set_read_buffer_DX8( - GLcontext *ctx, + struct gl_context *ctx, struct gl_framebuffer *buffer, GLenum mode) { @@ -251,7 +251,7 @@ static void gld_set_read_buffer_DX8( //--------------------------------------------------------------------------- void gld_Clear_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLbitfield mask, GLboolean all, GLint x, @@ -342,7 +342,7 @@ void gld_Clear_DX8( // Mesa 5: Parameter change static void gld_buffer_size_DX8( -// GLcontext *ctx, +// struct gl_context *ctx, struct gl_framebuffer *fb, GLuint *width, GLuint *height) @@ -356,14 +356,14 @@ static void gld_buffer_size_DX8( //--------------------------------------------------------------------------- static void gld_Finish_DX8( - GLcontext *ctx) + struct gl_context *ctx) { } //--------------------------------------------------------------------------- static void gld_Flush_DX8( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gld = GLD_GET_CONTEXT(ctx); @@ -379,7 +379,7 @@ static void gld_Flush_DX8( //--------------------------------------------------------------------------- void gld_NEW_STENCIL( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -404,7 +404,7 @@ void gld_NEW_STENCIL( //--------------------------------------------------------------------------- void gld_NEW_COLOR( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -436,7 +436,7 @@ void gld_NEW_COLOR( //--------------------------------------------------------------------------- void gld_NEW_DEPTH( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -449,7 +449,7 @@ void gld_NEW_DEPTH( //--------------------------------------------------------------------------- void gld_NEW_POLYGON( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -514,7 +514,7 @@ void gld_NEW_POLYGON( //--------------------------------------------------------------------------- void gld_NEW_FOG( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -569,7 +569,7 @@ void gld_NEW_FOG( //--------------------------------------------------------------------------- void gld_NEW_LIGHT( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -589,7 +589,7 @@ void gld_NEW_LIGHT( //--------------------------------------------------------------------------- void gld_NEW_MODELVIEW( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -621,7 +621,7 @@ void gld_NEW_MODELVIEW( //--------------------------------------------------------------------------- void gld_NEW_PROJECTION( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -700,7 +700,7 @@ void gldOrthoHook_DX8( //--------------------------------------------------------------------------- void gld_NEW_VIEWPORT( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -742,7 +742,7 @@ void gld_NEW_VIEWPORT( //--------------------------------------------------------------------------- __inline BOOL _gldAnyEvalEnabled( - GLcontext *ctx) + struct gl_context *ctx) { struct gl_eval_attrib *eval = &ctx->Eval; @@ -774,7 +774,7 @@ __inline BOOL _gldAnyEvalEnabled( //--------------------------------------------------------------------------- BOOL _gldChooseInternalPipeline( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx8 *gld) { // return TRUE; // DEBUGGING: ALWAYS USE MESA @@ -838,7 +838,7 @@ BOOL _gldChooseInternalPipeline( //--------------------------------------------------------------------------- void gld_update_state_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint new_state) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -971,7 +971,7 @@ void gld_update_state_DX8( //--------------------------------------------------------------------------- void gld_Viewport_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei w, @@ -1033,11 +1033,11 @@ void gld_Viewport_DX8( //--------------------------------------------------------------------------- -extern BOOL dglWglResizeBuffers(GLcontext *ctx, BOOL bDefaultDriver); +extern BOOL dglWglResizeBuffers(struct gl_context *ctx, BOOL bDefaultDriver); // Mesa 5: Parameter change void gldResizeBuffers_DX8( -// GLcontext *ctx) +// struct gl_context *ctx) struct gl_framebuffer *fb) { GET_CURRENT_CONTEXT(ctx); @@ -1049,7 +1049,7 @@ void gldResizeBuffers_DX8( // This is only for debugging. // To use, plug into ctx->Driver.Enable pointer below. void gld_Enable( - GLcontext *ctx, + struct gl_context *ctx, GLenum e, GLboolean b) { @@ -1062,10 +1062,10 @@ void gld_Enable( // Driver pointer setup //--------------------------------------------------------------------------- -extern const GLubyte* _gldGetStringGeneric(GLcontext*, GLenum); +extern const GLubyte* _gldGetStringGeneric(struct gl_context*, GLenum); void gldSetupDriverPointers_DX8( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h b/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h index 2446d906360..b207ecc788f 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_dx8.h @@ -256,69 +256,69 @@ typedef struct { //--------------------------------------------------------------------------- PROC gldGetProcAddress_DX8(LPCSTR a); -void gldEnableExtensions_DX8(GLcontext *ctx); -void gldInstallPipeline_DX8(GLcontext *ctx); -void gldSetupDriverPointers_DX8(GLcontext *ctx); -//void gldResizeBuffers_DX8(GLcontext *ctx); +void gldEnableExtensions_DX8(struct gl_context *ctx); +void gldInstallPipeline_DX8(struct gl_context *ctx); +void gldSetupDriverPointers_DX8(struct gl_context *ctx); +//void gldResizeBuffers_DX8(struct gl_context *ctx); void gldResizeBuffers_DX8(struct gl_framebuffer *fb); // Texture functions -void gldCopyTexImage1D_DX8(GLcontext *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -void gldCopyTexImage2D_DX8(GLcontext *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -void gldCopyTexSubImage1D_DX8(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); -void gldCopyTexSubImage2D_DX8(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); -void gldCopyTexSubImage3D_DX8(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); - -void gld_NEW_TEXTURE_DX8(GLcontext *ctx); -void gld_DrawPixels_DX8(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels); -void gld_ReadPixels_DX8(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *dest); -void gld_CopyPixels_DX8(GLcontext *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type); -void gld_Bitmap_DX8(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap); -const struct gl_texture_format* gld_ChooseTextureFormat_DX8(GLcontext *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType); -void gld_TexImage2D_DX8(GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *tObj, struct gl_texture_image *texImage); -void gld_TexImage1D_DX8(GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); -void gld_TexSubImage2D_DX8( GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); -void gld_TexSubImage1D_DX8(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void gld_DeleteTexture_DX8(GLcontext *ctx, struct gl_texture_object *tObj); -void gld_ResetLineStipple_DX8(GLcontext *ctx); +void gldCopyTexImage1D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); +void gldCopyTexImage2D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +void gldCopyTexSubImage1D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); +void gldCopyTexSubImage2D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); +void gldCopyTexSubImage3D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); + +void gld_NEW_TEXTURE_DX8(struct gl_context *ctx); +void gld_DrawPixels_DX8(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels); +void gld_ReadPixels_DX8(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *dest); +void gld_CopyPixels_DX8(struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type); +void gld_Bitmap_DX8(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap); +const struct gl_texture_format* gld_ChooseTextureFormat_DX8(struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType); +void gld_TexImage2D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *tObj, struct gl_texture_image *texImage); +void gld_TexImage1D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); +void gld_TexSubImage2D_DX8( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); +void gld_TexSubImage1D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); +void gld_DeleteTexture_DX8(struct gl_context *ctx, struct gl_texture_object *tObj); +void gld_ResetLineStipple_DX8(struct gl_context *ctx); // 2D primitive functions -void gld_Points2D_DX8(GLcontext *ctx, GLuint first, GLuint last); +void gld_Points2D_DX8(struct gl_context *ctx, GLuint first, GLuint last); -void gld_Line2DFlat_DX8(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Line2DSmooth_DX8(GLcontext *ctx, GLuint v0, GLuint v1); +void gld_Line2DFlat_DX8(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Line2DSmooth_DX8(struct gl_context *ctx, GLuint v0, GLuint v1); -void gld_Triangle2DFlat_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmooth_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DFlatExtras_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmoothExtras_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DFlat_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmooth_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DFlatExtras_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmoothExtras_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad2DFlat_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmooth_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DFlatExtras_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmoothExtras_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DFlat_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmooth_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DFlatExtras_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmoothExtras_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); // 3D primitive functions -void gld_Points3D_DX8(GLcontext *ctx, GLuint first, GLuint last); -void gld_Line3DFlat_DX8(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle3DFlat_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad3DFlat_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Line3DSmooth_DX8(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle3DSmooth_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad3DSmooth_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Points3D_DX8(struct gl_context *ctx, GLuint first, GLuint last); +void gld_Line3DFlat_DX8(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle3DFlat_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad3DFlat_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Line3DSmooth_DX8(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle3DSmooth_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad3DSmooth_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); // Primitive functions for Two-sided-lighting Vertex Shader -void gld_Points2DTwoside_DX8(GLcontext *ctx, GLuint first, GLuint last); -void gld_Line2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Line2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Points2DTwoside_DX8(struct gl_context *ctx, GLuint first, GLuint last); +void gld_Line2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Line2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); #endif diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_ext_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_ext_dx8.c index b51bba9b3ca..92189458054 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_ext_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_ext_dx8.c @@ -69,7 +69,7 @@ #include "extensions.h" // For some reason this is not defined in an above header... -extern void _mesa_enable_imaging_extensions(GLcontext *ctx); +extern void _mesa_enable_imaging_extensions(struct gl_context *ctx); //--------------------------------------------------------------------------- // Hack for the SGIS_multitexture extension that was removed from Mesa @@ -281,7 +281,7 @@ PROC gldGetProcAddress_DX( //--------------------------------------------------------------------------- void gldEnableExtensions_DX8( - GLcontext *ctx) + struct gl_context *ctx) { GLuint i; diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_pipeline_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_pipeline_dx8.c index 2baea57443c..9113d703454 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_pipeline_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_pipeline_dx8.c @@ -65,7 +65,7 @@ static const struct tnl_pipeline_stage *gld_pipeline[] = { //--------------------------------------------------------------------------- void gldInstallPipeline_DX8( - GLcontext *ctx) + struct gl_context *ctx) { // Remove any existing pipeline stages, // then install GLDirect pipeline stages. diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_primitive_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_primitive_dx8.c index 990922580aa..5b9dac09c6d 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_primitive_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_primitive_dx8.c @@ -277,7 +277,7 @@ //--------------------------------------------------------------------------- __inline DWORD _gldComputeFog( - GLcontext *ctx, + struct gl_context *ctx, SWvertex *swv) { // Full fog calculation. @@ -300,7 +300,7 @@ __inline DWORD _gldComputeFog( //--------------------------------------------------------------------------- void gld_ResetLineStipple_DX8( - GLcontext *ctx) + struct gl_context *ctx) { // TODO: Fake stipple with a 32x32 texture. } @@ -310,7 +310,7 @@ void gld_ResetLineStipple_DX8( //--------------------------------------------------------------------------- void gld_Points2D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint first, GLuint last) { @@ -357,7 +357,7 @@ void gld_Points2D_DX8( //--------------------------------------------------------------------------- void gld_Line2DFlat_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -390,7 +390,7 @@ void gld_Line2DFlat_DX8( //--------------------------------------------------------------------------- void gld_Line2DSmooth_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -421,7 +421,7 @@ void gld_Line2DSmooth_DX8( //--------------------------------------------------------------------------- void gld_Triangle2DFlat_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -460,7 +460,7 @@ void gld_Triangle2DFlat_DX8( //--------------------------------------------------------------------------- void gld_Triangle2DSmooth_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -499,7 +499,7 @@ void gld_Triangle2DSmooth_DX8( //--------------------------------------------------------------------------- void gld_Triangle2DFlatExtras_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -548,7 +548,7 @@ void gld_Triangle2DFlatExtras_DX8( //--------------------------------------------------------------------------- void gld_Triangle2DSmoothExtras_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -588,7 +588,7 @@ void gld_Triangle2DSmoothExtras_DX8( //--------------------------------------------------------------------------- void gld_Quad2DFlat_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -652,7 +652,7 @@ void gld_Quad2DFlat_DX8( //--------------------------------------------------------------------------- void gld_Quad2DSmooth_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -715,7 +715,7 @@ void gld_Quad2DSmooth_DX8( //--------------------------------------------------------------------------- void gld_Quad2DFlatExtras_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -792,7 +792,7 @@ void gld_Quad2DFlatExtras_DX8( //--------------------------------------------------------------------------- void gld_Quad2DSmoothExtras_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -859,7 +859,7 @@ void gld_Quad2DSmoothExtras_DX8( //--------------------------------------------------------------------------- void gld_Points3D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint first, GLuint last) { @@ -911,7 +911,7 @@ void gld_Points3D_DX8( //--------------------------------------------------------------------------- void gld_Line3DFlat_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -937,7 +937,7 @@ void gld_Line3DFlat_DX8( //--------------------------------------------------------------------------- void gld_Line3DSmooth_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -964,7 +964,7 @@ void gld_Line3DSmooth_DX8( //--------------------------------------------------------------------------- void gld_Triangle3DFlat_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -997,7 +997,7 @@ void gld_Triangle3DFlat_DX8( //--------------------------------------------------------------------------- void gld_Triangle3DSmooth_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -1031,7 +1031,7 @@ void gld_Triangle3DSmooth_DX8( //--------------------------------------------------------------------------- void gld_Quad3DFlat_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -1083,7 +1083,7 @@ void gld_Quad3DFlat_DX8( //--------------------------------------------------------------------------- void gld_Quad3DSmooth_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -1137,34 +1137,34 @@ void gld_Quad3DSmooth_DX8( /* -void gld_Points2DTwoside_DX8(GLcontext *ctx, GLuint first, GLuint last) +void gld_Points2DTwoside_DX8(struct gl_context *ctx, GLuint first, GLuint last) { // NOTE: Two-sided lighting does not apply to Points } //--------------------------------------------------------------------------- -void gld_Line2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1) +void gld_Line2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1) { // NOTE: Two-sided lighting does not apply to Lines } //--------------------------------------------------------------------------- -void gld_Line2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1) +void gld_Line2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1) { // NOTE: Two-sided lighting does not apply to Lines } //--------------------------------------------------------------------------- -void gld_Triangle2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2) +void gld_Triangle2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) { } //--------------------------------------------------------------------------- -void gld_Triangle2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2) +void gld_Triangle2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -1229,7 +1229,7 @@ void gld_Triangle2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuin //--------------------------------------------------------------------------- -void gld_Quad2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +void gld_Quad2DFlatTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); @@ -1336,7 +1336,7 @@ void gld_Quad2DFlatTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, //--------------------------------------------------------------------------- -void gld_Quad2DSmoothTwoside_DX8(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +void gld_Quad2DSmoothTwoside_DX8(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx8 *gld = GLD_GET_DX8_DRIVER(gldCtx); diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_texture_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_texture_dx8.c index f24b3cfb74d..6ea670a88a0 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_texture_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_texture_dx8.c @@ -760,7 +760,7 @@ const struct gl_texture_format* _gldMesaFormatForD3DFormat( //--------------------------------------------------------------------------- void gldCopyTexImage1D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, @@ -772,7 +772,7 @@ void gldCopyTexImage1D_DX8( //--------------------------------------------------------------------------- void gldCopyTexImage2D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, @@ -788,7 +788,7 @@ void gldCopyTexImage2D_DX8( //--------------------------------------------------------------------------- void gldCopyTexSubImage1D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) { @@ -798,7 +798,7 @@ void gldCopyTexSubImage1D_DX8( //--------------------------------------------------------------------------- void gldCopyTexSubImage2D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -814,7 +814,7 @@ void gldCopyTexSubImage2D_DX8( //--------------------------------------------------------------------------- void gldCopyTexSubImage3D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -846,7 +846,7 @@ typedef struct { //--------------------------------------------------------------------------- HRESULT _gldDrawPixels( - GLcontext *ctx, + struct gl_context *ctx, BOOL bChromakey, // Alpha test for glBitmap() images GLint x, // GL x position GLint y, // GL y position (needs flipping) @@ -982,7 +982,7 @@ HRESULT _gldDrawPixels( //--------------------------------------------------------------------------- void gld_DrawPixels_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -1045,7 +1045,7 @@ void gld_DrawPixels_DX8( //--------------------------------------------------------------------------- void gld_ReadPixels_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, @@ -1198,7 +1198,7 @@ gld_ReadPixels_DX8_return: //--------------------------------------------------------------------------- void gld_CopyPixels_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, @@ -1284,7 +1284,7 @@ void gld_CopyPixels_DX8( //--------------------------------------------------------------------------- void gld_Bitmap_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, @@ -1389,7 +1389,7 @@ void gld_Bitmap_DX8( //--------------------------------------------------------------------------- void _gldAllocateTexture( - GLcontext *ctx, + struct gl_context *ctx, struct gl_texture_object *tObj, struct gl_texture_image *texImage) { @@ -1435,7 +1435,7 @@ void _gldAllocateTexture( //--------------------------------------------------------------------------- const struct gl_texture_format* gld_ChooseTextureFormat_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType) @@ -1524,7 +1524,7 @@ const struct gl_texture_format* gld_ChooseTextureFormat_DX8( /* // Safer(?), slower version. void gld_TexImage2D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, @@ -1602,7 +1602,7 @@ void gld_TexImage2D_DX8( // Faster, more efficient version. // Copies subimage straight to dest texture void gld_TexImage2D_DX8( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, @@ -1676,7 +1676,7 @@ void gld_TexImage2D_DX8( //--------------------------------------------------------------------------- -void gld_TexImage1D_DX8(GLcontext *ctx, GLenum target, GLint level, +void gld_TexImage1D_DX8(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -1691,7 +1691,7 @@ void gld_TexImage1D_DX8(GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- /* -void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1767,7 +1767,7 @@ void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, // Faster, more efficient version. // Copies subimage straight to dest texture -void gld_TexSubImage2D_DX8( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage2D_DX8( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1828,7 +1828,7 @@ void gld_TexSubImage2D_DX8( GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- -void gld_TexSubImage1D_DX8( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage1D_DX8( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, @@ -1842,7 +1842,7 @@ void gld_TexSubImage1D_DX8( GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- void gld_DeleteTexture_DX8( - GLcontext *ctx, + struct gl_context *ctx, struct gl_texture_object *tObj) { GLD_context *gld = (GLD_context*)(ctx->DriverCtx); @@ -1894,7 +1894,7 @@ __inline void _gldSetAlphaOps( //--------------------------------------------------------------------------- void gldUpdateTextureUnit( - GLcontext *ctx, + struct gl_context *ctx, GLuint unit, BOOL bPassThrough) { @@ -1994,7 +1994,7 @@ void gldUpdateTextureUnit( //--------------------------------------------------------------------------- void gld_NEW_TEXTURE_DX8( - GLcontext *ctx) + struct gl_context *ctx) { // TODO: Support for three (ATI Radeon) or more (nVidia GeForce3) texture units diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_vb_d3d_render_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_vb_d3d_render_dx8.c index 265c81fb4a4..983df9bc097 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_vb_d3d_render_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_vb_d3d_render_dx8.c @@ -61,7 +61,7 @@ //--------------------------------------------------------------------------- __inline void _gldSetVertexShaderConstants( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx8 *gld) { D3DXMATRIX mat, matView, matProj; @@ -116,7 +116,7 @@ __inline void _gldSetVertexShaderConstants( //--------------------------------------------------------------------------- static GLboolean gld_d3d_render_stage_run( - GLcontext *ctx, + struct gl_context *ctx, struct tnl_pipeline_stage *stage) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_vb_mesa_render_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_vb_mesa_render_dx8.c index 9ab562010ce..19ffc72c814 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_vb_mesa_render_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_vb_mesa_render_dx8.c @@ -167,7 +167,7 @@ do { \ /* TODO: do this for all primitives, verts and elts: */ -static void clip_elt_triangles( GLcontext *ctx, +static void clip_elt_triangles( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -255,7 +255,7 @@ static void clip_elt_triangles( GLcontext *ctx, /* Helper functions for drivers */ /**********************************************************************/ /* -void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) +void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -266,7 +266,7 @@ void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) VB->Elts = tmp; } -void _tnl_RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); @@ -306,7 +306,7 @@ tnl_quad_func _gldSetupQuad[4] = { //--------------------------------------------------------------------------- static GLboolean _gld_mesa_render_stage_run( - GLcontext *ctx, + struct gl_context *ctx, struct tnl_pipeline_stage *stage) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); diff --git a/src/mesa/drivers/windows/gldirect/dx8/gld_wgl_dx8.c b/src/mesa/drivers/windows/gldirect/dx8/gld_wgl_dx8.c index 011d810e975..73c76c7d4bf 100644 --- a/src/mesa/drivers/windows/gldirect/dx8/gld_wgl_dx8.c +++ b/src/mesa/drivers/windows/gldirect/dx8/gld_wgl_dx8.c @@ -54,8 +54,8 @@ extern int nContextError; #define DDLOG_CRITICAL_OR_WARN DDLOG_CRITICAL -extern void _gld_mesa_warning(GLcontext *, char *); -extern void _gld_mesa_fatal(GLcontext *, char *); +extern void _gld_mesa_warning(struct gl_context *, char *); +extern void _gld_mesa_fatal(struct gl_context *, char *); //--------------------------------------------------------------------------- @@ -233,7 +233,7 @@ void _gldDestroyPrimitiveBuffer( //--------------------------------------------------------------------------- HRESULT _gldCreatePrimitiveBuffer( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx8 *lpCtx, GLD_pb_dx8 *gldVB) { diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c index 0186b268324..aab70852016 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c @@ -69,7 +69,7 @@ const float _fPersp_33 = 1.6f; //--------------------------------------------------------------------------- void _gld_mesa_warning( - __GLcontext *gc, + __struct gl_context *gc, char *str) { // Intercept Mesa's internal warning mechanism @@ -79,7 +79,7 @@ void _gld_mesa_warning( //--------------------------------------------------------------------------- void _gld_mesa_fatal( - __GLcontext *gc, + __struct gl_context *gc, char *str) { // Intercept Mesa's internal fatal-message mechanism @@ -199,7 +199,7 @@ D3DBLEND _gldConvertBlendFunc( //--------------------------------------------------------------------------- void gld_Noop_DX9( - GLcontext *ctx) + struct gl_context *ctx) { #ifdef _DEBUG gldLogMessage(GLDLOG_ERROR, "gld_Noop called!\n"); @@ -209,7 +209,7 @@ void gld_Noop_DX9( //--------------------------------------------------------------------------- void gld_Error_DX9( - GLcontext *ctx) + struct gl_context *ctx) { #ifdef _DEBUG // Quite useless. @@ -222,7 +222,7 @@ void gld_Error_DX9( //--------------------------------------------------------------------------- static GLboolean gld_set_draw_buffer_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum mode) { (void) ctx; @@ -237,7 +237,7 @@ static GLboolean gld_set_draw_buffer_DX9( //--------------------------------------------------------------------------- static void gld_set_read_buffer_DX9( - GLcontext *ctx, + struct gl_context *ctx, struct gl_framebuffer *buffer, GLenum mode) { @@ -251,7 +251,7 @@ static void gld_set_read_buffer_DX9( //--------------------------------------------------------------------------- void gld_Clear_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLbitfield mask, GLboolean all, GLint x, @@ -340,7 +340,7 @@ void gld_Clear_DX9( // Mesa 5: Parameter change static void gld_buffer_size_DX9( -// GLcontext *ctx, +// struct gl_context *ctx, struct gl_framebuffer *fb, GLuint *width, GLuint *height) @@ -354,14 +354,14 @@ static void gld_buffer_size_DX9( //--------------------------------------------------------------------------- static void gld_Finish_DX9( - GLcontext *ctx) + struct gl_context *ctx) { } //--------------------------------------------------------------------------- static void gld_Flush_DX9( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gld = GLD_GET_CONTEXT(ctx); @@ -377,7 +377,7 @@ static void gld_Flush_DX9( //--------------------------------------------------------------------------- void gld_NEW_STENCIL( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -402,7 +402,7 @@ void gld_NEW_STENCIL( //--------------------------------------------------------------------------- void gld_NEW_COLOR( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -434,7 +434,7 @@ void gld_NEW_COLOR( //--------------------------------------------------------------------------- void gld_NEW_DEPTH( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -447,7 +447,7 @@ void gld_NEW_DEPTH( //--------------------------------------------------------------------------- void gld_NEW_POLYGON( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -513,7 +513,7 @@ void gld_NEW_POLYGON( //--------------------------------------------------------------------------- void gld_NEW_FOG( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -568,7 +568,7 @@ void gld_NEW_FOG( //--------------------------------------------------------------------------- void gld_NEW_LIGHT( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -588,7 +588,7 @@ void gld_NEW_LIGHT( //--------------------------------------------------------------------------- void gld_NEW_MODELVIEW( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -620,7 +620,7 @@ void gld_NEW_MODELVIEW( //--------------------------------------------------------------------------- void gld_NEW_PROJECTION( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -699,7 +699,7 @@ void gldOrthoHook_DX9( //--------------------------------------------------------------------------- void gld_NEW_VIEWPORT( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -741,7 +741,7 @@ void gld_NEW_VIEWPORT( //--------------------------------------------------------------------------- void gld_NEW_SCISSOR( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -768,7 +768,7 @@ void gld_NEW_SCISSOR( //--------------------------------------------------------------------------- __inline BOOL _gldAnyEvalEnabled( - GLcontext *ctx) + struct gl_context *ctx) { struct gl_eval_attrib *eval = &ctx->Eval; @@ -800,7 +800,7 @@ __inline BOOL _gldAnyEvalEnabled( //--------------------------------------------------------------------------- BOOL _gldChooseInternalPipeline( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx9 *gld) { // return TRUE; // DEBUGGING: ALWAYS USE MESA @@ -864,7 +864,7 @@ BOOL _gldChooseInternalPipeline( //--------------------------------------------------------------------------- void gld_update_state_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint new_state) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -1001,7 +1001,7 @@ void gld_update_state_DX9( //--------------------------------------------------------------------------- void gld_Viewport_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei w, @@ -1063,11 +1063,11 @@ void gld_Viewport_DX9( //--------------------------------------------------------------------------- -extern BOOL dglWglResizeBuffers(GLcontext *ctx, BOOL bDefaultDriver); +extern BOOL dglWglResizeBuffers(struct gl_context *ctx, BOOL bDefaultDriver); // Mesa 5: Parameter change void gldResizeBuffers_DX9( -// GLcontext *ctx) +// struct gl_context *ctx) struct gl_framebuffer *fb) { GET_CURRENT_CONTEXT(ctx); @@ -1079,7 +1079,7 @@ void gldResizeBuffers_DX9( // This is only for debugging. // To use, plug into ctx->Driver.Enable pointer below. void gld_Enable( - GLcontext *ctx, + struct gl_context *ctx, GLenum e, GLboolean b) { @@ -1092,10 +1092,10 @@ void gld_Enable( // Driver pointer setup //--------------------------------------------------------------------------- -extern const GLubyte* _gldGetStringGeneric(GLcontext*, GLenum); +extern const GLubyte* _gldGetStringGeneric(struct gl_context*, GLenum); void gldSetupDriverPointers_DX9( - GLcontext *ctx) + struct gl_context *ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h b/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h index 201595f7247..67601da7fb6 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h @@ -259,69 +259,69 @@ typedef struct { //--------------------------------------------------------------------------- PROC gldGetProcAddress_DX9(LPCSTR a); -void gldEnableExtensions_DX9(GLcontext *ctx); -void gldInstallPipeline_DX9(GLcontext *ctx); -void gldSetupDriverPointers_DX9(GLcontext *ctx); -//void gldResizeBuffers_DX9(GLcontext *ctx); +void gldEnableExtensions_DX9(struct gl_context *ctx); +void gldInstallPipeline_DX9(struct gl_context *ctx); +void gldSetupDriverPointers_DX9(struct gl_context *ctx); +//void gldResizeBuffers_DX9(struct gl_context *ctx); void gldResizeBuffers_DX9(struct gl_framebuffer *fb); // Texture functions -void gldCopyTexImage1D_DX9(GLcontext *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -void gldCopyTexImage2D_DX9(GLcontext *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -void gldCopyTexSubImage1D_DX9(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); -void gldCopyTexSubImage2D_DX9(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); -void gldCopyTexSubImage3D_DX9(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); - -void gld_NEW_TEXTURE_DX9(GLcontext *ctx); -void gld_DrawPixels_DX9(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels); -void gld_ReadPixels_DX9(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *dest); -void gld_CopyPixels_DX9(GLcontext *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type); -void gld_Bitmap_DX9(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap); -const struct gl_texture_format* gld_ChooseTextureFormat_DX9(GLcontext *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType); -void gld_TexImage2D_DX9(GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *tObj, struct gl_texture_image *texImage); -void gld_TexImage1D_DX9(GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); -void gld_TexSubImage2D_DX9( GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); -void gld_TexSubImage1D_DX9(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); -void gld_DeleteTexture_DX9(GLcontext *ctx, struct gl_texture_object *tObj); -void gld_ResetLineStipple_DX9(GLcontext *ctx); +void gldCopyTexImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); +void gldCopyTexImage2D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +void gldCopyTexSubImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); +void gldCopyTexSubImage2D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); +void gldCopyTexSubImage3D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); + +void gld_NEW_TEXTURE_DX9(struct gl_context *ctx); +void gld_DrawPixels_DX9(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels); +void gld_ReadPixels_DX9(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *dest); +void gld_CopyPixels_DX9(struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type); +void gld_Bitmap_DX9(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap); +const struct gl_texture_format* gld_ChooseTextureFormat_DX9(struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType); +void gld_TexImage2D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *tObj, struct gl_texture_image *texImage); +void gld_TexImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); +void gld_TexSubImage2D_DX9( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); +void gld_TexSubImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage); +void gld_DeleteTexture_DX9(struct gl_context *ctx, struct gl_texture_object *tObj); +void gld_ResetLineStipple_DX9(struct gl_context *ctx); // 2D primitive functions -void gld_Points2D_DX9(GLcontext *ctx, GLuint first, GLuint last); +void gld_Points2D_DX9(struct gl_context *ctx, GLuint first, GLuint last); -void gld_Line2DFlat_DX9(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Line2DSmooth_DX9(GLcontext *ctx, GLuint v0, GLuint v1); +void gld_Line2DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Line2DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1); -void gld_Triangle2DFlat_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmooth_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DFlatExtras_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmoothExtras_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DFlatExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmoothExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad2DFlat_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmooth_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DFlatExtras_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmoothExtras_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DFlatExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmoothExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); // 3D primitive functions -void gld_Points3D_DX9(GLcontext *ctx, GLuint first, GLuint last); -void gld_Line3DFlat_DX9(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle3DFlat_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad3DFlat_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Line3DSmooth_DX9(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle3DSmooth_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad3DSmooth_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Points3D_DX9(struct gl_context *ctx, GLuint first, GLuint last); +void gld_Line3DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle3DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad3DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Line3DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle3DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad3DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); // Primitive functions for Two-sided-lighting Vertex Shader -void gld_Points2DTwoside_DX9(GLcontext *ctx, GLuint first, GLuint last); -void gld_Line2DFlatTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Line2DSmoothTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1); -void gld_Triangle2DFlatTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Triangle2DSmoothTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2); -void gld_Quad2DFlatTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -void gld_Quad2DSmoothTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Points2DTwoside_DX9(struct gl_context *ctx, GLuint first, GLuint last); +void gld_Line2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Line2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1); +void gld_Triangle2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Triangle2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2); +void gld_Quad2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void gld_Quad2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3); #endif diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c index e8c73a6ff80..667c59c4917 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c @@ -69,7 +69,7 @@ #include "extensions.h" // For some reason this is not defined in an above header... -extern void _mesa_enable_imaging_extensions(GLcontext *ctx); +extern void _mesa_enable_imaging_extensions(struct gl_context *ctx); //--------------------------------------------------------------------------- // Hack for the SGIS_multitexture extension that was removed from Mesa @@ -281,7 +281,7 @@ PROC gldGetProcAddress_DX( //--------------------------------------------------------------------------- void gldEnableExtensions_DX9( - GLcontext *ctx) + struct gl_context *ctx) { GLuint i; diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c index 2b272aa6281..f9abbdbdfed 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c @@ -65,7 +65,7 @@ static const struct tnl_pipeline_stage *gld_pipeline[] = { //--------------------------------------------------------------------------- void gldInstallPipeline_DX9( - GLcontext *ctx) + struct gl_context *ctx) { // Remove any existing pipeline stages, // then install GLDirect pipeline stages. diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c index fd4dd4ed751..99edd26e9d2 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c @@ -277,7 +277,7 @@ //--------------------------------------------------------------------------- __inline DWORD _gldComputeFog( - GLcontext *ctx, + struct gl_context *ctx, SWvertex *swv) { // Full fog calculation. @@ -300,7 +300,7 @@ __inline DWORD _gldComputeFog( //--------------------------------------------------------------------------- void gld_ResetLineStipple_DX9( - GLcontext *ctx) + struct gl_context *ctx) { // TODO: Fake stipple with a 32x32 texture. } @@ -310,7 +310,7 @@ void gld_ResetLineStipple_DX9( //--------------------------------------------------------------------------- void gld_Points2D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint first, GLuint last) { @@ -357,7 +357,7 @@ void gld_Points2D_DX9( //--------------------------------------------------------------------------- void gld_Line2DFlat_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -390,7 +390,7 @@ void gld_Line2DFlat_DX9( //--------------------------------------------------------------------------- void gld_Line2DSmooth_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -421,7 +421,7 @@ void gld_Line2DSmooth_DX9( //--------------------------------------------------------------------------- void gld_Triangle2DFlat_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -460,7 +460,7 @@ void gld_Triangle2DFlat_DX9( //--------------------------------------------------------------------------- void gld_Triangle2DSmooth_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -499,7 +499,7 @@ void gld_Triangle2DSmooth_DX9( //--------------------------------------------------------------------------- void gld_Triangle2DFlatExtras_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -548,7 +548,7 @@ void gld_Triangle2DFlatExtras_DX9( //--------------------------------------------------------------------------- void gld_Triangle2DSmoothExtras_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -588,7 +588,7 @@ void gld_Triangle2DSmoothExtras_DX9( //--------------------------------------------------------------------------- void gld_Quad2DFlat_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -652,7 +652,7 @@ void gld_Quad2DFlat_DX9( //--------------------------------------------------------------------------- void gld_Quad2DSmooth_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -715,7 +715,7 @@ void gld_Quad2DSmooth_DX9( //--------------------------------------------------------------------------- void gld_Quad2DFlatExtras_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -792,7 +792,7 @@ void gld_Quad2DFlatExtras_DX9( //--------------------------------------------------------------------------- void gld_Quad2DSmoothExtras_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -859,7 +859,7 @@ void gld_Quad2DSmoothExtras_DX9( //--------------------------------------------------------------------------- void gld_Points3D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint first, GLuint last) { @@ -911,7 +911,7 @@ void gld_Points3D_DX9( //--------------------------------------------------------------------------- void gld_Line3DFlat_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -937,7 +937,7 @@ void gld_Line3DFlat_DX9( //--------------------------------------------------------------------------- void gld_Line3DSmooth_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1) { @@ -964,7 +964,7 @@ void gld_Line3DSmooth_DX9( //--------------------------------------------------------------------------- void gld_Triangle3DFlat_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -997,7 +997,7 @@ void gld_Triangle3DFlat_DX9( //--------------------------------------------------------------------------- void gld_Triangle3DSmooth_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) @@ -1031,7 +1031,7 @@ void gld_Triangle3DSmooth_DX9( //--------------------------------------------------------------------------- void gld_Quad3DFlat_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -1083,7 +1083,7 @@ void gld_Quad3DFlat_DX9( //--------------------------------------------------------------------------- void gld_Quad3DSmooth_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, @@ -1137,34 +1137,34 @@ void gld_Quad3DSmooth_DX9( /* -void gld_Points2DTwoside_DX9(GLcontext *ctx, GLuint first, GLuint last) +void gld_Points2DTwoside_DX9(struct gl_context *ctx, GLuint first, GLuint last) { // NOTE: Two-sided lighting does not apply to Points } //--------------------------------------------------------------------------- -void gld_Line2DFlatTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1) +void gld_Line2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1) { // NOTE: Two-sided lighting does not apply to Lines } //--------------------------------------------------------------------------- -void gld_Line2DSmoothTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1) +void gld_Line2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1) { // NOTE: Two-sided lighting does not apply to Lines } //--------------------------------------------------------------------------- -void gld_Triangle2DFlatTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2) +void gld_Triangle2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) { } //--------------------------------------------------------------------------- -void gld_Triangle2DSmoothTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2) +void gld_Triangle2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -1229,7 +1229,7 @@ void gld_Triangle2DSmoothTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuin //--------------------------------------------------------------------------- -void gld_Quad2DFlatTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +void gld_Quad2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); @@ -1336,7 +1336,7 @@ void gld_Quad2DFlatTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, //--------------------------------------------------------------------------- -void gld_Quad2DSmoothTwoside_DX9(GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +void gld_Quad2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c index 5a822356164..bd7a64f57f6 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c @@ -760,7 +760,7 @@ const struct gl_texture_format* _gldMesaFormatForD3DFormat( //--------------------------------------------------------------------------- void gldCopyTexImage1D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, @@ -772,7 +772,7 @@ void gldCopyTexImage1D_DX9( //--------------------------------------------------------------------------- void gldCopyTexImage2D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, @@ -788,7 +788,7 @@ void gldCopyTexImage2D_DX9( //--------------------------------------------------------------------------- void gldCopyTexSubImage1D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) { @@ -798,7 +798,7 @@ void gldCopyTexSubImage1D_DX9( //--------------------------------------------------------------------------- void gldCopyTexSubImage2D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -814,7 +814,7 @@ void gldCopyTexSubImage2D_DX9( //--------------------------------------------------------------------------- void gldCopyTexSubImage3D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, @@ -846,7 +846,7 @@ typedef struct { //--------------------------------------------------------------------------- HRESULT _gldDrawPixels( - GLcontext *ctx, + struct gl_context *ctx, BOOL bChromakey, // Alpha test for glBitmap() images GLint x, // GL x position GLint y, // GL y position (needs flipping) @@ -991,7 +991,7 @@ HRESULT _gldDrawPixels( //--------------------------------------------------------------------------- void gld_DrawPixels_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -1060,7 +1060,7 @@ void gld_DrawPixels_DX9( //--------------------------------------------------------------------------- void gld_ReadPixels_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, @@ -1230,7 +1230,7 @@ gld_ReadPixels_DX9_return: //--------------------------------------------------------------------------- void gld_CopyPixels_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, @@ -1329,7 +1329,7 @@ void gld_CopyPixels_DX9( //--------------------------------------------------------------------------- void gld_Bitmap_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei width, @@ -1440,7 +1440,7 @@ void gld_Bitmap_DX9( //--------------------------------------------------------------------------- void _gldAllocateTexture( - GLcontext *ctx, + struct gl_context *ctx, struct gl_texture_object *tObj, struct gl_texture_image *texImage) { @@ -1486,7 +1486,7 @@ void _gldAllocateTexture( //--------------------------------------------------------------------------- const struct gl_texture_format* gld_ChooseTextureFormat_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType) @@ -1575,7 +1575,7 @@ const struct gl_texture_format* gld_ChooseTextureFormat_DX9( /* // Safer(?), slower version. void gld_TexImage2D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, @@ -1653,7 +1653,7 @@ void gld_TexImage2D_DX9( // Faster, more efficient version. // Copies subimage straight to dest texture void gld_TexImage2D_DX9( - GLcontext *ctx, + struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, @@ -1727,7 +1727,7 @@ void gld_TexImage2D_DX9( //--------------------------------------------------------------------------- -void gld_TexImage1D_DX9(GLcontext *ctx, GLenum target, GLint level, +void gld_TexImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -1742,7 +1742,7 @@ void gld_TexImage1D_DX9(GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- /* -void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage2D( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1818,7 +1818,7 @@ void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, // Faster, more efficient version. // Copies subimage straight to dest texture -void gld_TexSubImage2D_DX9( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage2D_DX9( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -1879,7 +1879,7 @@ void gld_TexSubImage2D_DX9( GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- -void gld_TexSubImage1D_DX9( GLcontext *ctx, GLenum target, GLint level, +void gld_TexSubImage1D_DX9( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, @@ -1893,7 +1893,7 @@ void gld_TexSubImage1D_DX9( GLcontext *ctx, GLenum target, GLint level, //--------------------------------------------------------------------------- void gld_DeleteTexture_DX9( - GLcontext *ctx, + struct gl_context *ctx, struct gl_texture_object *tObj) { GLD_context *gld = (GLD_context*)(ctx->DriverCtx); @@ -1945,7 +1945,7 @@ __inline void _gldSetAlphaOps( //--------------------------------------------------------------------------- void gldUpdateTextureUnit( - GLcontext *ctx, + struct gl_context *ctx, GLuint unit, BOOL bPassThrough) { @@ -2050,7 +2050,7 @@ void gldUpdateTextureUnit( //--------------------------------------------------------------------------- void gld_NEW_TEXTURE_DX9( - GLcontext *ctx) + struct gl_context *ctx) { // TODO: Support for three (ATI Radeon) or more (nVidia GeForce3) texture units diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c index 91a68b3f2d9..5f818d9f960 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c @@ -61,7 +61,7 @@ //--------------------------------------------------------------------------- __inline void _gldSetVertexShaderConstants( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx9 *gld) { D3DXMATRIX mat, matView, matProj; @@ -116,7 +116,7 @@ __inline void _gldSetVertexShaderConstants( //--------------------------------------------------------------------------- static GLboolean gld_d3d_render_stage_run( - GLcontext *ctx, + struct gl_context *ctx, struct tnl_pipeline_stage *stage) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -237,7 +237,7 @@ static GLboolean gld_d3d_render_stage_run( //--------------------------------------------------------------------------- static void gld_d3d_render_stage_check( - GLcontext *ctx, + struct gl_context *ctx, struct tnl_pipeline_stage *stage) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c index 64acab2d2a8..b5e005b25b0 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c @@ -162,7 +162,7 @@ do { \ /* TODO: do this for all primitives, verts and elts: */ -static void clip_elt_triangles( GLcontext *ctx, +static void clip_elt_triangles( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -250,7 +250,7 @@ static void clip_elt_triangles( GLcontext *ctx, /* Helper functions for drivers */ /**********************************************************************/ /* -void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) +void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -261,7 +261,7 @@ void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) VB->Elts = tmp; } -void _tnl_RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); @@ -301,7 +301,7 @@ tnl_quad_func _gldSetupQuad[4] = { //--------------------------------------------------------------------------- static GLboolean _gld_mesa_render_stage_run( - GLcontext *ctx, + struct gl_context *ctx, struct tnl_pipeline_stage *stage) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); diff --git a/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c b/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c index a03b865bb44..6cf46fb7a81 100644 --- a/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c +++ b/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c @@ -54,8 +54,8 @@ extern int nContextError; #define DDLOG_CRITICAL_OR_WARN DDLOG_CRITICAL -extern void _gld_mesa_warning(GLcontext *, char *); -extern void _gld_mesa_fatal(GLcontext *, char *); +extern void _gld_mesa_warning(struct gl_context *, char *); +extern void _gld_mesa_fatal(struct gl_context *, char *); //--------------------------------------------------------------------------- @@ -246,7 +246,7 @@ void _gldDestroyPrimitiveBuffer( //--------------------------------------------------------------------------- HRESULT _gldCreatePrimitiveBuffer( - GLcontext *ctx, + struct gl_context *ctx, GLD_driver_dx9 *lpCtx, GLD_pb_dx9 *gldVB) { diff --git a/src/mesa/drivers/windows/gldirect/gld_driver.c b/src/mesa/drivers/windows/gldirect/gld_driver.c index f7c575614b4..aa7bc27c99a 100644 --- a/src/mesa/drivers/windows/gldirect/gld_driver.c +++ b/src/mesa/drivers/windows/gldirect/gld_driver.c @@ -193,7 +193,7 @@ static BOOL _GetDisplayMode_ERROR( //--------------------------------------------------------------------------- const GLubyte* _gldGetStringGeneric( - GLcontext *ctx, + struct gl_context *ctx, GLenum name) { if (!ctx) diff --git a/src/mesa/drivers/windows/gldirect/gld_driver.h b/src/mesa/drivers/windows/gldirect/gld_driver.h index 01a46a8325f..7c393bc4c7e 100644 --- a/src/mesa/drivers/windows/gldirect/gld_driver.h +++ b/src/mesa/drivers/windows/gldirect/gld_driver.h @@ -83,7 +83,7 @@ typedef struct { extern GLD_driver _gldDriver; BOOL gldInitDriverPointers(DWORD dwDriver); -const GLubyte* _gldGetStringGeneric(GLcontext *ctx, GLenum name); +const GLubyte* _gldGetStringGeneric(struct gl_context *ctx, GLenum name); #endif // _USE_GLD3_WGL diff --git a/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c b/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c index b3c2026475d..7a26df8071e 100644 --- a/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c +++ b/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c @@ -610,7 +610,7 @@ BOOL wmFlush(PWMC pwc, HDC hDC) // Support Functions //--------------------------------------------------------------------------- -static void flush(GLcontext* ctx) +static void flush(struct gl_context* ctx) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx); @@ -634,10 +634,10 @@ static void flush(GLcontext* ctx) /* * Set the color used to clear the color buffer. */ -//static void clear_color( GLcontext* ctx, const GLchan color[4] ) +//static void clear_color( struct gl_context* ctx, const GLchan color[4] ) // Changed for Mesa 5.x. KeithH static void clear_color( - GLcontext* ctx, + struct gl_context* ctx, const GLfloat color[4]) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -664,7 +664,7 @@ static void clear_color( * Otherwise, we let swrast do it. */ -static clear(GLcontext* ctx, GLbitfield mask, +static clear(struct gl_context* ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -787,7 +787,7 @@ static clear(GLcontext* ctx, GLbitfield mask, //--------------------------------------------------------------------------- -static void enable( GLcontext* ctx, GLenum pname, GLboolean enable ) +static void enable( struct gl_context* ctx, GLenum pname, GLboolean enable ) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx); @@ -814,7 +814,7 @@ static void enable( GLcontext* ctx, GLenum pname, GLboolean enable ) //--------------------------------------------------------------------------- -static GLboolean set_draw_buffer( GLcontext* ctx, GLenum mode ) +static GLboolean set_draw_buffer( struct gl_context* ctx, GLenum mode ) { /* TODO: this could be better */ if (mode==GL_FRONT_LEFT || mode==GL_BACK_LEFT) { @@ -828,7 +828,7 @@ static GLboolean set_draw_buffer( GLcontext* ctx, GLenum mode ) //--------------------------------------------------------------------------- -static void set_read_buffer(GLcontext *ctx, struct gl_framebuffer *colorBuffer, +static void set_read_buffer(struct gl_context *ctx, struct gl_framebuffer *colorBuffer, GLenum buffer ) { /* XXX todo */ @@ -840,7 +840,7 @@ static void set_read_buffer(GLcontext *ctx, struct gl_framebuffer *colorBuffer, /* Return characteristics of the output buffer. */ -//static void buffer_size( GLcontext* ctx, GLuint *width, GLuint *height ) +//static void buffer_size( struct gl_context* ctx, GLuint *width, GLuint *height ) // Altered for Mesa 5.x. KeithH static void buffer_size( struct gl_framebuffer *buffer, @@ -888,28 +888,28 @@ static void buffer_size( /* Accelerated routines are not implemented in 4.0. See OSMesa for ideas. */ -static void fast_rgb_points( GLcontext* ctx, GLuint first, GLuint last ) +static void fast_rgb_points( struct gl_context* ctx, GLuint first, GLuint last ) { } //--------------------------------------------------------------------------- /* Return pointer to accelerated points function */ -extern tnl_points_func choose_points_function( GLcontext* ctx ) +extern tnl_points_func choose_points_function( struct gl_context* ctx ) { return NULL; } //--------------------------------------------------------------------------- -static void fast_flat_rgb_line( GLcontext* ctx, GLuint v0, +static void fast_flat_rgb_line( struct gl_context* ctx, GLuint v0, GLuint v1, GLuint pv ) { } //--------------------------------------------------------------------------- -static tnl_line_func choose_line_function( GLcontext* ctx ) +static tnl_line_func choose_line_function( struct gl_context* ctx ) { } @@ -920,7 +920,7 @@ static tnl_line_func choose_line_function( GLcontext* ctx ) /* Write a horizontal span of 32-bit color-index pixels with a boolean mask. */ -static void write_ci32_span( const GLcontext* ctx, +static void write_ci32_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[] ) @@ -939,7 +939,7 @@ static void write_ci32_span( const GLcontext* ctx, //--------------------------------------------------------------------------- /* Write a horizontal span of 8-bit color-index pixels with a boolean mask. */ -static void write_ci8_span( const GLcontext* ctx, +static void write_ci8_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y, const GLubyte index[], const GLubyte mask[] ) @@ -962,7 +962,7 @@ static void write_ci8_span( const GLcontext* ctx, * Write a horizontal span of pixels with a boolean mask. The current * color index is used for all pixels. */ -static void write_mono_ci_span(const GLcontext* ctx, +static void write_mono_ci_span(const struct gl_context* ctx, GLuint n,GLint x,GLint y, GLuint colorIndex, const GLubyte mask[]) { @@ -984,7 +984,7 @@ static void write_mono_ci_span(const GLcontext* ctx, */ /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span( const GLcontext* ctx, GLuint n, GLint x, GLint y, +static void write_rgba_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] ) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -1035,7 +1035,7 @@ static void write_rgba_span( const GLcontext* ctx, GLuint n, GLint x, GLint y, //--------------------------------------------------------------------------- /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span( const GLcontext* ctx, +static void write_rgb_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], const GLubyte mask[] ) { @@ -1090,7 +1090,7 @@ static void write_rgb_span( const GLcontext* ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span( const GLcontext* ctx, +static void write_mono_rgba_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]) { @@ -1123,7 +1123,7 @@ static void write_mono_rgba_span( const GLcontext* ctx, /* Write an array of 32-bit index pixels with a boolean mask. */ -static void write_ci32_pixels( const GLcontext* ctx, +static void write_ci32_pixels( const struct gl_context* ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[] ) { @@ -1147,7 +1147,7 @@ static void write_ci32_pixels( const GLcontext* ctx, * Write an array of pixels with a boolean mask. The current color * index is used for all pixels. */ -static void write_mono_ci_pixels( const GLcontext* ctx, +static void write_mono_ci_pixels( const struct gl_context* ctx, GLuint n, const GLint x[], const GLint y[], GLuint colorIndex, const GLubyte mask[] ) @@ -1169,7 +1169,7 @@ static void write_mono_ci_pixels( const GLcontext* ctx, /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels( const GLcontext* ctx, +static void write_rgba_pixels( const struct gl_context* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] ) { @@ -1194,7 +1194,7 @@ static void write_rgba_pixels( const GLcontext* ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels( const GLcontext* ctx, +static void write_mono_rgba_pixels( const struct gl_context* ctx, GLuint n, const GLint x[], const GLint y[], const GLchan color[4], @@ -1218,7 +1218,7 @@ static void write_mono_rgba_pixels( const GLcontext* ctx, /**********************************************************************/ /* Read a horizontal span of color-index pixels. */ -static void read_ci32_span( const GLcontext* ctx, GLuint n, GLint x, GLint y, +static void read_ci32_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y, GLuint index[]) { GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); @@ -1233,7 +1233,7 @@ static void read_ci32_span( const GLcontext* ctx, GLuint n, GLint x, GLint y, //--------------------------------------------------------------------------- /* Read an array of color index pixels. */ -static void read_ci32_pixels( const GLcontext* ctx, +static void read_ci32_pixels( const struct gl_context* ctx, GLuint n, const GLint x[], const GLint y[], GLuint indx[], const GLubyte mask[] ) { @@ -1251,7 +1251,7 @@ static void read_ci32_pixels( const GLcontext* ctx, //--------------------------------------------------------------------------- /* Read a horizontal span of color pixels. */ -static void read_rgba_span( const GLcontext* ctx, +static void read_rgba_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ) { @@ -1275,7 +1275,7 @@ static void read_rgba_span( const GLcontext* ctx, //--------------------------------------------------------------------------- /* Read an array of color pixels. */ -static void read_rgba_pixels( const GLcontext* ctx, +static void read_rgba_pixels( const struct gl_context* ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] ) { @@ -1301,7 +1301,7 @@ static void read_rgba_pixels( const GLcontext* ctx, //--------------------------------------------------------------------------- static void wmesa_update_state( - GLcontext *ctx, + struct gl_context *ctx, GLuint new_state) { _swrast_InvalidateState( ctx, new_state ); @@ -1313,7 +1313,7 @@ static void wmesa_update_state( //--------------------------------------------------------------------------- static void wmesa_viewport( - GLcontext *ctx, + struct gl_context *ctx, GLint x, GLint y, GLsizei w, @@ -1325,7 +1325,7 @@ static void wmesa_viewport( //--------------------------------------------------------------------------- static void wmesa_update_state_first_time( - GLcontext *ctx, + struct gl_context *ctx, GLuint new_state) { struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference( ctx ); @@ -1570,7 +1570,7 @@ BOOL gldBuildPixelformatList_MesaSW(void) BOOL gldInitialiseMesa_MesaSW( DGL_ctx *gld) { - GLcontext *ctx; + struct gl_context *ctx; if (gld == NULL) return FALSE; diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index f091c38bc41..cb474f7ce56 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1200,7 +1200,7 @@ initialize_visual_and_buffer(XMesaVisual v, XMesaBuffer b, * Convert an RGBA color to a pixel value. */ unsigned long -xmesa_color_to_pixel(GLcontext *ctx, +xmesa_color_to_pixel(struct gl_context *ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLuint pixelFormat) { @@ -1481,7 +1481,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) { static GLboolean firstTime = GL_TRUE; XMesaContext c; - GLcontext *mesaCtx; + struct gl_context *mesaCtx; struct dd_function_table functions; TNLcontext *tnl; @@ -1490,7 +1490,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) firstTime = GL_FALSE; } - /* Note: the XMesaContext contains a Mesa GLcontext struct (inheritance) */ + /* Note: the XMesaContext contains a Mesa struct gl_context struct (inheritance) */ c = (XMesaContext) CALLOC_STRUCT(xmesa_context); if (!c) return NULL; @@ -1501,7 +1501,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) _mesa_init_driver_functions(&functions); xmesa_init_driver_functions(v, &functions); if (!_mesa_initialize_context(mesaCtx, &v->mesa_visual, - share_list ? &(share_list->mesa) : (GLcontext *) NULL, + share_list ? &(share_list->mesa) : (struct gl_context *) NULL, &functions, (void *) c)) { free(c); return NULL; @@ -1574,7 +1574,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) PUBLIC void XMesaDestroyContext( XMesaContext c ) { - GLcontext *mesaCtx = &c->mesa; + struct gl_context *mesaCtx = &c->mesa; #ifdef FX FXdestroyContext( XMESA_BUFFER(mesaCtx->DrawBuffer) ); @@ -1804,7 +1804,7 @@ xmesa_check_and_update_buffer_size(XMesaContext xmctx, XMesaBuffer drawBuffer) xmesa_get_window_size(drawBuffer->display, drawBuffer, &width, &height); if (drawBuffer->mesa_buffer.Width != width || drawBuffer->mesa_buffer.Height != height) { - GLcontext *ctx = xmctx ? &xmctx->mesa : NULL; + struct gl_context *ctx = xmctx ? &xmctx->mesa : NULL; _mesa_resize_framebuffer(ctx, &(drawBuffer->mesa_buffer), width, height); } drawBuffer->mesa_buffer.Initialized = GL_TRUE; /* XXX TEMPORARY? */ @@ -2252,7 +2252,7 @@ unsigned long XMesaDitherColor( XMesaContext xmesa, GLint x, GLint y, GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) { - GLcontext *ctx = &xmesa->mesa; + struct gl_context *ctx = &xmesa->mesa; GLint r = (GLint) (red * 255.0F); GLint g = (GLint) (green * 255.0F); GLint b = (GLint) (blue * 255.0F); diff --git a/src/mesa/drivers/x11/xm_buffer.c b/src/mesa/drivers/x11/xm_buffer.c index 3a696f7106a..2683bd44d19 100644 --- a/src/mesa/drivers/x11/xm_buffer.c +++ b/src/mesa/drivers/x11/xm_buffer.c @@ -251,7 +251,7 @@ xmesa_delete_renderbuffer(struct gl_renderbuffer *rb) * Called via gl_renderbuffer::AllocStorage() */ static GLboolean -xmesa_alloc_front_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +xmesa_alloc_front_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { struct xmesa_renderbuffer *xrb = xmesa_renderbuffer(rb); @@ -278,7 +278,7 @@ xmesa_alloc_front_storage(GLcontext *ctx, struct gl_renderbuffer *rb, * Called via gl_renderbuffer::AllocStorage() */ static GLboolean -xmesa_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +xmesa_alloc_back_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { struct xmesa_renderbuffer *xrb = xmesa_renderbuffer(rb); @@ -323,7 +323,7 @@ xmesa_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb, struct xmesa_renderbuffer * -xmesa_new_renderbuffer(GLcontext *ctx, GLuint name, const struct gl_config *visual, +xmesa_new_renderbuffer(struct gl_context *ctx, GLuint name, const struct gl_config *visual, GLboolean backBuffer) { struct xmesa_renderbuffer *xrb = CALLOC_STRUCT(xmesa_renderbuffer); diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index 5edafb890b1..4f43e807226 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -91,7 +91,7 @@ const int xmesa_kernel1[16] = { static void -finish_or_flush( GLcontext *ctx ) +finish_or_flush( struct gl_context *ctx ) { #ifdef XFree86Server /* NOT_NEEDED */ @@ -107,7 +107,7 @@ finish_or_flush( GLcontext *ctx ) static void -clear_color( GLcontext *ctx, const GLfloat color[4] ) +clear_color( struct gl_context *ctx, const GLfloat color[4] ) { if (ctx->DrawBuffer->Name == 0) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -134,7 +134,7 @@ clear_color( GLcontext *ctx, const GLfloat color[4] ) /* Implements glColorMask() */ static void -color_mask(GLcontext *ctx, +color_mask(struct gl_context *ctx, GLboolean rmask, GLboolean gmask, GLboolean bmask, GLboolean amask) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -173,7 +173,7 @@ color_mask(GLcontext *ctx, * Clear the front or back color buffer, if it's implemented with a pixmap. */ static void -clear_pixmap(GLcontext *ctx, struct xmesa_renderbuffer *xrb, +clear_pixmap(struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -193,7 +193,7 @@ clear_pixmap(GLcontext *ctx, struct xmesa_renderbuffer *xrb, static void -clear_8bit_ximage( GLcontext *ctx, struct xmesa_renderbuffer *xrb, +clear_8bit_ximage( struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height ) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -206,7 +206,7 @@ clear_8bit_ximage( GLcontext *ctx, struct xmesa_renderbuffer *xrb, static void -clear_HPCR_ximage( GLcontext *ctx, struct xmesa_renderbuffer *xrb, +clear_HPCR_ximage( struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height ) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -227,7 +227,7 @@ clear_HPCR_ximage( GLcontext *ctx, struct xmesa_renderbuffer *xrb, static void -clear_16bit_ximage( GLcontext *ctx, struct xmesa_renderbuffer *xrb, +clear_16bit_ximage( struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -249,7 +249,7 @@ clear_16bit_ximage( GLcontext *ctx, struct xmesa_renderbuffer *xrb, /* Optimized code provided by Nozomi Ytow */ static void -clear_24bit_ximage(GLcontext *ctx, struct xmesa_renderbuffer *xrb, +clear_24bit_ximage(struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -282,7 +282,7 @@ clear_24bit_ximage(GLcontext *ctx, struct xmesa_renderbuffer *xrb, static void -clear_32bit_ximage(GLcontext *ctx, struct xmesa_renderbuffer *xrb, +clear_32bit_ximage(struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -326,7 +326,7 @@ clear_32bit_ximage(GLcontext *ctx, struct xmesa_renderbuffer *xrb, static void -clear_nbit_ximage(GLcontext *ctx, struct xmesa_renderbuffer *xrb, +clear_nbit_ximage(struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -345,7 +345,7 @@ clear_nbit_ximage(GLcontext *ctx, struct xmesa_renderbuffer *xrb, static void -clear_buffers(GLcontext *ctx, GLbitfield buffers) +clear_buffers(struct gl_context *ctx, GLbitfield buffers) { if (ctx->DrawBuffer->Name == 0) { /* this is a window system framebuffer */ @@ -396,7 +396,7 @@ clear_buffers(GLcontext *ctx, GLbitfield buffers) * Check if we can do an optimized glDrawPixels into an 8R8G8B visual. */ static GLboolean -can_do_DrawPixels_8R8G8B(GLcontext *ctx, GLenum format, GLenum type) +can_do_DrawPixels_8R8G8B(struct gl_context *ctx, GLenum format, GLenum type) { if (format == GL_BGRA && type == GL_UNSIGNED_BYTE && @@ -432,7 +432,7 @@ can_do_DrawPixels_8R8G8B(GLcontext *ctx, GLenum format, GLenum type) * The image format must be GL_BGRA to match the PF_8R8G8B pixel format. */ static void -xmesa_DrawPixels_8R8G8B( GLcontext *ctx, +xmesa_DrawPixels_8R8G8B( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -529,7 +529,7 @@ xmesa_DrawPixels_8R8G8B( GLcontext *ctx, * Check if we can do an optimized glDrawPixels into an 5R6G5B visual. */ static GLboolean -can_do_DrawPixels_5R6G5B(GLcontext *ctx, GLenum format, GLenum type) +can_do_DrawPixels_5R6G5B(struct gl_context *ctx, GLenum format, GLenum type) { if (format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5 && @@ -567,7 +567,7 @@ can_do_DrawPixels_5R6G5B(GLcontext *ctx, GLenum format, GLenum type) * match the PF_5R6G5B pixel format. */ static void -xmesa_DrawPixels_5R6G5B( GLcontext *ctx, +xmesa_DrawPixels_5R6G5B( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -662,7 +662,7 @@ xmesa_DrawPixels_5R6G5B( GLcontext *ctx, * Determine if we can do an optimized glCopyPixels. */ static GLboolean -can_do_CopyPixels(GLcontext *ctx, GLenum type) +can_do_CopyPixels(struct gl_context *ctx, GLenum type) { if (type == GL_COLOR && ctx->_ImageTransferState == 0 && /* no color tables, scale/bias, etc */ @@ -701,7 +701,7 @@ can_do_CopyPixels(GLcontext *ctx, GLenum type) * We do support copying from one window to another, ala glXMakeCurrentRead. */ static void -xmesa_CopyPixels( GLcontext *ctx, +xmesa_CopyPixels( struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint destx, GLint desty, GLenum type ) { @@ -740,7 +740,7 @@ xmesa_CopyPixels( GLcontext *ctx, * return a meaningful GL_RENDERER string. */ static const GLubyte * -get_string( GLcontext *ctx, GLenum name ) +get_string( struct gl_context *ctx, GLenum name ) { (void) ctx; switch (name) { @@ -767,7 +767,7 @@ get_string( GLcontext *ctx, GLenum name ) * dither enable/disable. */ static void -enable( GLcontext *ctx, GLenum pname, GLboolean state ) +enable( struct gl_context *ctx, GLenum pname, GLboolean state ) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -785,7 +785,7 @@ enable( GLcontext *ctx, GLenum pname, GLboolean state ) static void -clear_color_HPCR_ximage( GLcontext *ctx, const GLfloat color[4] ) +clear_color_HPCR_ximage( struct gl_context *ctx, const GLfloat color[4] ) { int i; const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -819,7 +819,7 @@ clear_color_HPCR_ximage( GLcontext *ctx, const GLfloat color[4] ) static void -clear_color_HPCR_pixmap( GLcontext *ctx, const GLfloat color[4] ) +clear_color_HPCR_pixmap( struct gl_context *ctx, const GLfloat color[4] ) { int i; const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -863,7 +863,7 @@ clear_color_HPCR_pixmap( GLcontext *ctx, const GLfloat color[4] ) * flags. */ void -xmesa_update_state( GLcontext *ctx, GLbitfield new_state ) +xmesa_update_state( struct gl_context *ctx, GLbitfield new_state ) { const XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -954,7 +954,7 @@ xmesa_update_state( GLcontext *ctx, GLbitfield new_state ) * texels. */ static GLboolean -test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level, +test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLint width, GLint height, GLint depth, GLint border) { @@ -988,7 +988,7 @@ test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level, * In SW, we don't really compress GL_COMPRESSED_RGB[A] textures! */ static gl_format -choose_tex_format( GLcontext *ctx, GLint internalFormat, +choose_tex_format( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { switch (internalFormat) { @@ -1014,7 +1014,7 @@ choose_tex_format( GLcontext *ctx, GLint internalFormat, * That problem led to the GLX_MESA_resize_buffers extension. */ static void -xmesa_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) +xmesa_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { XMesaContext xmctx = XMESA_CONTEXT(ctx); XMesaBuffer xmdrawbuf = XMESA_BUFFER(ctx->WinSysDrawBuffer); @@ -1044,7 +1044,7 @@ struct xmesa_query_object static struct gl_query_object * -xmesa_new_query_object(GLcontext *ctx, GLuint id) +xmesa_new_query_object(struct gl_context *ctx, GLuint id) { struct xmesa_query_object *q = CALLOC_STRUCT(xmesa_query_object); if (q) { @@ -1056,7 +1056,7 @@ xmesa_new_query_object(GLcontext *ctx, GLuint id) static void -xmesa_begin_query(GLcontext *ctx, struct gl_query_object *q) +xmesa_begin_query(struct gl_context *ctx, struct gl_query_object *q) { if (q->Target == GL_TIME_ELAPSED_EXT) { struct xmesa_query_object *xq = (struct xmesa_query_object *) q; @@ -1083,7 +1083,7 @@ time_diff(const struct timeval *t0, const struct timeval *t1) static void -xmesa_end_query(GLcontext *ctx, struct gl_query_object *q) +xmesa_end_query(struct gl_context *ctx, struct gl_query_object *q) { if (q->Target == GL_TIME_ELAPSED_EXT) { struct xmesa_query_object *xq = (struct xmesa_query_object *) q; @@ -1175,7 +1175,7 @@ xmesa_init_driver_functions( XMesaVisual xmvisual, * functions. * Called during context creation only. */ -void xmesa_register_swrast_functions( GLcontext *ctx ) +void xmesa_register_swrast_functions( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT( ctx ); diff --git a/src/mesa/drivers/x11/xm_line.c b/src/mesa/drivers/x11/xm_line.c index f643b6d3a76..f03f99f918f 100644 --- a/src/mesa/drivers/x11/xm_line.c +++ b/src/mesa/drivers/x11/xm_line.c @@ -54,7 +54,7 @@ */ #if 000 /* XXX don't use this, it doesn't dither correctly */ -static void draw_points_ANY_pixmap( GLcontext *ctx, const SWvertex *vert ) +static void draw_points_ANY_pixmap( struct gl_context *ctx, const SWvertex *vert ) { XMesaContext xmesa = XMESA_CONTEXT(ctx); XMesaDisplay *dpy = xmesa->xm_visual->display; @@ -89,7 +89,7 @@ static void draw_points_ANY_pixmap( GLcontext *ctx, const SWvertex *vert ) * our internal point functions, otherwise fall back to the standard * swrast functions. */ -void xmesa_choose_point( GLcontext *ctx ) +void xmesa_choose_point( struct gl_context *ctx ) { #if 0 XMesaContext xmesa = XMESA_CONTEXT(ctx); @@ -546,7 +546,7 @@ void xmesa_choose_point( GLcontext *ctx ) * for the XSetLineAttributes() function call. */ static void -xor_line(GLcontext *ctx, const SWvertex *vert0, const SWvertex *vert1) +xor_line(struct gl_context *ctx, const SWvertex *vert0, const SWvertex *vert1) { XMesaContext xmesa = XMESA_CONTEXT(ctx); XMesaDisplay *dpy = xmesa->xm_visual->display; @@ -578,7 +578,7 @@ xor_line(GLcontext *ctx, const SWvertex *vert0, const SWvertex *vert1) * swrast fallback. */ static swrast_line_func -get_line_func(GLcontext *ctx) +get_line_func(struct gl_context *ctx) { #if CHAN_BITS == 8 SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -682,7 +682,7 @@ get_line_func(GLcontext *ctx) * standard swrast functions. */ void -xmesa_choose_line(GLcontext *ctx) +xmesa_choose_line(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); diff --git a/src/mesa/drivers/x11/xm_span.c b/src/mesa/drivers/x11/xm_span.c index c39d87c4516..ab66c5e1f12 100644 --- a/src/mesa/drivers/x11/xm_span.c +++ b/src/mesa/drivers/x11/xm_span.c @@ -163,13 +163,13 @@ static unsigned long read_pixel( XMesaDisplay *dpy, #define PUT_ROW_ARGS \ - GLcontext *ctx, \ + struct gl_context *ctx, \ struct gl_renderbuffer *rb, \ GLuint n, GLint x, GLint y, \ const void *values, const GLubyte mask[] #define RGB_SPAN_ARGS \ - GLcontext *ctx, \ + struct gl_context *ctx, \ struct gl_renderbuffer *rb, \ GLuint n, GLint x, GLint y, \ const void *values, const GLubyte mask[] @@ -2242,7 +2242,7 @@ static void put_row_rgb_GRAYSCALE8_ximage( RGB_SPAN_ARGS ) #define PUT_VALUES_ARGS \ - GLcontext *ctx, struct gl_renderbuffer *rb, \ + struct gl_context *ctx, struct gl_renderbuffer *rb, \ GLuint n, const GLint x[], const GLint y[], \ const void *values, const GLubyte mask[] @@ -2829,7 +2829,7 @@ static void put_values_GRAYSCALE8_ximage( PUT_VALUES_ARGS ) /**********************************************************************/ #define PUT_MONO_ROW_ARGS \ - GLcontext *ctx, struct gl_renderbuffer *rb, \ + struct gl_context *ctx, struct gl_renderbuffer *rb, \ GLuint n, GLint x, GLint y, const void *value, \ const GLubyte mask[] @@ -3267,7 +3267,7 @@ static void put_mono_row_DITHER_5R6G5B_ximage( PUT_MONO_ROW_ARGS ) /**********************************************************************/ #define PUT_MONO_VALUES_ARGS \ - GLcontext *ctx, struct gl_renderbuffer *rb, \ + struct gl_context *ctx, struct gl_renderbuffer *rb, \ GLuint n, const GLint x[], const GLint y[], \ const void *value, const GLubyte mask[] @@ -3773,7 +3773,7 @@ static void put_values_ci_ximage( PUT_VALUES_ARGS ) * else return number of pixels to skip in the destination array. */ static int -clip_for_xgetimage(GLcontext *ctx, XMesaPixmap pixmap, GLuint *n, GLint *x, GLint *y) +clip_for_xgetimage(struct gl_context *ctx, XMesaPixmap pixmap, GLuint *n, GLint *x, GLint *y) { XMesaContext xmesa = XMESA_CONTEXT(ctx); XMesaBuffer source = XMESA_BUFFER(ctx->DrawBuffer); @@ -3813,7 +3813,7 @@ clip_for_xgetimage(GLcontext *ctx, XMesaPixmap pixmap, GLuint *n, GLint *x, GLin * Read a horizontal span of color-index pixels. */ static void -get_row_ci(GLcontext *ctx, struct gl_renderbuffer *rb, +get_row_ci(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) { GLuint *index = (GLuint *) values; @@ -3870,7 +3870,7 @@ get_row_ci(GLcontext *ctx, struct gl_renderbuffer *rb, * Read a horizontal span of color pixels. */ static void -get_row_rgba(GLcontext *ctx, struct gl_renderbuffer *rb, +get_row_rgba(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, void *values) { GLubyte (*rgba)[4] = (GLubyte (*)[4]) values; @@ -4272,7 +4272,7 @@ get_row_rgba(GLcontext *ctx, struct gl_renderbuffer *rb, * Read an array of color index pixels. */ static void -get_values_ci(GLcontext *ctx, struct gl_renderbuffer *rb, +get_values_ci(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], void *values) { GLuint *indx = (GLuint *) values; @@ -4296,7 +4296,7 @@ get_values_ci(GLcontext *ctx, struct gl_renderbuffer *rb, static void -get_values_rgba(GLcontext *ctx, struct gl_renderbuffer *rb, +get_values_rgba(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], void *values) { GLubyte (*rgba)[4] = (GLubyte (*)[4]) values; diff --git a/src/mesa/drivers/x11/xm_tri.c b/src/mesa/drivers/x11/xm_tri.c index a6efb35e3c3..98dece113de 100644 --- a/src/mesa/drivers/x11/xm_tri.c +++ b/src/mesa/drivers/x11/xm_tri.c @@ -1448,7 +1448,7 @@ do { \ * swrast fallback. */ static swrast_tri_func -get_triangle_func(GLcontext *ctx) +get_triangle_func(struct gl_context *ctx) { #if CHAN_BITS == 8 SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -1644,7 +1644,7 @@ get_triangle_func(GLcontext *ctx) * of our internal tri functions, otherwise fall back to the * standard swrast functions. */ -void xmesa_choose_triangle( GLcontext *ctx ) +void xmesa_choose_triangle( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 37b7a587dee..a24b6a1a961 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -54,7 +54,7 @@ struct xmesa_renderbuffer; /* Function pointer for clearing color buffers */ -typedef void (*ClearFunc)( GLcontext *ctx, struct xmesa_renderbuffer *xrb, +typedef void (*ClearFunc)( struct gl_context *ctx, struct xmesa_renderbuffer *xrb, GLint x, GLint y, GLint width, GLint height ); @@ -128,11 +128,11 @@ struct xmesa_visual { /** - * Context info, derived from GLcontext. + * Context info, derived from struct gl_context. * Basically corresponds to a GLXContext. */ struct xmesa_context { - GLcontext mesa; /* the core library context (containment) */ + struct gl_context mesa; /* the core library context (containment) */ XMesaVisual xm_visual; /* Describes the buffers */ XMesaBuffer xm_buffer; /* current span/point/line/triangle buffer */ @@ -495,7 +495,7 @@ extern const int xmesa_kernel1[16]; */ extern struct xmesa_renderbuffer * -xmesa_new_renderbuffer(GLcontext *ctx, GLuint name, const struct gl_config *visual, +xmesa_new_renderbuffer(struct gl_context *ctx, GLuint name, const struct gl_config *visual, GLboolean backBuffer); extern void @@ -505,7 +505,7 @@ extern XMesaBuffer xmesa_find_buffer(XMesaDisplay *dpy, XMesaColormap cmap, XMesaBuffer notThis); extern unsigned long -xmesa_color_to_pixel( GLcontext *ctx, +xmesa_color_to_pixel( struct gl_context *ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLuint pixelFormat ); @@ -521,7 +521,7 @@ xmesa_init_driver_functions( XMesaVisual xmvisual, struct dd_function_table *driver ); extern void -xmesa_update_state( GLcontext *ctx, GLbitfield new_state ); +xmesa_update_state( struct gl_context *ctx, GLbitfield new_state ); extern void xmesa_set_renderbuffer_funcs(struct xmesa_renderbuffer *xrb, @@ -542,11 +542,11 @@ xmesa_renderbuffer(struct gl_renderbuffer *rb) /** - * Return pointer to XMesaContext corresponding to a Mesa GLcontext. + * Return pointer to XMesaContext corresponding to a Mesa struct gl_context. * Since we're using structure containment, it's just a cast!. */ static INLINE XMesaContext -XMESA_CONTEXT(GLcontext *ctx) +XMESA_CONTEXT(struct gl_context *ctx) { return (XMesaContext) ctx; } @@ -566,12 +566,12 @@ XMESA_BUFFER(struct gl_framebuffer *b) /* Plugged into the software rasterizer. Try to use internal * swrast-style point, line and triangle functions. */ -extern void xmesa_choose_point( GLcontext *ctx ); -extern void xmesa_choose_line( GLcontext *ctx ); -extern void xmesa_choose_triangle( GLcontext *ctx ); +extern void xmesa_choose_point( struct gl_context *ctx ); +extern void xmesa_choose_line( struct gl_context *ctx ); +extern void xmesa_choose_triangle( struct gl_context *ctx ); -extern void xmesa_register_swrast_functions( GLcontext *ctx ); +extern void xmesa_register_swrast_functions( struct gl_context *ctx ); diff --git a/src/mesa/main/accum.c b/src/mesa/main/accum.c index 2012d00fd5f..9026110f3ef 100644 --- a/src/mesa/main/accum.c +++ b/src/mesa/main/accum.c @@ -115,7 +115,7 @@ _mesa_init_accum_dispatch(struct _glapi_table *disp) void -_mesa_init_accum( GLcontext *ctx ) +_mesa_init_accum( struct gl_context *ctx ) { /* Accumulate buffer group */ ASSIGN_4V( ctx->Accum.ClearColor, 0.0, 0.0, 0.0, 0.0 ); diff --git a/src/mesa/main/accum.h b/src/mesa/main/accum.h index 4b628bafa02..def692a73a5 100644 --- a/src/mesa/main/accum.h +++ b/src/mesa/main/accum.h @@ -67,6 +67,6 @@ _mesa_init_accum_dispatch(struct _glapi_table *disp) #endif /* FEATURE_accum */ extern void -_mesa_init_accum( GLcontext *ctx ); +_mesa_init_accum( struct gl_context *ctx ); #endif /* ACCUM_H */ diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index ffcd194240f..172c33b47bf 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -1031,7 +1031,7 @@ static attrib_func AttribFuncsARB[2][4][8] = { /**********************************************************************/ -GLboolean _ae_create_context( GLcontext *ctx ) +GLboolean _ae_create_context( struct gl_context *ctx ) { if (ctx->aelt_context) return GL_TRUE; @@ -1064,7 +1064,7 @@ GLboolean _ae_create_context( GLcontext *ctx ) } -void _ae_destroy_context( GLcontext *ctx ) +void _ae_destroy_context( struct gl_context *ctx ) { if ( AE_CONTEXT( ctx ) ) { FREE( ctx->aelt_context ); @@ -1092,7 +1092,7 @@ static void check_vbo( AEcontext *actx, * etc). * Note: this may be called during display list construction. */ -static void _ae_update_state( GLcontext *ctx ) +static void _ae_update_state( struct gl_context *ctx ) { AEcontext *actx = AE_CONTEXT(ctx); AEarray *aa = actx->arrays; @@ -1211,7 +1211,7 @@ static void _ae_update_state( GLcontext *ctx ) actx->NewState = 0; } -void _ae_map_vbos( GLcontext *ctx ) +void _ae_map_vbos( struct gl_context *ctx ) { AEcontext *actx = AE_CONTEXT(ctx); GLuint i; @@ -1232,7 +1232,7 @@ void _ae_map_vbos( GLcontext *ctx ) actx->mapped_vbos = GL_TRUE; } -void _ae_unmap_vbos( GLcontext *ctx ) +void _ae_unmap_vbos( struct gl_context *ctx ) { AEcontext *actx = AE_CONTEXT(ctx); GLuint i; @@ -1300,7 +1300,7 @@ void GLAPIENTRY _ae_ArrayElement( GLint elt ) } -void _ae_invalidate_state( GLcontext *ctx, GLuint new_state ) +void _ae_invalidate_state( struct gl_context *ctx, GLuint new_state ) { AEcontext *actx = AE_CONTEXT(ctx); diff --git a/src/mesa/main/api_arrayelt.h b/src/mesa/main/api_arrayelt.h index d18c0792c35..610e522a943 100644 --- a/src/mesa/main/api_arrayelt.h +++ b/src/mesa/main/api_arrayelt.h @@ -37,15 +37,15 @@ (vfmt)->ArrayElement = impl ## ArrayElement; \ } while (0) -extern GLboolean _ae_create_context( GLcontext *ctx ); -extern void _ae_destroy_context( GLcontext *ctx ); -extern void _ae_invalidate_state( GLcontext *ctx, GLuint new_state ); +extern GLboolean _ae_create_context( struct gl_context *ctx ); +extern void _ae_destroy_context( struct gl_context *ctx ); +extern void _ae_invalidate_state( struct gl_context *ctx, GLuint new_state ); extern void GLAPIENTRY _ae_ArrayElement( GLint elt ); /* May optionally be called before a batch of element calls: */ -extern void _ae_map_vbos( GLcontext *ctx ); -extern void _ae_unmap_vbos( GLcontext *ctx ); +extern void _ae_map_vbos( struct gl_context *ctx ); +extern void _ae_unmap_vbos( struct gl_context *ctx ); extern void _mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp, @@ -56,18 +56,18 @@ _mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp, #define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) do { } while (0) static INLINE GLboolean -_ae_create_context( GLcontext *ctx ) +_ae_create_context( struct gl_context *ctx ) { return GL_TRUE; } static INLINE void -_ae_destroy_context( GLcontext *ctx ) +_ae_destroy_context( struct gl_context *ctx ) { } static INLINE void -_ae_invalidate_state( GLcontext *ctx, GLuint new_state ) +_ae_invalidate_state( struct gl_context *ctx, GLuint new_state ) { } diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c index b3b5c6cc053..4929a9310d4 100644 --- a/src/mesa/main/api_validate.c +++ b/src/mesa/main/api_validate.c @@ -54,7 +54,7 @@ index_bytes(GLenum type, GLsizei count) * Find the max index in the given element/index buffer */ GLuint -_mesa_max_buffer_index(GLcontext *ctx, GLuint count, GLenum type, +_mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type, const void *indices, struct gl_buffer_object *elementBuf) { @@ -99,7 +99,7 @@ _mesa_max_buffer_index(GLcontext *ctx, GLuint count, GLenum type, * Check if OK to draw arrays/elements. */ static GLboolean -check_valid_to_render(GLcontext *ctx, const char *function) +check_valid_to_render(struct gl_context *ctx, const char *function) { if (!_mesa_valid_to_render(ctx, function)) { return GL_FALSE; @@ -140,7 +140,7 @@ check_valid_to_render(GLcontext *ctx, const char *function) * \return GL_TRUE if OK, GL_FALSE if any indexed vertex goes is out of bounds */ static GLboolean -check_index_bounds(GLcontext *ctx, GLsizei count, GLenum type, +check_index_bounds(struct gl_context *ctx, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) { struct _mesa_prim prim; @@ -181,7 +181,7 @@ check_index_bounds(GLcontext *ctx, GLsizei count, GLenum type, * \return GL_TRUE if OK to render, GL_FALSE if error found */ GLboolean -_mesa_validate_DrawElements(GLcontext *ctx, +_mesa_validate_DrawElements(struct gl_context *ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) { @@ -237,7 +237,7 @@ _mesa_validate_DrawElements(GLcontext *ctx, * \return GL_TRUE if OK to render, GL_FALSE if error found */ GLboolean -_mesa_validate_DrawRangeElements(GLcontext *ctx, GLenum mode, +_mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) @@ -298,7 +298,7 @@ _mesa_validate_DrawRangeElements(GLcontext *ctx, GLenum mode, * \return GL_TRUE if OK to render, GL_FALSE if error found */ GLboolean -_mesa_validate_DrawArrays(GLcontext *ctx, +_mesa_validate_DrawArrays(struct gl_context *ctx, GLenum mode, GLint start, GLsizei count) { ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); @@ -327,7 +327,7 @@ _mesa_validate_DrawArrays(GLcontext *ctx, GLboolean -_mesa_validate_DrawArraysInstanced(GLcontext *ctx, GLenum mode, GLint first, +_mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint first, GLsizei count, GLsizei primcount) { ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); @@ -371,7 +371,7 @@ _mesa_validate_DrawArraysInstanced(GLcontext *ctx, GLenum mode, GLint first, GLboolean -_mesa_validate_DrawElementsInstanced(GLcontext *ctx, +_mesa_validate_DrawElementsInstanced(struct gl_context *ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount) { diff --git a/src/mesa/main/api_validate.h b/src/mesa/main/api_validate.h index cd27d58aa7d..b232a90843e 100644 --- a/src/mesa/main/api_validate.h +++ b/src/mesa/main/api_validate.h @@ -32,32 +32,32 @@ extern GLuint -_mesa_max_buffer_index(GLcontext *ctx, GLuint count, GLenum type, +_mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type, const void *indices, struct gl_buffer_object *elementBuf); extern GLboolean -_mesa_validate_DrawArrays(GLcontext *ctx, +_mesa_validate_DrawArrays(struct gl_context *ctx, GLenum mode, GLint start, GLsizei count); extern GLboolean -_mesa_validate_DrawElements(GLcontext *ctx, +_mesa_validate_DrawElements(struct gl_context *ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); extern GLboolean -_mesa_validate_DrawRangeElements(GLcontext *ctx, GLenum mode, +_mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); extern GLboolean -_mesa_validate_DrawArraysInstanced(GLcontext *ctx, GLenum mode, GLint first, +_mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint first, GLsizei count, GLsizei primcount); extern GLboolean -_mesa_validate_DrawElementsInstanced(GLcontext *ctx, +_mesa_validate_DrawElementsInstanced(struct gl_context *ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index 0069cd3dcfd..0d64b7de8dd 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -61,7 +61,7 @@ */ static INLINE struct gl_array_object * -lookup_arrayobj(GLcontext *ctx, GLuint id) +lookup_arrayobj(struct gl_context *ctx, GLuint id) { if (id == 0) return NULL; @@ -77,7 +77,7 @@ lookup_arrayobj(GLcontext *ctx, GLuint id) * This is done just prior to array object destruction. */ static void -unbind_array_object_vbos(GLcontext *ctx, struct gl_array_object *obj) +unbind_array_object_vbos(struct gl_context *ctx, struct gl_array_object *obj) { GLuint i; @@ -109,7 +109,7 @@ unbind_array_object_vbos(GLcontext *ctx, struct gl_array_object *obj) * \c dd_function_table::NewArrayObject. */ struct gl_array_object * -_mesa_new_array_object( GLcontext *ctx, GLuint name ) +_mesa_new_array_object( struct gl_context *ctx, GLuint name ) { struct gl_array_object *obj = CALLOC_STRUCT(gl_array_object); if (obj) @@ -125,7 +125,7 @@ _mesa_new_array_object( GLcontext *ctx, GLuint name ) * \c dd_function_table::DeleteArrayObject. */ void -_mesa_delete_array_object( GLcontext *ctx, struct gl_array_object *obj ) +_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj ) { (void) ctx; unbind_array_object_vbos(ctx, obj); @@ -138,7 +138,7 @@ _mesa_delete_array_object( GLcontext *ctx, struct gl_array_object *obj ) * Set ptr to arrayObj w/ reference counting. */ void -_mesa_reference_array_object(GLcontext *ctx, +_mesa_reference_array_object(struct gl_context *ctx, struct gl_array_object **ptr, struct gl_array_object *arrayObj) { @@ -193,7 +193,7 @@ _mesa_reference_array_object(GLcontext *ctx, static void -init_array(GLcontext *ctx, +init_array(struct gl_context *ctx, struct gl_client_array *array, GLint size, GLint type) { array->Size = size; @@ -216,7 +216,7 @@ init_array(GLcontext *ctx, * Initialize a gl_array_object's arrays. */ void -_mesa_initialize_array_object( GLcontext *ctx, +_mesa_initialize_array_object( struct gl_context *ctx, struct gl_array_object *obj, GLuint name ) { @@ -253,7 +253,7 @@ _mesa_initialize_array_object( GLcontext *ctx, * Add the given array object to the array object pool. */ static void -save_array_object( GLcontext *ctx, struct gl_array_object *obj ) +save_array_object( struct gl_context *ctx, struct gl_array_object *obj ) { if (obj->Name > 0) { /* insert into hash table */ @@ -267,7 +267,7 @@ save_array_object( GLcontext *ctx, struct gl_array_object *obj ) * Do not deallocate the array object though. */ static void -remove_array_object( GLcontext *ctx, struct gl_array_object *obj ) +remove_array_object( struct gl_context *ctx, struct gl_array_object *obj ) { if (obj->Name > 0) { /* remove from hash table */ @@ -327,7 +327,7 @@ update_min(GLuint min, struct gl_client_array *array) * Examine vertex arrays to update the gl_array_object::_MaxElement field. */ void -_mesa_update_array_object_max_element(GLcontext *ctx, +_mesa_update_array_object_max_element(struct gl_context *ctx, struct gl_array_object *arrayObj) { GLuint i, min = ~0; @@ -364,7 +364,7 @@ _mesa_update_array_object_max_element(GLcontext *ctx, * glGenVertexArrays(). */ static void -bind_vertex_array(GLcontext *ctx, GLuint id, GLboolean genRequired) +bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired) { struct gl_array_object * const oldObj = ctx->Array.ArrayObj; struct gl_array_object *newObj = NULL; @@ -495,7 +495,7 @@ _mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids) * \param vboOnly Will arrays have to reside in VBOs? */ static void -gen_vertex_arrays(GLcontext *ctx, GLsizei n, GLuint *arrays, GLboolean vboOnly) +gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays, GLboolean vboOnly) { GLuint first; GLint i; diff --git a/src/mesa/main/arrayobj.h b/src/mesa/main/arrayobj.h index fdf7e2bca46..26e3af19c91 100644 --- a/src/mesa/main/arrayobj.h +++ b/src/mesa/main/arrayobj.h @@ -43,23 +43,23 @@ */ extern struct gl_array_object * -_mesa_new_array_object( GLcontext *ctx, GLuint name ); +_mesa_new_array_object( struct gl_context *ctx, GLuint name ); extern void -_mesa_delete_array_object( GLcontext *ctx, struct gl_array_object *obj ); +_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj ); extern void -_mesa_reference_array_object(GLcontext *ctx, +_mesa_reference_array_object(struct gl_context *ctx, struct gl_array_object **ptr, struct gl_array_object *arrayObj); extern void -_mesa_initialize_array_object( GLcontext *ctx, +_mesa_initialize_array_object( struct gl_context *ctx, struct gl_array_object *obj, GLuint name ); extern void -_mesa_update_array_object_max_element(GLcontext *ctx, +_mesa_update_array_object_max_element(struct gl_context *ctx, struct gl_array_object *arrayObj); diff --git a/src/mesa/main/atifragshader.c b/src/mesa/main/atifragshader.c index 550f50b7a00..ae2feb3229a 100644 --- a/src/mesa/main/atifragshader.c +++ b/src/mesa/main/atifragshader.c @@ -62,7 +62,7 @@ _mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp) * Allocate and initialize a new ATI fragment shader object. */ struct ati_fragment_shader * -_mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id) +_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id) { struct ati_fragment_shader *s = CALLOC_STRUCT(ati_fragment_shader); (void) ctx; @@ -78,7 +78,7 @@ _mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id) * Delete the given ati fragment shader */ void -_mesa_delete_ati_fragment_shader(GLcontext *ctx, struct ati_fragment_shader *s) +_mesa_delete_ati_fragment_shader(struct gl_context *ctx, struct ati_fragment_shader *s) { GLuint i; for (i = 0; i < MAX_NUM_PASSES_ATI; i++) { diff --git a/src/mesa/main/atifragshader.h b/src/mesa/main/atifragshader.h index 31c335ec815..6911bba5aee 100644 --- a/src/mesa/main/atifragshader.h +++ b/src/mesa/main/atifragshader.h @@ -66,10 +66,10 @@ extern void _mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp); extern struct ati_fragment_shader * -_mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id); +_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id); extern void -_mesa_delete_ati_fragment_shader(GLcontext *ctx, +_mesa_delete_ati_fragment_shader(struct gl_context *ctx, struct ati_fragment_shader *s); @@ -133,13 +133,13 @@ _mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp) } static INLINE struct ati_fragment_shader * -_mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id) +_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id) { return NULL; } static INLINE void -_mesa_delete_ati_fragment_shader(GLcontext *ctx, +_mesa_delete_ati_fragment_shader(struct gl_context *ctx, struct ati_fragment_shader *s) { } diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index 0299525f46b..fb6fbe5b6db 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -473,7 +473,7 @@ end: static void -pop_enable_group(GLcontext *ctx, const struct gl_enable_attrib *enable) +pop_enable_group(struct gl_context *ctx, const struct gl_enable_attrib *enable) { const GLuint curTexUnitSave = ctx->Texture.CurrentUnit; GLuint i; @@ -669,7 +669,7 @@ pop_enable_group(GLcontext *ctx, const struct gl_enable_attrib *enable) * Pop/restore texture attribute/group state. */ static void -pop_texture_group(GLcontext *ctx, struct texture_state *texstate) +pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) { GLuint u; @@ -1323,7 +1323,7 @@ adjust_buffer_object_ref_counts(struct gl_array_object *arrayObj, GLint step) * object refcounts. */ static void -copy_pixelstore(GLcontext *ctx, +copy_pixelstore(struct gl_context *ctx, struct gl_pixelstore_attrib *dst, const struct gl_pixelstore_attrib *src) { @@ -1506,7 +1506,7 @@ _mesa_init_attrib_dispatch(struct _glapi_table *disp) * Free any attribute state data that might be attached to the context. */ void -_mesa_free_attrib_data(GLcontext *ctx) +_mesa_free_attrib_data(struct gl_context *ctx) { while (ctx->AttribStackDepth > 0) { struct gl_attrib_node *attr, *next; @@ -1538,7 +1538,7 @@ _mesa_free_attrib_data(GLcontext *ctx) } -void _mesa_init_attrib( GLcontext *ctx ) +void _mesa_init_attrib( struct gl_context *ctx ) { /* Renderer and client attribute stacks */ ctx->AttribStackDepth = 0; diff --git a/src/mesa/main/attrib.h b/src/mesa/main/attrib.h index 83b28a65b77..777781bdf0d 100644 --- a/src/mesa/main/attrib.h +++ b/src/mesa/main/attrib.h @@ -70,9 +70,9 @@ _mesa_init_attrib_dispatch(struct _glapi_table *disp) #endif /* FEATURE_attrib_stack */ extern void -_mesa_init_attrib( GLcontext *ctx ); +_mesa_init_attrib( struct gl_context *ctx ); extern void -_mesa_free_attrib_data( GLcontext *ctx ); +_mesa_free_attrib_data( struct gl_context *ctx ); #endif /* ATTRIB_H */ diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c index 736a94c052a..ec778b7244d 100644 --- a/src/mesa/main/blend.c +++ b/src/mesa/main/blend.c @@ -207,7 +207,7 @@ _mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB, #if _HAVE_FULL_GL static GLboolean -_mesa_validate_blend_equation( GLcontext *ctx, +_mesa_validate_blend_equation( struct gl_context *ctx, GLenum mode, GLboolean is_separate ) { switch (mode) { @@ -589,9 +589,9 @@ _mesa_ClampColorARB(GLenum target, GLenum clamp) * \param ctx GL context. * * Initializes the related fields in the context color attribute group, - * __GLcontextRec::Color. + * __struct gl_contextRec::Color. */ -void _mesa_init_color( GLcontext * ctx ) +void _mesa_init_color( struct gl_context * ctx ) { /* Color buffer group */ ctx->Color.IndexMask = ~0u; diff --git a/src/mesa/main/blend.h b/src/mesa/main/blend.h index b4fd7470ebe..677b01cc9fc 100644 --- a/src/mesa/main/blend.h +++ b/src/mesa/main/blend.h @@ -82,6 +82,6 @@ _mesa_ClampColorARB(GLenum target, GLenum clamp); extern void -_mesa_init_color( GLcontext * ctx ); +_mesa_init_color( struct gl_context * ctx ); #endif diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 61d46b936b2..0a68008a100 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -62,7 +62,7 @@ * specified context or \c NULL if \c target is invalid. */ static INLINE struct gl_buffer_object ** -get_buffer_target(GLcontext *ctx, GLenum target) +get_buffer_target(struct gl_context *ctx, GLenum target) { switch (target) { case GL_ARRAY_BUFFER_ARB: @@ -99,7 +99,7 @@ get_buffer_target(GLcontext *ctx, GLenum target) * specified context or \c NULL if \c target is invalid. */ static INLINE struct gl_buffer_object * -get_buffer(GLcontext *ctx, GLenum target) +get_buffer(struct gl_context *ctx, GLenum target) { struct gl_buffer_object **bufObj = get_buffer_target(ctx, target); if (bufObj) @@ -143,7 +143,7 @@ simplified_access_mode(GLbitfield access) * \sa glBufferSubDataARB, glGetBufferSubDataARB */ static struct gl_buffer_object * -buffer_object_subdata_range_good( GLcontext * ctx, GLenum target, +buffer_object_subdata_range_good( struct gl_context * ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, const char *caller ) { @@ -189,7 +189,7 @@ buffer_object_subdata_range_good( GLcontext * ctx, GLenum target, * Default callback for the \c dd_function_table::NewBufferObject() hook. */ static struct gl_buffer_object * -_mesa_new_buffer_object( GLcontext *ctx, GLuint name, GLenum target ) +_mesa_new_buffer_object( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_buffer_object *obj; @@ -207,7 +207,7 @@ _mesa_new_buffer_object( GLcontext *ctx, GLuint name, GLenum target ) * Default callback for the \c dd_function_table::DeleteBuffer() hook. */ static void -_mesa_delete_buffer_object( GLcontext *ctx, struct gl_buffer_object *bufObj ) +_mesa_delete_buffer_object( struct gl_context *ctx, struct gl_buffer_object *bufObj ) { (void) ctx; @@ -228,7 +228,7 @@ _mesa_delete_buffer_object( GLcontext *ctx, struct gl_buffer_object *bufObj ) * Set ptr to bufObj w/ reference counting. */ void -_mesa_reference_buffer_object(GLcontext *ctx, +_mesa_reference_buffer_object(struct gl_context *ctx, struct gl_buffer_object **ptr, struct gl_buffer_object *bufObj) { @@ -328,7 +328,7 @@ _mesa_initialize_buffer_object( struct gl_buffer_object *obj, * \sa glBufferDataARB, dd_function_table::BufferData. */ static GLboolean -_mesa_buffer_data( GLcontext *ctx, GLenum target, GLsizeiptrARB size, +_mesa_buffer_data( struct gl_context *ctx, GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage, struct gl_buffer_object * bufObj ) { @@ -372,7 +372,7 @@ _mesa_buffer_data( GLcontext *ctx, GLenum target, GLsizeiptrARB size, * \sa glBufferSubDataARB, dd_function_table::BufferSubData. */ static void -_mesa_buffer_subdata( GLcontext *ctx, GLenum target, GLintptrARB offset, +_mesa_buffer_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data, struct gl_buffer_object * bufObj ) { @@ -405,7 +405,7 @@ _mesa_buffer_subdata( GLcontext *ctx, GLenum target, GLintptrARB offset, * \sa glBufferGetSubDataARB, dd_function_table::GetBufferSubData. */ static void -_mesa_buffer_get_subdata( GLcontext *ctx, GLenum target, GLintptrARB offset, +_mesa_buffer_get_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data, struct gl_buffer_object * bufObj ) { @@ -432,7 +432,7 @@ _mesa_buffer_get_subdata( GLcontext *ctx, GLenum target, GLintptrARB offset, * \sa glMapBufferARB, dd_function_table::MapBuffer */ static void * -_mesa_buffer_map( GLcontext *ctx, GLenum target, GLenum access, +_mesa_buffer_map( struct gl_context *ctx, GLenum target, GLenum access, struct gl_buffer_object *bufObj ) { (void) ctx; @@ -455,7 +455,7 @@ _mesa_buffer_map( GLcontext *ctx, GLenum target, GLenum access, * Called via glMapBufferRange(). */ static void * -_mesa_buffer_map_range( GLcontext *ctx, GLenum target, GLintptr offset, +_mesa_buffer_map_range( struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, struct gl_buffer_object *bufObj ) { @@ -476,7 +476,7 @@ _mesa_buffer_map_range( GLcontext *ctx, GLenum target, GLintptr offset, * Called via glFlushMappedBufferRange(). */ static void -_mesa_buffer_flush_mapped_range( GLcontext *ctx, GLenum target, +_mesa_buffer_flush_mapped_range( struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, struct gl_buffer_object *obj ) { @@ -497,7 +497,7 @@ _mesa_buffer_flush_mapped_range( GLcontext *ctx, GLenum target, * \sa glUnmapBufferARB, dd_function_table::UnmapBuffer */ static GLboolean -_mesa_buffer_unmap( GLcontext *ctx, GLenum target, +_mesa_buffer_unmap( struct gl_context *ctx, GLenum target, struct gl_buffer_object *bufObj ) { (void) ctx; @@ -516,7 +516,7 @@ _mesa_buffer_unmap( GLcontext *ctx, GLenum target, * Called via glCopyBuffserSubData(). */ static void -_mesa_copy_buffer_subdata(GLcontext *ctx, +_mesa_copy_buffer_subdata(struct gl_context *ctx, struct gl_buffer_object *src, struct gl_buffer_object *dst, GLintptr readOffset, GLintptr writeOffset, @@ -546,7 +546,7 @@ _mesa_copy_buffer_subdata(GLcontext *ctx, * Initialize the state associated with buffer objects */ void -_mesa_init_buffer_objects( GLcontext *ctx ) +_mesa_init_buffer_objects( struct gl_context *ctx ) { _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, ctx->Shared->NullBufferObj); @@ -561,7 +561,7 @@ _mesa_init_buffer_objects( GLcontext *ctx ) void -_mesa_free_buffer_objects( GLcontext *ctx ) +_mesa_free_buffer_objects( struct gl_context *ctx ) { _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, NULL); _mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj, NULL); @@ -576,7 +576,7 @@ _mesa_free_buffer_objects( GLcontext *ctx ) * Called by glBindBuffer() and other functions. */ static void -bind_buffer_object(GLcontext *ctx, GLenum target, GLuint buffer) +bind_buffer_object(struct gl_context *ctx, GLenum target, GLuint buffer) { struct gl_buffer_object *oldBufObj; struct gl_buffer_object *newBufObj = NULL; @@ -632,7 +632,7 @@ bind_buffer_object(GLcontext *ctx, GLenum target, GLuint buffer) * shared state. */ void -_mesa_update_default_objects_buffer_objects(GLcontext *ctx) +_mesa_update_default_objects_buffer_objects(struct gl_context *ctx) { /* Bind the NullBufferObj to remove references to those * in the shared context hash table. @@ -716,7 +716,7 @@ _mesa_validate_pbo_access(GLuint dimensions, * \return NULL if error, else pointer to start of data */ const GLvoid * -_mesa_map_pbo_source(GLcontext *ctx, +_mesa_map_pbo_source(struct gl_context *ctx, const struct gl_pixelstore_attrib *unpack, const GLvoid *src) { @@ -750,7 +750,7 @@ _mesa_map_pbo_source(GLcontext *ctx, * _mesa_unmap_pbo_source(). */ const GLvoid * -_mesa_map_validate_pbo_source(GLcontext *ctx, +_mesa_map_validate_pbo_source(struct gl_context *ctx, GLuint dimensions, const struct gl_pixelstore_attrib *unpack, GLsizei width, GLsizei height, GLsizei depth, @@ -786,7 +786,7 @@ _mesa_map_validate_pbo_source(GLcontext *ctx, * Counterpart to _mesa_map_pbo_source() */ void -_mesa_unmap_pbo_source(GLcontext *ctx, +_mesa_unmap_pbo_source(struct gl_context *ctx, const struct gl_pixelstore_attrib *unpack) { ASSERT(unpack != &ctx->Pack); /* catch pack/unpack mismatch */ @@ -806,7 +806,7 @@ _mesa_unmap_pbo_source(GLcontext *ctx, * \return NULL if error, else pointer to start of data */ void * -_mesa_map_pbo_dest(GLcontext *ctx, +_mesa_map_pbo_dest(struct gl_context *ctx, const struct gl_pixelstore_attrib *pack, GLvoid *dest) { @@ -840,7 +840,7 @@ _mesa_map_pbo_dest(GLcontext *ctx, * _mesa_unmap_pbo_dest(). */ GLvoid * -_mesa_map_validate_pbo_dest(GLcontext *ctx, +_mesa_map_validate_pbo_dest(struct gl_context *ctx, GLuint dimensions, const struct gl_pixelstore_attrib *unpack, GLsizei width, GLsizei height, GLsizei depth, @@ -876,7 +876,7 @@ _mesa_map_validate_pbo_dest(GLcontext *ctx, * Counterpart to _mesa_map_pbo_dest() */ void -_mesa_unmap_pbo_dest(GLcontext *ctx, +_mesa_unmap_pbo_dest(struct gl_context *ctx, const struct gl_pixelstore_attrib *pack) { ASSERT(pack != &ctx->Unpack); /* catch pack/unpack mismatch */ @@ -892,7 +892,7 @@ _mesa_unmap_pbo_dest(GLcontext *ctx, * Always return NULL for ID 0. */ struct gl_buffer_object * -_mesa_lookup_bufferobj(GLcontext *ctx, GLuint buffer) +_mesa_lookup_bufferobj(struct gl_context *ctx, GLuint buffer) { if (buffer == 0) return NULL; @@ -909,7 +909,7 @@ _mesa_lookup_bufferobj(GLcontext *ctx, GLuint buffer) * unbound from all arrays in the current context. */ static void -unbind(GLcontext *ctx, +unbind(struct gl_context *ctx, struct gl_buffer_object **ptr, struct gl_buffer_object *obj) { @@ -1754,7 +1754,7 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) #if FEATURE_APPLE_object_purgeable static GLenum -_mesa_BufferObjectPurgeable(GLcontext *ctx, GLuint name, GLenum option) +_mesa_BufferObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_buffer_object *bufObj; GLenum retval; @@ -1787,7 +1787,7 @@ _mesa_BufferObjectPurgeable(GLcontext *ctx, GLuint name, GLenum option) static GLenum -_mesa_RenderObjectPurgeable(GLcontext *ctx, GLuint name, GLenum option) +_mesa_RenderObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_renderbuffer *bufObj; GLenum retval; @@ -1816,7 +1816,7 @@ _mesa_RenderObjectPurgeable(GLcontext *ctx, GLuint name, GLenum option) static GLenum -_mesa_TextureObjectPurgeable(GLcontext *ctx, GLuint name, GLenum option) +_mesa_TextureObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_texture_object *bufObj; GLenum retval; @@ -1897,7 +1897,7 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) static GLenum -_mesa_BufferObjectUnpurgeable(GLcontext *ctx, GLuint name, GLenum option) +_mesa_BufferObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_buffer_object *bufObj; GLenum retval; @@ -1927,7 +1927,7 @@ _mesa_BufferObjectUnpurgeable(GLcontext *ctx, GLuint name, GLenum option) static GLenum -_mesa_RenderObjectUnpurgeable(GLcontext *ctx, GLuint name, GLenum option) +_mesa_RenderObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_renderbuffer *bufObj; GLenum retval; @@ -1957,7 +1957,7 @@ _mesa_RenderObjectUnpurgeable(GLcontext *ctx, GLuint name, GLenum option) static GLenum -_mesa_TextureObjectUnpurgeable(GLcontext *ctx, GLuint name, GLenum option) +_mesa_TextureObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_texture_object *bufObj; GLenum retval; @@ -2027,7 +2027,7 @@ _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) static void -_mesa_GetBufferObjectParameterivAPPLE(GLcontext *ctx, GLuint name, +_mesa_GetBufferObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, GLenum pname, GLint* params) { struct gl_buffer_object *bufObj; @@ -2053,7 +2053,7 @@ _mesa_GetBufferObjectParameterivAPPLE(GLcontext *ctx, GLuint name, static void -_mesa_GetRenderObjectParameterivAPPLE(GLcontext *ctx, GLuint name, +_mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, GLenum pname, GLint* params) { struct gl_renderbuffer *bufObj; @@ -2079,7 +2079,7 @@ _mesa_GetRenderObjectParameterivAPPLE(GLcontext *ctx, GLuint name, static void -_mesa_GetTextureObjectParameterivAPPLE(GLcontext *ctx, GLuint name, +_mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, GLenum pname, GLint* params) { struct gl_texture_object *bufObj; diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h index f234d06c6cc..4b97e34767e 100644 --- a/src/mesa/main/bufferobj.h +++ b/src/mesa/main/bufferobj.h @@ -57,24 +57,24 @@ _mesa_is_bufferobj(const struct gl_buffer_object *obj) extern void -_mesa_init_buffer_objects( GLcontext *ctx ); +_mesa_init_buffer_objects( struct gl_context *ctx ); extern void -_mesa_free_buffer_objects( GLcontext *ctx ); +_mesa_free_buffer_objects( struct gl_context *ctx ); extern void -_mesa_update_default_objects_buffer_objects(GLcontext *ctx); +_mesa_update_default_objects_buffer_objects(struct gl_context *ctx); extern struct gl_buffer_object * -_mesa_lookup_bufferobj(GLcontext *ctx, GLuint buffer); +_mesa_lookup_bufferobj(struct gl_context *ctx, GLuint buffer); extern void _mesa_initialize_buffer_object( struct gl_buffer_object *obj, GLuint name, GLenum target ); extern void -_mesa_reference_buffer_object(GLcontext *ctx, +_mesa_reference_buffer_object(struct gl_context *ctx, struct gl_buffer_object **ptr, struct gl_buffer_object *bufObj); @@ -85,12 +85,12 @@ _mesa_validate_pbo_access(GLuint dimensions, GLenum format, GLenum type, const GLvoid *ptr); extern const GLvoid * -_mesa_map_pbo_source(GLcontext *ctx, +_mesa_map_pbo_source(struct gl_context *ctx, const struct gl_pixelstore_attrib *unpack, const GLvoid *src); extern const GLvoid * -_mesa_map_validate_pbo_source(GLcontext *ctx, +_mesa_map_validate_pbo_source(struct gl_context *ctx, GLuint dimensions, const struct gl_pixelstore_attrib *unpack, GLsizei width, GLsizei height, GLsizei depth, @@ -98,16 +98,16 @@ _mesa_map_validate_pbo_source(GLcontext *ctx, const char *where); extern void -_mesa_unmap_pbo_source(GLcontext *ctx, +_mesa_unmap_pbo_source(struct gl_context *ctx, const struct gl_pixelstore_attrib *unpack); extern void * -_mesa_map_pbo_dest(GLcontext *ctx, +_mesa_map_pbo_dest(struct gl_context *ctx, const struct gl_pixelstore_attrib *pack, GLvoid *dest); extern GLvoid * -_mesa_map_validate_pbo_dest(GLcontext *ctx, +_mesa_map_validate_pbo_dest(struct gl_context *ctx, GLuint dimensions, const struct gl_pixelstore_attrib *unpack, GLsizei width, GLsizei height, GLsizei depth, @@ -115,7 +115,7 @@ _mesa_map_validate_pbo_dest(GLcontext *ctx, const char *where); extern void -_mesa_unmap_pbo_dest(GLcontext *ctx, +_mesa_unmap_pbo_dest(struct gl_context *ctx, const struct gl_pixelstore_attrib *pack); diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index fb30b599609..86446311fe3 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -50,7 +50,7 @@ * \return bitmask of BUFFER_BIT_* flags */ static GLbitfield -supported_buffer_bitmask(const GLcontext *ctx, const struct gl_framebuffer *fb) +supported_buffer_bitmask(const struct gl_context *ctx, const struct gl_framebuffer *fb) { GLbitfield mask = 0x0; @@ -355,7 +355,7 @@ _mesa_DrawBuffersARB(GLsizei n, const GLenum *buffers) * BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT). */ void -_mesa_drawbuffers(GLcontext *ctx, GLuint n, const GLenum *buffers, +_mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers, const GLbitfield *destMask) { struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -452,7 +452,7 @@ _mesa_drawbuffers(GLcontext *ctx, GLuint n, const GLenum *buffers, * \param bufferIndex the numerical index corresponding to 'buffer' */ void -_mesa_readbuffer(GLcontext *ctx, GLenum buffer, GLint bufferIndex) +_mesa_readbuffer(struct gl_context *ctx, GLenum buffer, GLint bufferIndex) { struct gl_framebuffer *fb = ctx->ReadBuffer; diff --git a/src/mesa/main/buffers.h b/src/mesa/main/buffers.h index 8a7e7b5c1f0..36d6c8b6608 100644 --- a/src/mesa/main/buffers.h +++ b/src/mesa/main/buffers.h @@ -43,11 +43,11 @@ extern void GLAPIENTRY _mesa_DrawBuffersARB(GLsizei n, const GLenum *buffers); extern void -_mesa_drawbuffers(GLcontext *ctx, GLuint n, const GLenum *buffers, +_mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers, const GLbitfield *destMask); extern void -_mesa_readbuffer(GLcontext *ctx, GLenum buffer, GLint bufferIndex); +_mesa_readbuffer(struct gl_context *ctx, GLenum buffer, GLint bufferIndex); extern void GLAPIENTRY _mesa_ReadBuffer( GLenum mode ); diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index 49d86b3b1f1..b011da04b46 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -100,7 +100,7 @@ _mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) * * \param mask bit-mask indicating the buffers to be cleared. * - * Flushes the vertices and verifies the parameter. If __GLcontextRec::NewState + * Flushes the vertices and verifies the parameter. If __struct gl_contextRec::NewState * is set then calls _mesa_update_state() to update gl_frame_buffer::_Xmin, * etc. If the rasterization mode is set to GL_RENDER then requests the driver * to clear the buffers, via the dd_function_table::Clear callback. @@ -191,7 +191,7 @@ _mesa_Clear( GLbitfield mask ) * Return INVALID_MASK if the drawbuffer value is invalid. */ static GLbitfield -make_color_buffer_mask(GLcontext *ctx, GLint drawbuffer) +make_color_buffer_mask(struct gl_context *ctx, GLint drawbuffer) { const struct gl_renderbuffer_attachment *att = ctx->DrawBuffer->Attachment; GLbitfield mask = 0x0; diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c index 5c2697d40af..6295dc88dee 100644 --- a/src/mesa/main/colortab.c +++ b/src/mesa/main/colortab.c @@ -176,7 +176,7 @@ set_component_sizes( struct gl_color_table *table ) * \param [rgba]Bias - RGBA bias factors */ static void -store_colortable_entries(GLcontext *ctx, struct gl_color_table *table, +store_colortable_entries(struct gl_context *ctx, struct gl_color_table *table, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data, GLfloat rScale, GLfloat rBias, diff --git a/src/mesa/main/condrender.c b/src/mesa/main/condrender.c index 8d9a91d5478..25b3dd678dc 100644 --- a/src/mesa/main/condrender.c +++ b/src/mesa/main/condrender.c @@ -117,7 +117,7 @@ _mesa_EndConditionalRender(void) * \return GL_TRUE if we should render, GL_FALSE if we should discard */ GLboolean -_mesa_check_conditional_render(GLcontext *ctx) +_mesa_check_conditional_render(struct gl_context *ctx) { struct gl_query_object *q = ctx->Query.CondRenderQuery; diff --git a/src/mesa/main/condrender.h b/src/mesa/main/condrender.h index d55e9805fe9..cf6d4ca2893 100644 --- a/src/mesa/main/condrender.h +++ b/src/mesa/main/condrender.h @@ -39,7 +39,7 @@ extern void APIENTRY _mesa_EndConditionalRender(void); extern GLboolean -_mesa_check_conditional_render(GLcontext *ctx); +_mesa_check_conditional_render(struct gl_context *ctx); #endif /* CONDRENDER_H */ diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 0ecbea2c514..41f30cae43c 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -163,7 +163,7 @@ GLfloat _mesa_ubyte_to_float_color_tab[256]; * We have to finish any pending rendering. */ void -_mesa_notifySwapBuffers(GLcontext *ctx) +_mesa_notifySwapBuffers(struct gl_context *ctx) { if (MESA_VERBOSE & VERBOSE_SWAPBUFFERS) _mesa_debug(ctx, "SwapBuffers\n"); @@ -377,7 +377,7 @@ _glthread_DECLARE_STATIC_MUTEX(OneTimeLock); * \sa _math_init(). */ static void -one_time_init( GLcontext *ctx ) +one_time_init( struct gl_context *ctx ) { static GLboolean alreadyCalled = GL_FALSE; (void) ctx; @@ -444,7 +444,7 @@ one_time_init( GLcontext *ctx ) * Initialize fields of gl_current_attrib (aka ctx->Current.*) */ static void -_mesa_init_current(GLcontext *ctx) +_mesa_init_current(struct gl_context *ctx) { GLuint i; @@ -526,7 +526,7 @@ init_program_limits(GLenum type, struct gl_program_constants *prog) * some of these values (such as number of texture units). */ static void -_mesa_init_constants(GLcontext *ctx) +_mesa_init_constants(struct gl_context *ctx) { assert(ctx); @@ -632,7 +632,7 @@ _mesa_init_constants(GLcontext *ctx) * Only called the first time a context is bound. */ static void -check_context_limits(GLcontext *ctx) +check_context_limits(struct gl_context *ctx) { /* check that we don't exceed the size of various bitfields */ assert(VERT_RESULT_MAX <= @@ -707,7 +707,7 @@ check_context_limits(GLcontext *ctx) * functions for the more complex data structures. */ static GLboolean -init_attrib_groups(GLcontext *ctx) +init_attrib_groups(struct gl_context *ctx) { assert(ctx); @@ -775,7 +775,7 @@ init_attrib_groups(GLcontext *ctx) * state. */ static GLboolean -update_default_objects(GLcontext *ctx) +update_default_objects(struct gl_context *ctx) { assert(ctx); @@ -827,7 +827,7 @@ _mesa_alloc_dispatch_table(int size) /** - * Initialize a GLcontext struct (rendering context). + * Initialize a struct gl_context struct (rendering context). * * This includes allocating all the other structs and arrays which hang off of * the context by pointers. @@ -854,10 +854,10 @@ _mesa_alloc_dispatch_table(int size) * \param driverContext pointer to driver-specific context data */ GLboolean -_mesa_initialize_context_for_api(GLcontext *ctx, +_mesa_initialize_context_for_api(struct gl_context *ctx, gl_api api, const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext) { @@ -993,9 +993,9 @@ _mesa_initialize_context_for_api(GLcontext *ctx, } GLboolean -_mesa_initialize_context(GLcontext *ctx, +_mesa_initialize_context(struct gl_context *ctx, const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext) { @@ -1008,7 +1008,7 @@ _mesa_initialize_context(GLcontext *ctx, } /** - * Allocate and initialize a GLcontext structure. + * Allocate and initialize a struct gl_context structure. * Note that the driver needs to pass in its dd_function_table here since * we need to at least call driverFunctions->NewTextureObject to initialize * the rendering context. @@ -1020,21 +1020,21 @@ _mesa_initialize_context(GLcontext *ctx, * driver has plugged in all its special functions. * \param driverContext points to the device driver's private context state * - * \return pointer to a new __GLcontextRec or NULL if error. + * \return pointer to a new __struct gl_contextRec or NULL if error. */ -GLcontext * +struct gl_context * _mesa_create_context_for_api(gl_api api, const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext) { - GLcontext *ctx; + struct gl_context *ctx; ASSERT(visual); /*ASSERT(driverContext);*/ - ctx = (GLcontext *) calloc(1, sizeof(GLcontext)); + ctx = (struct gl_context *) calloc(1, sizeof(struct gl_context)); if (!ctx) return NULL; @@ -1048,9 +1048,9 @@ _mesa_create_context_for_api(gl_api api, } } -GLcontext * +struct gl_context * _mesa_create_context(const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext) { @@ -1063,12 +1063,12 @@ _mesa_create_context(const struct gl_config *visual, /** * Free the data associated with the given context. * - * But doesn't free the GLcontext struct itself. + * But doesn't free the struct gl_context struct itself. * * \sa _mesa_initialize_context() and init_attrib_groups(). */ void -_mesa_free_context_data( GLcontext *ctx ) +_mesa_free_context_data( struct gl_context *ctx ) { if (!_mesa_get_current_context()){ /* No current context, but we may need one in order to delete @@ -1142,14 +1142,14 @@ _mesa_free_context_data( GLcontext *ctx ) /** - * Destroy a GLcontext structure. + * Destroy a struct gl_context structure. * * \param ctx GL context. * - * Calls _mesa_free_context_data() and frees the GLcontext structure itself. + * Calls _mesa_free_context_data() and frees the struct gl_context structure itself. */ void -_mesa_destroy_context( GLcontext *ctx ) +_mesa_destroy_context( struct gl_context *ctx ) { if (ctx) { _mesa_free_context_data(ctx); @@ -1172,7 +1172,7 @@ _mesa_destroy_context( GLcontext *ctx ) * structures. */ void -_mesa_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask ) +_mesa_copy_context( const struct gl_context *src, struct gl_context *dst, GLuint mask ) { if (mask & GL_ACCUM_BUFFER_BIT) { /* OK to memcpy */ @@ -1291,7 +1291,7 @@ _mesa_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask ) * \return GL_TRUE if compatible, GL_FALSE otherwise. */ static GLboolean -check_compatible(const GLcontext *ctx, const struct gl_framebuffer *buffer) +check_compatible(const struct gl_context *ctx, const struct gl_framebuffer *buffer) { const struct gl_config *ctxvis = &ctx->Visual; const struct gl_config *bufvis = &buffer->Visual; @@ -1340,7 +1340,7 @@ check_compatible(const GLcontext *ctx, const struct gl_framebuffer *buffer) * Really, the device driver should totally take care of this. */ static void -initialize_framebuffer_size(GLcontext *ctx, struct gl_framebuffer *fb) +initialize_framebuffer_size(struct gl_context *ctx, struct gl_framebuffer *fb) { GLuint width, height; if (ctx->Driver.GetBufferSize) { @@ -1357,7 +1357,7 @@ initialize_framebuffer_size(GLcontext *ctx, struct gl_framebuffer *fb) * Initialize the size if the given width and height are non-zero. */ void -_mesa_check_init_viewport(GLcontext *ctx, GLuint width, GLuint height) +_mesa_check_init_viewport(struct gl_context *ctx, GLuint width, GLuint height) { if (!ctx->ViewportInitialized && width > 0 && height > 0) { /* Note: set flag here, before calling _mesa_set_viewport(), to prevent @@ -1385,7 +1385,7 @@ _mesa_check_init_viewport(GLcontext *ctx, GLuint width, GLuint height) * \param readBuffer the reading framebuffer */ GLboolean -_mesa_make_current( GLcontext *newCtx, struct gl_framebuffer *drawBuffer, +_mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer, struct gl_framebuffer *readBuffer ) { if (MESA_VERBOSE & VERBOSE_API) @@ -1524,7 +1524,7 @@ _mesa_make_current( GLcontext *newCtx, struct gl_framebuffer *drawBuffer, * be deleted if nobody else is sharing them. */ GLboolean -_mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare) +_mesa_share_state(struct gl_context *ctx, struct gl_context *ctxToShare) { if (ctx && ctxToShare && ctx->Shared && ctxToShare->Shared) { struct gl_shared_state *oldSharedState = ctx->Shared; @@ -1555,10 +1555,10 @@ _mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare) * context. If you need speed, see the #GET_CURRENT_CONTEXT macro in * context.h. */ -GLcontext * +struct gl_context * _mesa_get_current_context( void ) { - return (GLcontext *) _glapi_get_context(); + return (struct gl_context *) _glapi_get_context(); } @@ -1572,10 +1572,10 @@ _mesa_get_current_context( void ) * * \return pointer to dispatch_table. * - * Simply returns __GLcontextRec::CurrentDispatch. + * Simply returns __struct gl_contextRec::CurrentDispatch. */ struct _glapi_table * -_mesa_get_dispatch(GLcontext *ctx) +_mesa_get_dispatch(struct gl_context *ctx) { return ctx->CurrentDispatch; } @@ -1601,7 +1601,7 @@ _mesa_get_dispatch(GLcontext *ctx) * This is called via _mesa_error(). */ void -_mesa_record_error(GLcontext *ctx, GLenum error) +_mesa_record_error(struct gl_context *ctx, GLenum error) { if (!ctx) return; @@ -1621,7 +1621,7 @@ _mesa_record_error(GLcontext *ctx, GLenum error) * Flush commands and wait for completion. */ void -_mesa_finish(GLcontext *ctx) +_mesa_finish(struct gl_context *ctx) { FLUSH_CURRENT( ctx, 0 ); if (ctx->Driver.Finish) { @@ -1634,7 +1634,7 @@ _mesa_finish(GLcontext *ctx) * Flush commands. */ void -_mesa_flush(GLcontext *ctx) +_mesa_flush(struct gl_context *ctx) { FLUSH_CURRENT( ctx, 0 ); if (ctx->Driver.Flush) { @@ -1680,7 +1680,7 @@ _mesa_Flush(void) * Otherwise we default to MUL/MAD. */ void -_mesa_set_mvp_with_dp4( GLcontext *ctx, +_mesa_set_mvp_with_dp4( struct gl_context *ctx, GLboolean flag ) { ctx->mvp_with_dp4 = flag; @@ -1696,7 +1696,7 @@ _mesa_set_mvp_with_dp4( GLcontext *ctx, * \return GL_TRUE if OK to render, GL_FALSE if not */ GLboolean -_mesa_valid_to_render(GLcontext *ctx, const char *where) +_mesa_valid_to_render(struct gl_context *ctx, const char *where) { bool vert_from_glsl_shader = false; bool geom_from_glsl_shader = false; diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index d89ae36a5c3..42d98a33a8d 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -29,7 +29,7 @@ * * There are three large Mesa data types/classes which are meant to be * used by device drivers: - * - GLcontext: this contains the Mesa rendering state + * - struct gl_context: this contains the Mesa rendering state * - struct gl_config: this describes the color buffer (RGB vs. ci), whether or not * there's a depth buffer, stencil buffer, etc. * - struct gl_framebuffer: contains pointers to the depth buffer, stencil buffer, @@ -38,7 +38,7 @@ * These types should be encapsulated by corresponding device driver * data types. See xmesa.h and xmesaP.h for an example. * - * In OOP terms, GLcontext, struct gl_config, and struct gl_framebuffer are base classes + * In OOP terms, struct gl_context, struct gl_config, and struct gl_framebuffer are base classes * which the device driver must derive from. * * The following functions create and destroy these data types. @@ -99,78 +99,78 @@ _mesa_destroy_visual( struct gl_config *vis ); /** \name Context-related functions */ /*@{*/ -extern GLcontext * +extern struct gl_context * _mesa_create_context( const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext ); extern GLboolean -_mesa_initialize_context( GLcontext *ctx, +_mesa_initialize_context( struct gl_context *ctx, const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext ); -extern GLcontext * +extern struct gl_context * _mesa_create_context_for_api(gl_api api, const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext); extern GLboolean -_mesa_initialize_context_for_api(GLcontext *ctx, +_mesa_initialize_context_for_api(struct gl_context *ctx, gl_api api, const struct gl_config *visual, - GLcontext *share_list, + struct gl_context *share_list, const struct dd_function_table *driverFunctions, void *driverContext); extern void -_mesa_free_context_data( GLcontext *ctx ); +_mesa_free_context_data( struct gl_context *ctx ); extern void -_mesa_destroy_context( GLcontext *ctx ); +_mesa_destroy_context( struct gl_context *ctx ); extern void -_mesa_copy_context(const GLcontext *src, GLcontext *dst, GLuint mask); +_mesa_copy_context(const struct gl_context *src, struct gl_context *dst, GLuint mask); extern void -_mesa_check_init_viewport(GLcontext *ctx, GLuint width, GLuint height); +_mesa_check_init_viewport(struct gl_context *ctx, GLuint width, GLuint height); extern GLboolean -_mesa_make_current( GLcontext *ctx, struct gl_framebuffer *drawBuffer, +_mesa_make_current( struct gl_context *ctx, struct gl_framebuffer *drawBuffer, struct gl_framebuffer *readBuffer ); extern GLboolean -_mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare); +_mesa_share_state(struct gl_context *ctx, struct gl_context *ctxToShare); -extern GLcontext * +extern struct gl_context * _mesa_get_current_context(void); /*@}*/ extern void -_mesa_init_get_hash(GLcontext *ctx); +_mesa_init_get_hash(struct gl_context *ctx); extern void -_mesa_notifySwapBuffers(GLcontext *gc); +_mesa_notifySwapBuffers(struct gl_context *gc); extern struct _glapi_table * -_mesa_get_dispatch(GLcontext *ctx); +_mesa_get_dispatch(struct gl_context *ctx); void -_mesa_set_mvp_with_dp4( GLcontext *ctx, +_mesa_set_mvp_with_dp4( struct gl_context *ctx, GLboolean flag ); extern GLboolean -_mesa_valid_to_render(GLcontext *ctx, const char *where); +_mesa_valid_to_render(struct gl_context *ctx, const char *where); @@ -178,14 +178,14 @@ _mesa_valid_to_render(GLcontext *ctx, const char *where); /*@{*/ extern void -_mesa_record_error( GLcontext *ctx, GLenum error ); +_mesa_record_error( struct gl_context *ctx, GLenum error ); extern void -_mesa_finish(GLcontext *ctx); +_mesa_finish(struct gl_context *ctx); extern void -_mesa_flush(GLcontext *ctx); +_mesa_flush(struct gl_context *ctx); extern void GLAPIENTRY @@ -211,7 +211,7 @@ _mesa_Flush( void ); * * Checks if dd_function_table::NeedFlush is marked to flush stored vertices, * and calls dd_function_table::FlushVertices if so. Marks - * __GLcontextRec::NewState with \p newstate. + * __struct gl_contextRec::NewState with \p newstate. */ #define FLUSH_VERTICES(ctx, newstate) \ do { \ @@ -230,7 +230,7 @@ do { \ * * Checks if dd_function_table::NeedFlush is marked to flush current state, * and calls dd_function_table::FlushVertices if so. Marks - * __GLcontextRec::NewState with \p newstate. + * __struct gl_contextRec::NewState with \p newstate. */ #define FLUSH_CURRENT(ctx, newstate) \ do { \ diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 01ad2903df7..c9f0facdaff 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -70,7 +70,7 @@ struct dd_function_table { * Only the GL_RENDERER query must be implemented. Otherwise, NULL can be * returned. */ - const GLubyte * (*GetString)( GLcontext *ctx, GLenum name ); + const GLubyte * (*GetString)( struct gl_context *ctx, GLenum name ); /** * Notify the driver after Mesa has made some internal state changes. @@ -78,7 +78,7 @@ struct dd_function_table { * This is in addition to any state change callbacks Mesa may already have * made. */ - void (*UpdateState)( GLcontext *ctx, GLbitfield new_state ); + void (*UpdateState)( struct gl_context *ctx, GLbitfield new_state ); /** * Get the width and height of the named buffer/window. @@ -93,42 +93,42 @@ struct dd_function_table { * Resize the given framebuffer to the given size. * XXX OBSOLETE: this function will be removed in the future. */ - void (*ResizeBuffers)( GLcontext *ctx, struct gl_framebuffer *fb, + void (*ResizeBuffers)( struct gl_context *ctx, struct gl_framebuffer *fb, GLuint width, GLuint height); /** * Called whenever an error is generated. - * __GLcontextRec::ErrorValue contains the error value. + * __struct gl_contextRec::ErrorValue contains the error value. */ - void (*Error)( GLcontext *ctx ); + void (*Error)( struct gl_context *ctx ); /** * This is called whenever glFinish() is called. */ - void (*Finish)( GLcontext *ctx ); + void (*Finish)( struct gl_context *ctx ); /** * This is called whenever glFlush() is called. */ - void (*Flush)( GLcontext *ctx ); + void (*Flush)( struct gl_context *ctx ); /** * Clear the color/depth/stencil/accum buffer(s). * \param buffers a bitmask of BUFFER_BIT_* flags indicating which * renderbuffers need to be cleared. */ - void (*Clear)( GLcontext *ctx, GLbitfield buffers ); + void (*Clear)( struct gl_context *ctx, GLbitfield buffers ); /** * Execute glAccum command. */ - void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value ); + void (*Accum)( struct gl_context *ctx, GLenum op, GLfloat value ); /** * Execute glRasterPos, updating the ctx->Current.Raster fields */ - void (*RasterPos)( GLcontext *ctx, const GLfloat v[4] ); + void (*RasterPos)( struct gl_context *ctx, const GLfloat v[4] ); /** * \name Image-related functions @@ -139,7 +139,7 @@ struct dd_function_table { * Called by glDrawPixels(). * \p unpack describes how to unpack the source image data. */ - void (*DrawPixels)( GLcontext *ctx, + void (*DrawPixels)( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -148,7 +148,7 @@ struct dd_function_table { /** * Called by glReadPixels(). */ - void (*ReadPixels)( GLcontext *ctx, + void (*ReadPixels)( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -157,14 +157,14 @@ struct dd_function_table { /** * Called by glCopyPixels(). */ - void (*CopyPixels)( GLcontext *ctx, GLint srcx, GLint srcy, + void (*CopyPixels)( struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type ); /** * Called by glBitmap(). */ - void (*Bitmap)( GLcontext *ctx, + void (*Bitmap)( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ); @@ -183,7 +183,7 @@ struct dd_function_table { * functions. The driver should examine \p internalFormat and return a * gl_format value. */ - GLuint (*ChooseTextureFormat)( GLcontext *ctx, GLint internalFormat, + GLuint (*ChooseTextureFormat)( struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType ); /** @@ -203,7 +203,7 @@ struct dd_function_table { * * Drivers should call a fallback routine from texstore.c if needed. */ - void (*TexImage1D)( GLcontext *ctx, GLenum target, GLint level, + void (*TexImage1D)( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -216,7 +216,7 @@ struct dd_function_table { * * \sa dd_function_table::TexImage1D. */ - void (*TexImage2D)( GLcontext *ctx, GLenum target, GLint level, + void (*TexImage2D)( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -229,7 +229,7 @@ struct dd_function_table { * * \sa dd_function_table::TexImage1D. */ - void (*TexImage3D)( GLcontext *ctx, GLenum target, GLint level, + void (*TexImage3D)( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -258,7 +258,7 @@ struct dd_function_table { * * The driver should use a fallback routine from texstore.c if needed. */ - void (*TexSubImage1D)( GLcontext *ctx, GLenum target, GLint level, + void (*TexSubImage1D)( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, @@ -271,7 +271,7 @@ struct dd_function_table { * * \sa dd_function_table::TexSubImage1D. */ - void (*TexSubImage2D)( GLcontext *ctx, GLenum target, GLint level, + void (*TexSubImage2D)( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -285,7 +285,7 @@ struct dd_function_table { * * \sa dd_function_table::TexSubImage1D. */ - void (*TexSubImage3D)( GLcontext *ctx, GLenum target, GLint level, + void (*TexSubImage3D)( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLint depth, GLenum format, GLenum type, @@ -297,7 +297,7 @@ struct dd_function_table { /** * Called by glGetTexImage(). */ - void (*GetTexImage)( GLcontext *ctx, GLenum target, GLint level, + void (*GetTexImage)( struct gl_context *ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage ); @@ -307,7 +307,7 @@ struct dd_function_table { * * Drivers should use a fallback routine from texstore.c if needed. */ - void (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level, + void (*CopyTexImage1D)( struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border ); @@ -316,7 +316,7 @@ struct dd_function_table { * * Drivers should use a fallback routine from texstore.c if needed. */ - void (*CopyTexImage2D)( GLcontext *ctx, GLenum target, GLint level, + void (*CopyTexImage2D)( struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ); @@ -325,7 +325,7 @@ struct dd_function_table { * * Drivers should use a fallback routine from texstore.c if needed. */ - void (*CopyTexSubImage1D)( GLcontext *ctx, GLenum target, GLint level, + void (*CopyTexSubImage1D)( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); /** @@ -333,7 +333,7 @@ struct dd_function_table { * * Drivers should use a fallback routine from texstore.c if needed. */ - void (*CopyTexSubImage2D)( GLcontext *ctx, GLenum target, GLint level, + void (*CopyTexSubImage2D)( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); @@ -342,7 +342,7 @@ struct dd_function_table { * * Drivers should use a fallback routine from texstore.c if needed. */ - void (*CopyTexSubImage3D)( GLcontext *ctx, GLenum target, GLint level, + void (*CopyTexSubImage3D)( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); @@ -350,7 +350,7 @@ struct dd_function_table { /** * Called by glGenerateMipmap() or when GL_GENERATE_MIPMAP_SGIS is enabled. */ - void (*GenerateMipmap)(GLcontext *ctx, GLenum target, + void (*GenerateMipmap)(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj); /** @@ -359,7 +359,7 @@ struct dd_function_table { * * \return GL_TRUE if the proxy test passes, or GL_FALSE if the test fails. */ - GLboolean (*TestProxyTexImage)(GLcontext *ctx, GLenum target, + GLboolean (*TestProxyTexImage)(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLint width, GLint height, @@ -387,7 +387,7 @@ struct dd_function_table { * \a retainInternalCopy is returned by this function and indicates whether * core Mesa should keep an internal copy of the texture image. */ - void (*CompressedTexImage1D)( GLcontext *ctx, GLenum target, + void (*CompressedTexImage1D)( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data, @@ -398,7 +398,7 @@ struct dd_function_table { * * \sa dd_function_table::CompressedTexImage1D. */ - void (*CompressedTexImage2D)( GLcontext *ctx, GLenum target, + void (*CompressedTexImage2D)( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -409,7 +409,7 @@ struct dd_function_table { * * \sa dd_function_table::CompressedTexImage3D. */ - void (*CompressedTexImage3D)( GLcontext *ctx, GLenum target, + void (*CompressedTexImage3D)( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, @@ -434,7 +434,7 @@ struct dd_function_table { * \param texImage is the target texture image. It will have the texture \p * width, \p height, \p depth, \p border and \p internalFormat information. */ - void (*CompressedTexSubImage1D)(GLcontext *ctx, GLenum target, GLint level, + void (*CompressedTexSubImage1D)(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data, @@ -445,7 +445,7 @@ struct dd_function_table { * * \sa dd_function_table::CompressedTexImage3D. */ - void (*CompressedTexSubImage2D)(GLcontext *ctx, GLenum target, GLint level, + void (*CompressedTexSubImage2D)(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLint height, GLenum format, @@ -457,7 +457,7 @@ struct dd_function_table { * * \sa dd_function_table::CompressedTexImage3D. */ - void (*CompressedTexSubImage3D)(GLcontext *ctx, GLenum target, GLint level, + void (*CompressedTexSubImage3D)(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLint height, GLint depth, GLenum format, @@ -469,7 +469,7 @@ struct dd_function_table { /** * Called by glGetCompressedTexImage. */ - void (*GetCompressedTexImage)(GLcontext *ctx, GLenum target, GLint level, + void (*GetCompressedTexImage)(struct gl_context *ctx, GLenum target, GLint level, GLvoid *img, struct gl_texture_object *texObj, struct gl_texture_image *texImage); @@ -484,7 +484,7 @@ struct dd_function_table { /** * Called by glBindTexture(). */ - void (*BindTexture)( GLcontext *ctx, GLenum target, + void (*BindTexture)( struct gl_context *ctx, GLenum target, struct gl_texture_object *tObj ); /** @@ -492,7 +492,7 @@ struct dd_function_table { * A new gl_texture_object should be returned. The driver should * attach to it any device-specific info it needs. */ - struct gl_texture_object * (*NewTextureObject)( GLcontext *ctx, GLuint name, + struct gl_texture_object * (*NewTextureObject)( struct gl_context *ctx, GLuint name, GLenum target ); /** * Called when a texture object is about to be deallocated. @@ -500,22 +500,22 @@ struct dd_function_table { * Driver should delete the gl_texture_object object and anything * hanging off of it. */ - void (*DeleteTexture)( GLcontext *ctx, struct gl_texture_object *tObj ); + void (*DeleteTexture)( struct gl_context *ctx, struct gl_texture_object *tObj ); /** * Called to allocate a new texture image object. */ - struct gl_texture_image * (*NewTextureImage)( GLcontext *ctx ); + struct gl_texture_image * (*NewTextureImage)( struct gl_context *ctx ); /** * Called to free tImage->Data. */ - void (*FreeTexImageData)( GLcontext *ctx, struct gl_texture_image *tImage ); + void (*FreeTexImageData)( struct gl_context *ctx, struct gl_texture_image *tImage ); /** Map texture image data into user space */ - void (*MapTexture)( GLcontext *ctx, struct gl_texture_object *tObj ); + void (*MapTexture)( struct gl_context *ctx, struct gl_texture_object *tObj ); /** Unmap texture images from user space */ - void (*UnmapTexture)( GLcontext *ctx, struct gl_texture_object *tObj ); + void (*UnmapTexture)( struct gl_context *ctx, struct gl_texture_object *tObj ); /** * Note: no context argument. This function doesn't initially look @@ -533,7 +533,7 @@ struct dd_function_table { /** * Called by glAreTextureResident(). */ - GLboolean (*IsTextureResident)( GLcontext *ctx, + GLboolean (*IsTextureResident)( struct gl_context *ctx, struct gl_texture_object *t ); /** @@ -542,7 +542,7 @@ struct dd_function_table { * If \p tObj is NULL then the shared texture palette * gl_texture_object::Palette is to be updated. */ - void (*UpdateTexturePalette)( GLcontext *ctx, + void (*UpdateTexturePalette)( struct gl_context *ctx, struct gl_texture_object *tObj ); /*@}*/ @@ -551,11 +551,11 @@ struct dd_function_table { * \name Imaging functionality */ /*@{*/ - void (*CopyColorTable)( GLcontext *ctx, + void (*CopyColorTable)( struct gl_context *ctx, GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ); - void (*CopyColorSubTable)( GLcontext *ctx, + void (*CopyColorSubTable)( struct gl_context *ctx, GLenum target, GLsizei start, GLint x, GLint y, GLsizei width ); /*@}*/ @@ -566,21 +566,21 @@ struct dd_function_table { */ /*@{*/ /** Bind a vertex/fragment program */ - void (*BindProgram)(GLcontext *ctx, GLenum target, struct gl_program *prog); + void (*BindProgram)(struct gl_context *ctx, GLenum target, struct gl_program *prog); /** Allocate a new program */ - struct gl_program * (*NewProgram)(GLcontext *ctx, GLenum target, GLuint id); + struct gl_program * (*NewProgram)(struct gl_context *ctx, GLenum target, GLuint id); /** Delete a program */ - void (*DeleteProgram)(GLcontext *ctx, struct gl_program *prog); + void (*DeleteProgram)(struct gl_context *ctx, struct gl_program *prog); /** * Notify driver that a program string (and GPU code) has been specified * or modified. Return GL_TRUE or GL_FALSE to indicate if the program is * supported by the driver. */ - GLboolean (*ProgramStringNotify)(GLcontext *ctx, GLenum target, + GLboolean (*ProgramStringNotify)(struct gl_context *ctx, GLenum target, struct gl_program *prog); /** Query if program can be loaded onto hardware */ - GLboolean (*IsProgramNative)(GLcontext *ctx, GLenum target, + GLboolean (*IsProgramNative)(struct gl_context *ctx, GLenum target, struct gl_program *prog); /*@}*/ @@ -597,14 +597,14 @@ struct dd_function_table { * have CompileShader() called, so if lowering passes are done they * need to also be performed in LinkShader(). */ - GLboolean (*CompileShader)(GLcontext *ctx, struct gl_shader *shader); + GLboolean (*CompileShader)(struct gl_context *ctx, struct gl_shader *shader); /** * Called when a shader program is linked. * * This gives drivers an opportunity to clone the IR and make their * own transformations on it for the purposes of code generation. */ - GLboolean (*LinkShader)(GLcontext *ctx, struct gl_shader_program *shader); + GLboolean (*LinkShader)(struct gl_context *ctx, struct gl_shader_program *shader); /*@}*/ /** @@ -618,102 +618,102 @@ struct dd_function_table { */ /*@{*/ /** Specify the alpha test function */ - void (*AlphaFunc)(GLcontext *ctx, GLenum func, GLfloat ref); + void (*AlphaFunc)(struct gl_context *ctx, GLenum func, GLfloat ref); /** Set the blend color */ - void (*BlendColor)(GLcontext *ctx, const GLfloat color[4]); + void (*BlendColor)(struct gl_context *ctx, const GLfloat color[4]); /** Set the blend equation */ - void (*BlendEquationSeparate)(GLcontext *ctx, GLenum modeRGB, GLenum modeA); + void (*BlendEquationSeparate)(struct gl_context *ctx, GLenum modeRGB, GLenum modeA); /** Specify pixel arithmetic */ - void (*BlendFuncSeparate)(GLcontext *ctx, + void (*BlendFuncSeparate)(struct gl_context *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA); /** Specify clear values for the color buffers */ - void (*ClearColor)(GLcontext *ctx, const GLfloat color[4]); + void (*ClearColor)(struct gl_context *ctx, const GLfloat color[4]); /** Specify the clear value for the depth buffer */ - void (*ClearDepth)(GLcontext *ctx, GLclampd d); + void (*ClearDepth)(struct gl_context *ctx, GLclampd d); /** Specify the clear value for the stencil buffer */ - void (*ClearStencil)(GLcontext *ctx, GLint s); + void (*ClearStencil)(struct gl_context *ctx, GLint s); /** Specify a plane against which all geometry is clipped */ - void (*ClipPlane)(GLcontext *ctx, GLenum plane, const GLfloat *equation ); + void (*ClipPlane)(struct gl_context *ctx, GLenum plane, const GLfloat *equation ); /** Enable and disable writing of frame buffer color components */ - void (*ColorMask)(GLcontext *ctx, GLboolean rmask, GLboolean gmask, + void (*ColorMask)(struct gl_context *ctx, GLboolean rmask, GLboolean gmask, GLboolean bmask, GLboolean amask ); - void (*ColorMaskIndexed)(GLcontext *ctx, GLuint buf, GLboolean rmask, + void (*ColorMaskIndexed)(struct gl_context *ctx, GLuint buf, GLboolean rmask, GLboolean gmask, GLboolean bmask, GLboolean amask); /** Cause a material color to track the current color */ - void (*ColorMaterial)(GLcontext *ctx, GLenum face, GLenum mode); + void (*ColorMaterial)(struct gl_context *ctx, GLenum face, GLenum mode); /** Specify whether front- or back-facing facets can be culled */ - void (*CullFace)(GLcontext *ctx, GLenum mode); + void (*CullFace)(struct gl_context *ctx, GLenum mode); /** Define front- and back-facing polygons */ - void (*FrontFace)(GLcontext *ctx, GLenum mode); + void (*FrontFace)(struct gl_context *ctx, GLenum mode); /** Specify the value used for depth buffer comparisons */ - void (*DepthFunc)(GLcontext *ctx, GLenum func); + void (*DepthFunc)(struct gl_context *ctx, GLenum func); /** Enable or disable writing into the depth buffer */ - void (*DepthMask)(GLcontext *ctx, GLboolean flag); + void (*DepthMask)(struct gl_context *ctx, GLboolean flag); /** Specify mapping of depth values from NDC to window coordinates */ - void (*DepthRange)(GLcontext *ctx, GLclampd nearval, GLclampd farval); + void (*DepthRange)(struct gl_context *ctx, GLclampd nearval, GLclampd farval); /** Specify the current buffer for writing */ - void (*DrawBuffer)( GLcontext *ctx, GLenum buffer ); + void (*DrawBuffer)( struct gl_context *ctx, GLenum buffer ); /** Specify the buffers for writing for fragment programs*/ - void (*DrawBuffers)( GLcontext *ctx, GLsizei n, const GLenum *buffers ); + void (*DrawBuffers)( struct gl_context *ctx, GLsizei n, const GLenum *buffers ); /** Enable or disable server-side gl capabilities */ - void (*Enable)(GLcontext *ctx, GLenum cap, GLboolean state); + void (*Enable)(struct gl_context *ctx, GLenum cap, GLboolean state); /** Specify fog parameters */ - void (*Fogfv)(GLcontext *ctx, GLenum pname, const GLfloat *params); + void (*Fogfv)(struct gl_context *ctx, GLenum pname, const GLfloat *params); /** Specify implementation-specific hints */ - void (*Hint)(GLcontext *ctx, GLenum target, GLenum mode); + void (*Hint)(struct gl_context *ctx, GLenum target, GLenum mode); /** Set light source parameters. * Note: for GL_POSITION and GL_SPOT_DIRECTION, params will have already * been transformed to eye-space. */ - void (*Lightfv)(GLcontext *ctx, GLenum light, + void (*Lightfv)(struct gl_context *ctx, GLenum light, GLenum pname, const GLfloat *params ); /** Set the lighting model parameters */ - void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params); + void (*LightModelfv)(struct gl_context *ctx, GLenum pname, const GLfloat *params); /** Specify the line stipple pattern */ - void (*LineStipple)(GLcontext *ctx, GLint factor, GLushort pattern ); + void (*LineStipple)(struct gl_context *ctx, GLint factor, GLushort pattern ); /** Specify the width of rasterized lines */ - void (*LineWidth)(GLcontext *ctx, GLfloat width); + void (*LineWidth)(struct gl_context *ctx, GLfloat width); /** Specify a logical pixel operation for color index rendering */ - void (*LogicOpcode)(GLcontext *ctx, GLenum opcode); - void (*PointParameterfv)(GLcontext *ctx, GLenum pname, + void (*LogicOpcode)(struct gl_context *ctx, GLenum opcode); + void (*PointParameterfv)(struct gl_context *ctx, GLenum pname, const GLfloat *params); /** Specify the diameter of rasterized points */ - void (*PointSize)(GLcontext *ctx, GLfloat size); + void (*PointSize)(struct gl_context *ctx, GLfloat size); /** Select a polygon rasterization mode */ - void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode); + void (*PolygonMode)(struct gl_context *ctx, GLenum face, GLenum mode); /** Set the scale and units used to calculate depth values */ - void (*PolygonOffset)(GLcontext *ctx, GLfloat factor, GLfloat units); + void (*PolygonOffset)(struct gl_context *ctx, GLfloat factor, GLfloat units); /** Set the polygon stippling pattern */ - void (*PolygonStipple)(GLcontext *ctx, const GLubyte *mask ); + void (*PolygonStipple)(struct gl_context *ctx, const GLubyte *mask ); /* Specifies the current buffer for reading */ - void (*ReadBuffer)( GLcontext *ctx, GLenum buffer ); + void (*ReadBuffer)( struct gl_context *ctx, GLenum buffer ); /** Set rasterization mode */ - void (*RenderMode)(GLcontext *ctx, GLenum mode ); + void (*RenderMode)(struct gl_context *ctx, GLenum mode ); /** Define the scissor box */ - void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); + void (*Scissor)(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h); /** Select flat or smooth shading */ - void (*ShadeModel)(GLcontext *ctx, GLenum mode); + void (*ShadeModel)(struct gl_context *ctx, GLenum mode); /** OpenGL 2.0 two-sided StencilFunc */ - void (*StencilFuncSeparate)(GLcontext *ctx, GLenum face, GLenum func, + void (*StencilFuncSeparate)(struct gl_context *ctx, GLenum face, GLenum func, GLint ref, GLuint mask); /** OpenGL 2.0 two-sided StencilMask */ - void (*StencilMaskSeparate)(GLcontext *ctx, GLenum face, GLuint mask); + void (*StencilMaskSeparate)(struct gl_context *ctx, GLenum face, GLuint mask); /** OpenGL 2.0 two-sided StencilOp */ - void (*StencilOpSeparate)(GLcontext *ctx, GLenum face, GLenum fail, + void (*StencilOpSeparate)(struct gl_context *ctx, GLenum face, GLenum fail, GLenum zfail, GLenum zpass); /** Control the generation of texture coordinates */ - void (*TexGen)(GLcontext *ctx, GLenum coord, GLenum pname, + void (*TexGen)(struct gl_context *ctx, GLenum coord, GLenum pname, const GLfloat *params); /** Set texture environment parameters */ - void (*TexEnv)(GLcontext *ctx, GLenum target, GLenum pname, + void (*TexEnv)(struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param); /** Set texture parameters */ - void (*TexParameter)(GLcontext *ctx, GLenum target, + void (*TexParameter)(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat *params); /** Set the viewport */ - void (*Viewport)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); + void (*Viewport)(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h); /*@}*/ @@ -721,30 +721,30 @@ struct dd_function_table { * \name Vertex/pixel buffer object functions */ /*@{*/ - void (*BindBuffer)( GLcontext *ctx, GLenum target, + void (*BindBuffer)( struct gl_context *ctx, GLenum target, struct gl_buffer_object *obj ); - struct gl_buffer_object * (*NewBufferObject)( GLcontext *ctx, GLuint buffer, + struct gl_buffer_object * (*NewBufferObject)( struct gl_context *ctx, GLuint buffer, GLenum target ); - void (*DeleteBuffer)( GLcontext *ctx, struct gl_buffer_object *obj ); + void (*DeleteBuffer)( struct gl_context *ctx, struct gl_buffer_object *obj ); - GLboolean (*BufferData)( GLcontext *ctx, GLenum target, GLsizeiptrARB size, + GLboolean (*BufferData)( struct gl_context *ctx, GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage, struct gl_buffer_object *obj ); - void (*BufferSubData)( GLcontext *ctx, GLenum target, GLintptrARB offset, + void (*BufferSubData)( struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data, struct gl_buffer_object *obj ); - void (*GetBufferSubData)( GLcontext *ctx, GLenum target, + void (*GetBufferSubData)( struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data, struct gl_buffer_object *obj ); - void * (*MapBuffer)( GLcontext *ctx, GLenum target, GLenum access, + void * (*MapBuffer)( struct gl_context *ctx, GLenum target, GLenum access, struct gl_buffer_object *obj ); - void (*CopyBufferSubData)( GLcontext *ctx, + void (*CopyBufferSubData)( struct gl_context *ctx, struct gl_buffer_object *src, struct gl_buffer_object *dst, GLintptr readOffset, GLintptr writeOffset, @@ -752,15 +752,15 @@ struct dd_function_table { /* May return NULL if MESA_MAP_NOWAIT_BIT is set in access: */ - void * (*MapBufferRange)( GLcontext *ctx, GLenum target, GLintptr offset, + void * (*MapBufferRange)( struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, struct gl_buffer_object *obj); - void (*FlushMappedBufferRange)(GLcontext *ctx, GLenum target, + void (*FlushMappedBufferRange)(struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, struct gl_buffer_object *obj); - GLboolean (*UnmapBuffer)( GLcontext *ctx, GLenum target, + GLboolean (*UnmapBuffer)( struct gl_context *ctx, GLenum target, struct gl_buffer_object *obj ); /*@}*/ @@ -769,38 +769,38 @@ struct dd_function_table { */ /*@{*/ /* variations on ObjectPurgeable */ - GLenum (*BufferObjectPurgeable)( GLcontext *ctx, struct gl_buffer_object *obj, GLenum option ); - GLenum (*RenderObjectPurgeable)( GLcontext *ctx, struct gl_renderbuffer *obj, GLenum option ); - GLenum (*TextureObjectPurgeable)( GLcontext *ctx, struct gl_texture_object *obj, GLenum option ); + GLenum (*BufferObjectPurgeable)( struct gl_context *ctx, struct gl_buffer_object *obj, GLenum option ); + GLenum (*RenderObjectPurgeable)( struct gl_context *ctx, struct gl_renderbuffer *obj, GLenum option ); + GLenum (*TextureObjectPurgeable)( struct gl_context *ctx, struct gl_texture_object *obj, GLenum option ); /* variations on ObjectUnpurgeable */ - GLenum (*BufferObjectUnpurgeable)( GLcontext *ctx, struct gl_buffer_object *obj, GLenum option ); - GLenum (*RenderObjectUnpurgeable)( GLcontext *ctx, struct gl_renderbuffer *obj, GLenum option ); - GLenum (*TextureObjectUnpurgeable)( GLcontext *ctx, struct gl_texture_object *obj, GLenum option ); + GLenum (*BufferObjectUnpurgeable)( struct gl_context *ctx, struct gl_buffer_object *obj, GLenum option ); + GLenum (*RenderObjectUnpurgeable)( struct gl_context *ctx, struct gl_renderbuffer *obj, GLenum option ); + GLenum (*TextureObjectUnpurgeable)( struct gl_context *ctx, struct gl_texture_object *obj, GLenum option ); /*@}*/ /** * \name Functions for GL_EXT_framebuffer_{object,blit}. */ /*@{*/ - struct gl_framebuffer * (*NewFramebuffer)(GLcontext *ctx, GLuint name); - struct gl_renderbuffer * (*NewRenderbuffer)(GLcontext *ctx, GLuint name); - void (*BindFramebuffer)(GLcontext *ctx, GLenum target, + struct gl_framebuffer * (*NewFramebuffer)(struct gl_context *ctx, GLuint name); + struct gl_renderbuffer * (*NewRenderbuffer)(struct gl_context *ctx, GLuint name); + void (*BindFramebuffer)(struct gl_context *ctx, GLenum target, struct gl_framebuffer *drawFb, struct gl_framebuffer *readFb); - void (*FramebufferRenderbuffer)(GLcontext *ctx, + void (*FramebufferRenderbuffer)(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb); - void (*RenderTexture)(GLcontext *ctx, + void (*RenderTexture)(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att); - void (*FinishRenderTexture)(GLcontext *ctx, + void (*FinishRenderTexture)(struct gl_context *ctx, struct gl_renderbuffer_attachment *att); - void (*ValidateFramebuffer)(GLcontext *ctx, + void (*ValidateFramebuffer)(struct gl_context *ctx, struct gl_framebuffer *fb); /*@}*/ - void (*BlitFramebuffer)(GLcontext *ctx, + void (*BlitFramebuffer)(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); @@ -809,12 +809,12 @@ struct dd_function_table { * \name Query objects */ /*@{*/ - struct gl_query_object * (*NewQueryObject)(GLcontext *ctx, GLuint id); - void (*DeleteQuery)(GLcontext *ctx, struct gl_query_object *q); - void (*BeginQuery)(GLcontext *ctx, struct gl_query_object *q); - void (*EndQuery)(GLcontext *ctx, struct gl_query_object *q); - void (*CheckQuery)(GLcontext *ctx, struct gl_query_object *q); - void (*WaitQuery)(GLcontext *ctx, struct gl_query_object *q); + struct gl_query_object * (*NewQueryObject)(struct gl_context *ctx, GLuint id); + void (*DeleteQuery)(struct gl_context *ctx, struct gl_query_object *q); + void (*BeginQuery)(struct gl_context *ctx, struct gl_query_object *q); + void (*EndQuery)(struct gl_context *ctx, struct gl_query_object *q); + void (*CheckQuery)(struct gl_context *ctx, struct gl_query_object *q); + void (*WaitQuery)(struct gl_context *ctx, struct gl_query_object *q); /*@}*/ @@ -822,21 +822,21 @@ struct dd_function_table { * \name Vertex Array objects */ /*@{*/ - struct gl_array_object * (*NewArrayObject)(GLcontext *ctx, GLuint id); - void (*DeleteArrayObject)(GLcontext *ctx, struct gl_array_object *obj); - void (*BindArrayObject)(GLcontext *ctx, struct gl_array_object *obj); + struct gl_array_object * (*NewArrayObject)(struct gl_context *ctx, GLuint id); + void (*DeleteArrayObject)(struct gl_context *ctx, struct gl_array_object *obj); + void (*BindArrayObject)(struct gl_context *ctx, struct gl_array_object *obj); /*@}*/ /** * \name GLSL-related functions (ARB extensions and OpenGL 2.x) */ /*@{*/ - struct gl_shader *(*NewShader)(GLcontext *ctx, GLuint name, GLenum type); - void (*DeleteShader)(GLcontext *ctx, struct gl_shader *shader); - struct gl_shader_program *(*NewShaderProgram)(GLcontext *ctx, GLuint name); - void (*DeleteShaderProgram)(GLcontext *ctx, + struct gl_shader *(*NewShader)(struct gl_context *ctx, GLuint name, GLenum type); + void (*DeleteShader)(struct gl_context *ctx, struct gl_shader *shader); + struct gl_shader_program *(*NewShaderProgram)(struct gl_context *ctx, GLuint name); + void (*DeleteShaderProgram)(struct gl_context *ctx, struct gl_shader_program *shProg); - void (*UseProgram)(GLcontext *ctx, struct gl_shader_program *shProg); + void (*UseProgram)(struct gl_context *ctx, struct gl_shader_program *shProg); /*@}*/ @@ -862,7 +862,7 @@ struct dd_function_table { * This must be non-NULL if a driver installs a custom T&L module and sets * the dd_function_table::NeedValidate bitmask, but may be NULL otherwise. */ - void (*ValidateTnlModule)( GLcontext *ctx, GLuint new_state ); + void (*ValidateTnlModule)( struct gl_context *ctx, GLuint new_state ); #define PRIM_OUTSIDE_BEGIN_END (GL_POLYGON+1) @@ -889,7 +889,7 @@ struct dd_function_table { #define FLUSH_UPDATE_CURRENT 0x2 /** * Set by the driver-supplied T&L engine whenever vertices are buffered - * between glBegin()/glEnd() objects or __GLcontextRec::Current is not + * between glBegin()/glEnd() objects or __struct gl_contextRec::Current is not * updated. * * The dd_function_table::FlushVertices call below may be used to resolve @@ -902,32 +902,32 @@ struct dd_function_table { /* Called prior to any of the GLvertexformat functions being * called. Paired with Driver.FlushVertices(). */ - void (*BeginVertices)( GLcontext *ctx ); + void (*BeginVertices)( struct gl_context *ctx ); /** * If inside glBegin()/glEnd(), it should ASSERT(0). Otherwise, if * FLUSH_STORED_VERTICES bit in \p flags is set flushes any buffered * vertices, if FLUSH_UPDATE_CURRENT bit is set updates - * __GLcontextRec::Current and gl_light_attrib::Material + * __struct gl_contextRec::Current and gl_light_attrib::Material * * Note that the default T&L engine never clears the * FLUSH_UPDATE_CURRENT bit, even after performing the update. */ - void (*FlushVertices)( GLcontext *ctx, GLuint flags ); - void (*SaveFlushVertices)( GLcontext *ctx ); + void (*FlushVertices)( struct gl_context *ctx, GLuint flags ); + void (*SaveFlushVertices)( struct gl_context *ctx ); /** * Give the driver the opportunity to hook in its own vtxfmt for * compiling optimized display lists. This is called on each valid * glBegin() during list compilation. */ - GLboolean (*NotifySaveBegin)( GLcontext *ctx, GLenum mode ); + GLboolean (*NotifySaveBegin)( struct gl_context *ctx, GLenum mode ); /** * Notify driver that the special derived value _NeedEyeCoords has * changed. */ - void (*LightingSpaceChange)( GLcontext *ctx ); + void (*LightingSpaceChange)( struct gl_context *ctx ); /** * Called by glNewList(). @@ -935,64 +935,64 @@ struct dd_function_table { * Let the T&L component know what is going on with display lists * in time to make changes to dispatch tables, etc. */ - void (*NewList)( GLcontext *ctx, GLuint list, GLenum mode ); + void (*NewList)( struct gl_context *ctx, GLuint list, GLenum mode ); /** * Called by glEndList(). * * \sa dd_function_table::NewList. */ - void (*EndList)( GLcontext *ctx ); + void (*EndList)( struct gl_context *ctx ); /** * Called by glCallList(s). * * Notify the T&L component before and after calling a display list. */ - void (*BeginCallList)( GLcontext *ctx, + void (*BeginCallList)( struct gl_context *ctx, struct gl_display_list *dlist ); /** * Called by glEndCallList(). * * \sa dd_function_table::BeginCallList. */ - void (*EndCallList)( GLcontext *ctx ); + void (*EndCallList)( struct gl_context *ctx ); /** * \name GL_ARB_sync interfaces */ /*@{*/ - struct gl_sync_object * (*NewSyncObject)(GLcontext *, GLenum); - void (*FenceSync)(GLcontext *, struct gl_sync_object *, GLenum, GLbitfield); - void (*DeleteSyncObject)(GLcontext *, struct gl_sync_object *); - void (*CheckSync)(GLcontext *, struct gl_sync_object *); - void (*ClientWaitSync)(GLcontext *, struct gl_sync_object *, + struct gl_sync_object * (*NewSyncObject)(struct gl_context *, GLenum); + void (*FenceSync)(struct gl_context *, struct gl_sync_object *, GLenum, GLbitfield); + void (*DeleteSyncObject)(struct gl_context *, struct gl_sync_object *); + void (*CheckSync)(struct gl_context *, struct gl_sync_object *); + void (*ClientWaitSync)(struct gl_context *, struct gl_sync_object *, GLbitfield, GLuint64); - void (*ServerWaitSync)(GLcontext *, struct gl_sync_object *, + void (*ServerWaitSync)(struct gl_context *, struct gl_sync_object *, GLbitfield, GLuint64); /*@}*/ /** GL_NV_conditional_render */ - void (*BeginConditionalRender)(GLcontext *ctx, struct gl_query_object *q, + void (*BeginConditionalRender)(struct gl_context *ctx, struct gl_query_object *q, GLenum mode); - void (*EndConditionalRender)(GLcontext *ctx, struct gl_query_object *q); + void (*EndConditionalRender)(struct gl_context *ctx, struct gl_query_object *q); /** * \name GL_OES_draw_texture interface */ /*@{*/ - void (*DrawTex)(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, + void (*DrawTex)(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); /*@}*/ /** * \name GL_OES_EGL_image interface */ - void (*EGLImageTargetTexture2D)(GLcontext *ctx, GLenum target, + void (*EGLImageTargetTexture2D)(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, struct gl_texture_image *texImage, GLeglImageOES image_handle); - void (*EGLImageTargetRenderbufferStorage)(GLcontext *ctx, + void (*EGLImageTargetRenderbufferStorage)(struct gl_context *ctx, struct gl_renderbuffer *rb, void *image_handle); @@ -1000,18 +1000,18 @@ struct dd_function_table { * \name GL_EXT_transform_feedback interface */ struct gl_transform_feedback_object * - (*NewTransformFeedback)(GLcontext *ctx, GLuint name); - void (*DeleteTransformFeedback)(GLcontext *ctx, + (*NewTransformFeedback)(struct gl_context *ctx, GLuint name); + void (*DeleteTransformFeedback)(struct gl_context *ctx, struct gl_transform_feedback_object *obj); - void (*BeginTransformFeedback)(GLcontext *ctx, GLenum mode, + void (*BeginTransformFeedback)(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj); - void (*EndTransformFeedback)(GLcontext *ctx, + void (*EndTransformFeedback)(struct gl_context *ctx, struct gl_transform_feedback_object *obj); - void (*PauseTransformFeedback)(GLcontext *ctx, + void (*PauseTransformFeedback)(struct gl_context *ctx, struct gl_transform_feedback_object *obj); - void (*ResumeTransformFeedback)(GLcontext *ctx, + void (*ResumeTransformFeedback)(struct gl_context *ctx, struct gl_transform_feedback_object *obj); - void (*DrawTransformFeedback)(GLcontext *ctx, GLenum mode, + void (*DrawTransformFeedback)(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj); }; diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 4205c7a4b71..a7e65f8d3aa 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -233,7 +233,7 @@ static void add_debug_flags( const char *debug ) void -_mesa_init_debug( GLcontext *ctx ) +_mesa_init_debug( struct gl_context *ctx ) { char *c; @@ -578,7 +578,7 @@ _mesa_dump_stencil_buffer(const char *filename) * Quick and dirty function to "print" a texture to stdout. */ void -_mesa_print_texture(GLcontext *ctx, const struct gl_texture_image *img) +_mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img) { #if CHAN_TYPE != GL_UNSIGNED_BYTE _mesa_problem(NULL, "PrintTexture not supported"); diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h index b517cc8259f..e3bb4dfe813 100644 --- a/src/mesa/main/debug.h +++ b/src/mesa/main/debug.h @@ -45,7 +45,7 @@ extern void _mesa_print_tri_caps( const char *name, GLuint flags ); extern void _mesa_print_enable_flags( const char *msg, GLuint flags ); extern void _mesa_print_state( const char *msg, GLuint state ); extern void _mesa_print_info( void ); -extern void _mesa_init_debug( GLcontext *ctx ); +extern void _mesa_init_debug( struct gl_context *ctx ); #else @@ -79,6 +79,6 @@ extern void _mesa_dump_stencil_buffer(const char *filename); extern void -_mesa_print_texture(GLcontext *ctx, const struct gl_texture_image *img); +_mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img); #endif diff --git a/src/mesa/main/depth.c b/src/mesa/main/depth.c index f187205b978..c5a910e144a 100644 --- a/src/mesa/main/depth.c +++ b/src/mesa/main/depth.c @@ -153,7 +153,7 @@ _mesa_DepthBoundsEXT( GLclampd zmin, GLclampd zmax ) * Initialize the depth buffer attribute group in the given context. */ void -_mesa_init_depth(GLcontext *ctx) +_mesa_init_depth(struct gl_context *ctx) { ctx->Depth.Test = GL_FALSE; ctx->Depth.Clear = 1.0; diff --git a/src/mesa/main/depth.h b/src/mesa/main/depth.h index dcc0b4637a7..d61d3b121ba 100644 --- a/src/mesa/main/depth.h +++ b/src/mesa/main/depth.h @@ -50,7 +50,7 @@ extern void GLAPIENTRY _mesa_DepthBoundsEXT( GLclampd zmin, GLclampd zmax ); extern void -_mesa_init_depth( GLcontext * ctx ); +_mesa_init_depth( struct gl_context * ctx ); #else diff --git a/src/mesa/main/depthstencil.c b/src/mesa/main/depthstencil.c index dbaa8416457..c5466dc9fcc 100644 --- a/src/mesa/main/depthstencil.c +++ b/src/mesa/main/depthstencil.c @@ -46,7 +46,7 @@ static void * -nop_get_pointer(GLcontext *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) +nop_get_pointer(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { (void) ctx; (void) rb; @@ -73,7 +73,7 @@ delete_wrapper(struct gl_renderbuffer *rb) * Realloc storage for wrapper. */ static GLboolean -alloc_wrapper_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +alloc_wrapper_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { /* just pass this on to the wrapped renderbuffer */ @@ -103,7 +103,7 @@ alloc_wrapper_storage(GLcontext *ctx, struct gl_renderbuffer *rb, */ static void -get_row_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, +get_row_z24(struct gl_context *ctx, struct gl_renderbuffer *z24rb, GLuint count, GLint x, GLint y, void *values) { struct gl_renderbuffer *dsrb = z24rb->Wrapped; @@ -130,7 +130,7 @@ get_row_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, } static void -get_values_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, +get_values_z24(struct gl_context *ctx, struct gl_renderbuffer *z24rb, GLuint count, const GLint x[], const GLint y[], void *values) { struct gl_renderbuffer *dsrb = z24rb->Wrapped; @@ -155,7 +155,7 @@ get_values_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, } static void -put_row_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, +put_row_z24(struct gl_context *ctx, struct gl_renderbuffer *z24rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { struct gl_renderbuffer *dsrb = z24rb->Wrapped; @@ -206,7 +206,7 @@ put_row_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, } static void -put_mono_row_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, +put_mono_row_z24(struct gl_context *ctx, struct gl_renderbuffer *z24rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { struct gl_renderbuffer *dsrb = z24rb->Wrapped; @@ -260,7 +260,7 @@ put_mono_row_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, } static void -put_values_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, +put_values_z24(struct gl_context *ctx, struct gl_renderbuffer *z24rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -313,7 +313,7 @@ put_values_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, GLuint count, } static void -put_mono_values_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, +put_mono_values_z24(struct gl_context *ctx, struct gl_renderbuffer *z24rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -348,7 +348,7 @@ put_mono_values_z24(GLcontext *ctx, struct gl_renderbuffer *z24rb, * \return new depth renderbuffer */ struct gl_renderbuffer * -_mesa_new_z24_renderbuffer_wrapper(GLcontext *ctx, +_mesa_new_z24_renderbuffer_wrapper(struct gl_context *ctx, struct gl_renderbuffer *dsrb) { struct gl_renderbuffer *z24rb; @@ -396,7 +396,7 @@ _mesa_new_z24_renderbuffer_wrapper(GLcontext *ctx, */ static void -get_row_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, +get_row_s8(struct gl_context *ctx, struct gl_renderbuffer *s8rb, GLuint count, GLint x, GLint y, void *values) { struct gl_renderbuffer *dsrb = s8rb->Wrapped; @@ -423,7 +423,7 @@ get_row_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, } static void -get_values_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, +get_values_s8(struct gl_context *ctx, struct gl_renderbuffer *s8rb, GLuint count, const GLint x[], const GLint y[], void *values) { struct gl_renderbuffer *dsrb = s8rb->Wrapped; @@ -448,7 +448,7 @@ get_values_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, } static void -put_row_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, +put_row_s8(struct gl_context *ctx, struct gl_renderbuffer *s8rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { struct gl_renderbuffer *dsrb = s8rb->Wrapped; @@ -499,7 +499,7 @@ put_row_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, } static void -put_mono_row_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, +put_mono_row_s8(struct gl_context *ctx, struct gl_renderbuffer *s8rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { struct gl_renderbuffer *dsrb = s8rb->Wrapped; @@ -550,7 +550,7 @@ put_mono_row_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, } static void -put_values_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, +put_values_s8(struct gl_context *ctx, struct gl_renderbuffer *s8rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -603,7 +603,7 @@ put_values_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, } static void -put_mono_values_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, +put_mono_values_s8(struct gl_context *ctx, struct gl_renderbuffer *s8rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -637,7 +637,7 @@ put_mono_values_s8(GLcontext *ctx, struct gl_renderbuffer *s8rb, GLuint count, * \return new stencil renderbuffer */ struct gl_renderbuffer * -_mesa_new_s8_renderbuffer_wrapper(GLcontext *ctx, struct gl_renderbuffer *dsrb) +_mesa_new_s8_renderbuffer_wrapper(struct gl_context *ctx, struct gl_renderbuffer *dsrb) { struct gl_renderbuffer *s8rb; @@ -698,7 +698,7 @@ _mesa_new_s8_renderbuffer_wrapper(GLcontext *ctx, struct gl_renderbuffer *dsrb) * (either 8-bit or 32-bit) */ void -_mesa_extract_stencil(GLcontext *ctx, +_mesa_extract_stencil(struct gl_context *ctx, struct gl_renderbuffer *dsRb, struct gl_renderbuffer *stencilRb) { @@ -747,7 +747,7 @@ _mesa_extract_stencil(GLcontext *ctx, * \param stencilRb the source stencil buffer (either 8-bit or 32-bit) */ void -_mesa_insert_stencil(GLcontext *ctx, +_mesa_insert_stencil(struct gl_context *ctx, struct gl_renderbuffer *dsRb, struct gl_renderbuffer *stencilRb) { @@ -803,7 +803,7 @@ _mesa_insert_stencil(GLcontext *ctx, * \param stencilRb the stencil renderbuffer to promote */ void -_mesa_promote_stencil(GLcontext *ctx, struct gl_renderbuffer *stencilRb) +_mesa_promote_stencil(struct gl_context *ctx, struct gl_renderbuffer *stencilRb) { const GLsizei width = stencilRb->Width; const GLsizei height = stencilRb->Height; diff --git a/src/mesa/main/depthstencil.h b/src/mesa/main/depthstencil.h index afbac77f0e2..4db5868263a 100644 --- a/src/mesa/main/depthstencil.h +++ b/src/mesa/main/depthstencil.h @@ -29,29 +29,29 @@ #include "mtypes.h" extern struct gl_renderbuffer * -_mesa_new_z24_renderbuffer_wrapper(GLcontext *ctx, +_mesa_new_z24_renderbuffer_wrapper(struct gl_context *ctx, struct gl_renderbuffer *dsrb); extern struct gl_renderbuffer * -_mesa_new_s8_renderbuffer_wrapper(GLcontext *ctx, +_mesa_new_s8_renderbuffer_wrapper(struct gl_context *ctx, struct gl_renderbuffer *dsrb); extern void -_mesa_extract_stencil(GLcontext *ctx, +_mesa_extract_stencil(struct gl_context *ctx, struct gl_renderbuffer *dsRb, struct gl_renderbuffer *stencilRb); extern void -_mesa_insert_stencil(GLcontext *ctx, +_mesa_insert_stencil(struct gl_context *ctx, struct gl_renderbuffer *dsRb, struct gl_renderbuffer *stencilRb); extern void -_mesa_promote_stencil(GLcontext *ctx, struct gl_renderbuffer *stencilRb); +_mesa_promote_stencil(struct gl_context *ctx, struct gl_renderbuffer *stencilRb); #endif /* DEPTHSTENCIL_H */ diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index cccec248539..f513f31c56e 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -77,9 +77,9 @@ struct gl_list_instruction { GLuint Size; - void (*Execute)( GLcontext *ctx, void *data ); - void (*Destroy)( GLcontext *ctx, void *data ); - void (*Print)( GLcontext *ctx, void *data ); + void (*Execute)( struct gl_context *ctx, void *data ); + void (*Destroy)( struct gl_context *ctx, void *data ); + void (*Print)( struct gl_context *ctx, void *data ); }; @@ -496,7 +496,7 @@ make_list(GLuint name, GLuint count) * Lookup function to just encapsulate casting. */ static INLINE struct gl_display_list * -lookup_list(GLcontext *ctx, GLuint list) +lookup_list(struct gl_context *ctx, GLuint list) { return (struct gl_display_list *) _mesa_HashLookup(ctx->Shared->DisplayList, list); @@ -513,7 +513,7 @@ is_ext_opcode(OpCode opcode) /** Destroy an extended opcode instruction */ static GLint -ext_opcode_destroy(GLcontext *ctx, Node *node) +ext_opcode_destroy(struct gl_context *ctx, Node *node) { const GLint i = node[0].opcode - OPCODE_EXT_0; GLint step; @@ -525,7 +525,7 @@ ext_opcode_destroy(GLcontext *ctx, Node *node) /** Execute an extended opcode instruction */ static GLint -ext_opcode_execute(GLcontext *ctx, Node *node) +ext_opcode_execute(struct gl_context *ctx, Node *node) { const GLint i = node[0].opcode - OPCODE_EXT_0; GLint step; @@ -537,7 +537,7 @@ ext_opcode_execute(GLcontext *ctx, Node *node) /** Print an extended opcode instruction */ static GLint -ext_opcode_print(GLcontext *ctx, Node *node) +ext_opcode_print(struct gl_context *ctx, Node *node) { const GLint i = node[0].opcode - OPCODE_EXT_0; GLint step; @@ -552,7 +552,7 @@ ext_opcode_print(GLcontext *ctx, Node *node) * \param dlist - display list pointer */ void -_mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist) +_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist) { Node *n, *block; GLboolean done; @@ -730,7 +730,7 @@ _mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist) * \param list - display list number */ static void -destroy_list(GLcontext *ctx, GLuint list) +destroy_list(struct gl_context *ctx, GLuint list) { struct gl_display_list *dlist; @@ -814,7 +814,7 @@ translate_id(GLsizei n, GLenum type, const GLvoid * list) * If we run out of memory, GL_OUT_OF_MEMORY will be recorded. */ static GLvoid * -unpack_image(GLcontext *ctx, GLuint dimensions, +unpack_image(struct gl_context *ctx, GLuint dimensions, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *unpack) @@ -866,7 +866,7 @@ unpack_image(GLcontext *ctx, GLuint dimensions, * \return pointer to allocated memory (the opcode space) */ static Node * -dlist_alloc(GLcontext *ctx, OpCode opcode, GLuint bytes) +dlist_alloc(struct gl_context *ctx, OpCode opcode, GLuint bytes) { const GLuint numNodes = 1 + (bytes + sizeof(Node) - 1) / sizeof(Node); Node *n; @@ -917,7 +917,7 @@ dlist_alloc(GLcontext *ctx, OpCode opcode, GLuint bytes) * opcode). */ void * -_mesa_dlist_alloc(GLcontext *ctx, GLuint opcode, GLuint bytes) +_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint bytes) { Node *n = dlist_alloc(ctx, (OpCode) opcode, bytes); if (n) @@ -938,11 +938,11 @@ _mesa_dlist_alloc(GLcontext *ctx, GLuint opcode, GLuint bytes) * \return the new opcode number or -1 if error */ GLint -_mesa_dlist_alloc_opcode(GLcontext *ctx, +_mesa_dlist_alloc_opcode(struct gl_context *ctx, GLuint size, - void (*execute) (GLcontext *, void *), - void (*destroy) (GLcontext *, void *), - void (*print) (GLcontext *, void *)) + void (*execute) (struct gl_context *, void *), + void (*destroy) (struct gl_context *, void *), + void (*print) (struct gl_context *, void *)) { if (ctx->ListExt->NumOpcodes < MAX_DLIST_EXT_OPCODES) { const GLuint i = ctx->ListExt->NumOpcodes++; @@ -967,7 +967,7 @@ _mesa_dlist_alloc_opcode(GLcontext *ctx, * \return pointer to start of instruction space */ static INLINE Node * -alloc_instruction(GLcontext *ctx, OpCode opcode, GLuint nparams) +alloc_instruction(struct gl_context *ctx, OpCode opcode, GLuint nparams) { return dlist_alloc(ctx, opcode, nparams * sizeof(Node)); } @@ -1132,7 +1132,7 @@ save_BlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) } } -static void invalidate_saved_current_state( GLcontext *ctx ) +static void invalidate_saved_current_state( struct gl_context *ctx ) { GLint i; @@ -6795,7 +6795,7 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, * command that provoked the error. I don't see this as a problem. */ static void -save_error(GLcontext *ctx, GLenum error, const char *s) +save_error(struct gl_context *ctx, GLenum error, const char *s) { Node *n; n = alloc_instruction(ctx, OPCODE_ERROR, 2); @@ -6810,7 +6810,7 @@ save_error(GLcontext *ctx, GLenum error, const char *s) * Compile an error into current display list. */ void -_mesa_compile_error(GLcontext *ctx, GLenum error, const char *s) +_mesa_compile_error(struct gl_context *ctx, GLenum error, const char *s) { if (ctx->CompileFlag) save_error(ctx, error, s); @@ -6823,7 +6823,7 @@ _mesa_compile_error(GLcontext *ctx, GLenum error, const char *s) * Test if ID names a display list. */ static GLboolean -islist(GLcontext *ctx, GLuint list) +islist(struct gl_context *ctx, GLuint list) { if (list > 0 && lookup_list(ctx, list)) { return GL_TRUE; @@ -6847,7 +6847,7 @@ islist(GLcontext *ctx, GLuint list) * \param list - display list number */ static void -execute_list(GLcontext *ctx, GLuint list) +execute_list(struct gl_context *ctx, GLuint list) { struct gl_display_list *dlist; Node *n; @@ -9577,7 +9577,7 @@ enum_string(GLenum k) * TODO: many commands aren't handled yet. */ static void GLAPIENTRY -print_list(GLcontext *ctx, GLuint list) +print_list(struct gl_context *ctx, GLuint list) { struct gl_display_list *dlist; Node *n; @@ -9969,7 +9969,7 @@ void _mesa_init_dlist_dispatch(struct _glapi_table *disp) * Initialize display list state for given context. */ void -_mesa_init_display_list(GLcontext *ctx) +_mesa_init_display_list(struct gl_context *ctx) { static GLboolean tableInitialized = GL_FALSE; @@ -9999,7 +9999,7 @@ _mesa_init_display_list(GLcontext *ctx) void -_mesa_free_display_list_data(GLcontext *ctx) +_mesa_free_display_list_data(struct gl_context *ctx) { free(ctx->ListExt); ctx->ListExt = NULL; diff --git a/src/mesa/main/dlist.h b/src/mesa/main/dlist.h index 86bb132e56e..24241a4bd4f 100644 --- a/src/mesa/main/dlist.h +++ b/src/mesa/main/dlist.h @@ -49,16 +49,16 @@ extern void GLAPIENTRY _mesa_CallList( GLuint list ); extern void GLAPIENTRY _mesa_CallLists( GLsizei n, GLenum type, const GLvoid *lists ); -extern void _mesa_compile_error( GLcontext *ctx, GLenum error, const char *s ); +extern void _mesa_compile_error( struct gl_context *ctx, GLenum error, const char *s ); -extern void *_mesa_dlist_alloc(GLcontext *ctx, GLuint opcode, GLuint sz); +extern void *_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz); -extern GLint _mesa_dlist_alloc_opcode( GLcontext *ctx, GLuint sz, - void (*execute)( GLcontext *, void * ), - void (*destroy)( GLcontext *, void * ), - void (*print)( GLcontext *, void * ) ); +extern GLint _mesa_dlist_alloc_opcode( struct gl_context *ctx, GLuint sz, + void (*execute)( struct gl_context *, void * ), + void (*destroy)( struct gl_context *, void * ), + void (*print)( struct gl_context *, void * ) ); -extern void _mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist); +extern void _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist); extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt ); @@ -76,7 +76,7 @@ extern void _mesa_init_dlist_dispatch(struct _glapi_table *disp); #define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) do { } while (0) static INLINE void -_mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist) +_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist) { /* there should be no list to delete */ ASSERT_NO_FEATURE(); @@ -95,9 +95,9 @@ _mesa_init_dlist_dispatch(struct _glapi_table *disp) #endif /* FEATURE_dlist */ -extern void _mesa_init_display_list( GLcontext * ctx ); +extern void _mesa_init_display_list( struct gl_context * ctx ); -extern void _mesa_free_display_list_data(GLcontext *ctx); +extern void _mesa_free_display_list_data(struct gl_context *ctx); #endif /* DLIST_H */ diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c index bf36a7e7a49..ac92a3fb084 100644 --- a/src/mesa/main/drawpix.c +++ b/src/mesa/main/drawpix.c @@ -43,7 +43,7 @@ * \return GL_TRUE if valid, GL_FALSE otherwise */ static GLboolean -valid_fragment_program(GLcontext *ctx) +valid_fragment_program(struct gl_context *ctx) { return !(ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled); } diff --git a/src/mesa/main/drawtex.c b/src/mesa/main/drawtex.c index c2ad5f23862..b9afc9974e0 100644 --- a/src/mesa/main/drawtex.c +++ b/src/mesa/main/drawtex.c @@ -30,7 +30,7 @@ static void -draw_texture(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, +draw_texture(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) { if (!ctx->Extensions.OES_draw_texture) { diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index b2be44830a0..5a5b199df32 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -50,7 +50,7 @@ * Helper to enable/disable client-side state. */ static void -client_state(GLcontext *ctx, GLenum cap, GLboolean state) +client_state(struct gl_context *ctx, GLenum cap, GLboolean state) { struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLuint flag; @@ -207,7 +207,7 @@ _mesa_DisableClientState( GLenum cap ) * higher than the number of supported coordinate units. And we'll return NULL. */ static struct gl_texture_unit * -get_texcoord_unit(GLcontext *ctx) +get_texcoord_unit(struct gl_context *ctx) { if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { _mesa_error(ctx, GL_INVALID_OPERATION, "glEnable/Disable(texcoord unit)"); @@ -225,7 +225,7 @@ get_texcoord_unit(GLcontext *ctx) * \return GL_TRUE if state is changing or GL_FALSE if no change */ static GLboolean -enable_texture(GLcontext *ctx, GLboolean state, GLbitfield texBit) +enable_texture(struct gl_context *ctx, GLboolean state, GLbitfield texBit) { struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); const GLbitfield newenabled = state @@ -253,7 +253,7 @@ enable_texture(GLcontext *ctx, GLboolean state, GLbitfield texBit) * dd_function_table::Enable. */ void -_mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state) +_mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) { if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(ctx, "%s %s (newstate is %x)\n", @@ -1005,7 +1005,7 @@ _mesa_Disable( GLenum cap ) * Enable/disable an indexed state var. */ void -_mesa_set_enablei(GLcontext *ctx, GLenum cap, GLuint index, GLboolean state) +_mesa_set_enablei(struct gl_context *ctx, GLenum cap, GLuint index, GLboolean state) { ASSERT(state == 0 || state == 1); switch (cap) { @@ -1095,7 +1095,7 @@ _mesa_IsEnabledIndexed( GLenum cap, GLuint index ) * Helper function to determine whether a texture target is enabled. */ static GLboolean -is_texture_enabled(GLcontext *ctx, GLbitfield bit) +is_texture_enabled(struct gl_context *ctx, GLbitfield bit) { const struct gl_texture_unit *const texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; diff --git a/src/mesa/main/enable.h b/src/mesa/main/enable.h index 24e3181a8ba..69e52b1cb26 100644 --- a/src/mesa/main/enable.h +++ b/src/mesa/main/enable.h @@ -36,7 +36,7 @@ extern void -_mesa_set_enable( GLcontext* ctx, GLenum cap, GLboolean state ); +_mesa_set_enable( struct gl_context* ctx, GLenum cap, GLboolean state ); extern void GLAPIENTRY _mesa_Disable( GLenum cap ); @@ -48,7 +48,7 @@ extern GLboolean GLAPIENTRY _mesa_IsEnabled( GLenum cap ); extern void -_mesa_set_enablei(GLcontext *ctx, GLenum cap, GLuint index, GLboolean state); +_mesa_set_enablei(struct gl_context *ctx, GLenum cap, GLuint index, GLboolean state); extern void GLAPIENTRY _mesa_DisableIndexed( GLenum cap, GLuint index ); diff --git a/src/mesa/main/eval.c b/src/mesa/main/eval.c index bd2e1177fd2..c607e6a26af 100644 --- a/src/mesa/main/eval.c +++ b/src/mesa/main/eval.c @@ -100,7 +100,7 @@ GLuint _mesa_evaluator_components( GLenum target ) * Return pointer to the gl_1d_map struct for the named target. */ static struct gl_1d_map * -get_1d_map( GLcontext *ctx, GLenum target ) +get_1d_map( struct gl_context *ctx, GLenum target ) { switch (target) { case GL_MAP1_VERTEX_3: @@ -150,7 +150,7 @@ get_1d_map( GLcontext *ctx, GLenum target ) * Return pointer to the gl_2d_map struct for the named target. */ static struct gl_2d_map * -get_2d_map( GLcontext *ctx, GLenum target ) +get_2d_map( struct gl_context *ctx, GLenum target ) { switch (target) { case GL_MAP2_VERTEX_3: @@ -880,7 +880,7 @@ init_2d_map( struct gl_2d_map *map, int n, const float *initial ) } -void _mesa_init_eval( GLcontext *ctx ) +void _mesa_init_eval( struct gl_context *ctx ) { int i; @@ -952,7 +952,7 @@ void _mesa_init_eval( GLcontext *ctx ) } -void _mesa_free_eval_data( GLcontext *ctx ) +void _mesa_free_eval_data( struct gl_context *ctx ) { int i; diff --git a/src/mesa/main/eval.h b/src/mesa/main/eval.h index ffd1bab76da..bd908f00cdd 100644 --- a/src/mesa/main/eval.h +++ b/src/mesa/main/eval.h @@ -57,7 +57,7 @@ extern GLuint _mesa_evaluator_components( GLenum target ); -extern void gl_free_control_points( GLcontext *ctx, +extern void gl_free_control_points( struct gl_context *ctx, GLenum target, GLfloat *data ); @@ -103,8 +103,8 @@ _mesa_init_eval_dispatch(struct _glapi_table *disp) #endif /* FEATURE_evaluators */ -extern void _mesa_init_eval( GLcontext *ctx ); -extern void _mesa_free_eval_data( GLcontext *ctx ); +extern void _mesa_init_eval( struct gl_context *ctx ); +extern void _mesa_free_eval_data( struct gl_context *ctx ); #endif /* EVAL_H */ diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 99583a6345d..bc8cbef1320 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -228,7 +228,7 @@ static const struct { * This is a convenience function used by the XMesa, OSMesa, GGI drivers, etc. */ void -_mesa_enable_sw_extensions(GLcontext *ctx) +_mesa_enable_sw_extensions(struct gl_context *ctx) { /*ctx->Extensions.ARB_copy_buffer = GL_TRUE;*/ ctx->Extensions.ARB_depth_clamp = GL_TRUE; @@ -388,7 +388,7 @@ _mesa_enable_sw_extensions(GLcontext *ctx) * Enable common EXT extensions in the ARB_imaging subset. */ void -_mesa_enable_imaging_extensions(GLcontext *ctx) +_mesa_enable_imaging_extensions(struct gl_context *ctx) { ctx->Extensions.EXT_blend_color = GL_TRUE; ctx->Extensions.EXT_blend_logic_op = GL_TRUE; @@ -403,7 +403,7 @@ _mesa_enable_imaging_extensions(GLcontext *ctx) * A convenience function to be called by drivers. */ void -_mesa_enable_1_3_extensions(GLcontext *ctx) +_mesa_enable_1_3_extensions(struct gl_context *ctx) { /*ctx->Extensions.ARB_multisample = GL_TRUE;*/ ctx->Extensions.ARB_multitexture = GL_TRUE; @@ -423,7 +423,7 @@ _mesa_enable_1_3_extensions(GLcontext *ctx) * A convenience function to be called by drivers. */ void -_mesa_enable_1_4_extensions(GLcontext *ctx) +_mesa_enable_1_4_extensions(struct gl_context *ctx) { ctx->Extensions.ARB_depth_texture = GL_TRUE; ctx->Extensions.ARB_shadow = GL_TRUE; @@ -449,7 +449,7 @@ _mesa_enable_1_4_extensions(GLcontext *ctx) * A convenience function to be called by drivers. */ void -_mesa_enable_1_5_extensions(GLcontext *ctx) +_mesa_enable_1_5_extensions(struct gl_context *ctx) { ctx->Extensions.ARB_occlusion_query = GL_TRUE; /*ctx->Extensions.ARB_vertex_buffer_object = GL_TRUE;*/ @@ -462,7 +462,7 @@ _mesa_enable_1_5_extensions(GLcontext *ctx) * A convenience function to be called by drivers. */ void -_mesa_enable_2_0_extensions(GLcontext *ctx) +_mesa_enable_2_0_extensions(struct gl_context *ctx) { /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/ #if FEATURE_ARB_fragment_shader @@ -489,7 +489,7 @@ _mesa_enable_2_0_extensions(GLcontext *ctx) * A convenience function to be called by drivers. */ void -_mesa_enable_2_1_extensions(GLcontext *ctx) +_mesa_enable_2_1_extensions(struct gl_context *ctx) { #if FEATURE_EXT_pixel_buffer_object ctx->Extensions.EXT_pixel_buffer_object = GL_TRUE; @@ -505,7 +505,7 @@ _mesa_enable_2_1_extensions(GLcontext *ctx) * \return GL_TRUE for success, GL_FALSE if invalid extension name */ static GLboolean -set_extension( GLcontext *ctx, const char *name, GLboolean state ) +set_extension( struct gl_context *ctx, const char *name, GLboolean state ) { GLboolean *base = (GLboolean *) &ctx->Extensions; GLuint i; @@ -534,7 +534,7 @@ set_extension( GLcontext *ctx, const char *name, GLboolean state ) * Typically called by drivers. */ void -_mesa_enable_extension( GLcontext *ctx, const char *name ) +_mesa_enable_extension( struct gl_context *ctx, const char *name ) { if (!set_extension(ctx, name, GL_TRUE)) _mesa_problem(ctx, "Trying to enable unknown extension: %s", name); @@ -546,7 +546,7 @@ _mesa_enable_extension( GLcontext *ctx, const char *name ) * XXX is this really needed??? */ void -_mesa_disable_extension( GLcontext *ctx, const char *name ) +_mesa_disable_extension( struct gl_context *ctx, const char *name ) { if (!set_extension(ctx, name, GL_FALSE)) _mesa_problem(ctx, "Trying to disable unknown extension: %s", name); @@ -557,7 +557,7 @@ _mesa_disable_extension( GLcontext *ctx, const char *name ) * Check if the i-th extension is enabled. */ static GLboolean -extension_enabled(GLcontext *ctx, GLuint index) +extension_enabled(struct gl_context *ctx, GLuint index) { const GLboolean *base = (const GLboolean *) &ctx->Extensions; if (!default_extensions[index].flag_offset || @@ -574,7 +574,7 @@ extension_enabled(GLcontext *ctx, GLuint index) * Test if the named extension is enabled in this context. */ GLboolean -_mesa_extension_is_enabled( GLcontext *ctx, const char *name ) +_mesa_extension_is_enabled( struct gl_context *ctx, const char *name ) { GLuint i; @@ -616,7 +616,7 @@ append(const char *a, const char *b) * Return a string of the unknown/leftover names. */ static const char * -get_extension_override( GLcontext *ctx ) +get_extension_override( struct gl_context *ctx ) { const char *envExt = _mesa_getenv("MESA_EXTENSION_OVERRIDE"); char *extraExt = NULL; @@ -667,7 +667,7 @@ get_extension_override( GLcontext *ctx ) * To be called during context initialization. */ void -_mesa_init_extensions( GLcontext *ctx ) +_mesa_init_extensions( struct gl_context *ctx ) { GLboolean *base = (GLboolean *) &ctx->Extensions; GLuint i; @@ -686,7 +686,7 @@ _mesa_init_extensions( GLcontext *ctx ) * glGetString(GL_EXTENSIONS) is called. */ static GLubyte * -compute_extensions( GLcontext *ctx ) +compute_extensions( struct gl_context *ctx ) { const char *extraExt = get_extension_override(ctx); GLuint extStrLen = 0; @@ -753,7 +753,7 @@ append_extension(GLubyte **str, const char *ext) static size_t -make_extension_string_es1(const GLcontext *ctx, GLubyte *str) +make_extension_string_es1(const struct gl_context *ctx, GLubyte *str) { size_t len = 0; @@ -835,7 +835,7 @@ make_extension_string_es1(const GLcontext *ctx, GLubyte *str) static GLubyte * -compute_extensions_es1(const GLcontext *ctx) +compute_extensions_es1(const struct gl_context *ctx) { GLubyte *s; unsigned int len; @@ -850,7 +850,7 @@ compute_extensions_es1(const GLcontext *ctx) } static size_t -make_extension_string_es2(const GLcontext *ctx, GLubyte *str) +make_extension_string_es2(const struct gl_context *ctx, GLubyte *str) { size_t len = 0; @@ -904,7 +904,7 @@ make_extension_string_es2(const GLcontext *ctx, GLubyte *str) } static GLubyte * -compute_extensions_es2(GLcontext *ctx) +compute_extensions_es2(struct gl_context *ctx) { GLubyte *s; unsigned int len; @@ -920,7 +920,7 @@ compute_extensions_es2(GLcontext *ctx) GLubyte * -_mesa_make_extension_string(GLcontext *ctx) +_mesa_make_extension_string(struct gl_context *ctx) { switch (ctx->API) { case API_OPENGL: @@ -939,7 +939,7 @@ _mesa_make_extension_string(GLcontext *ctx) * Return number of enabled extensions. */ GLuint -_mesa_get_extension_count(GLcontext *ctx) +_mesa_get_extension_count(struct gl_context *ctx) { GLuint i; @@ -964,7 +964,7 @@ _mesa_get_extension_count(GLcontext *ctx) * Return name of i-th enabled extension */ const GLubyte * -_mesa_get_enabled_extension(GLcontext *ctx, GLuint index) +_mesa_get_enabled_extension(struct gl_context *ctx, GLuint index) { GLuint i; diff --git a/src/mesa/main/extensions.h b/src/mesa/main/extensions.h index a25472440d6..6eb85393965 100644 --- a/src/mesa/main/extensions.h +++ b/src/mesa/main/extensions.h @@ -40,35 +40,35 @@ #if _HAVE_FULL_GL -extern void _mesa_enable_sw_extensions(GLcontext *ctx); +extern void _mesa_enable_sw_extensions(struct gl_context *ctx); -extern void _mesa_enable_imaging_extensions(GLcontext *ctx); +extern void _mesa_enable_imaging_extensions(struct gl_context *ctx); -extern void _mesa_enable_1_3_extensions(GLcontext *ctx); +extern void _mesa_enable_1_3_extensions(struct gl_context *ctx); -extern void _mesa_enable_1_4_extensions(GLcontext *ctx); +extern void _mesa_enable_1_4_extensions(struct gl_context *ctx); -extern void _mesa_enable_1_5_extensions(GLcontext *ctx); +extern void _mesa_enable_1_5_extensions(struct gl_context *ctx); -extern void _mesa_enable_2_0_extensions(GLcontext *ctx); +extern void _mesa_enable_2_0_extensions(struct gl_context *ctx); -extern void _mesa_enable_2_1_extensions(GLcontext *ctx); +extern void _mesa_enable_2_1_extensions(struct gl_context *ctx); -extern void _mesa_enable_extension(GLcontext *ctx, const char *name); +extern void _mesa_enable_extension(struct gl_context *ctx, const char *name); -extern void _mesa_disable_extension(GLcontext *ctx, const char *name); +extern void _mesa_disable_extension(struct gl_context *ctx, const char *name); -extern GLboolean _mesa_extension_is_enabled(GLcontext *ctx, const char *name); +extern GLboolean _mesa_extension_is_enabled(struct gl_context *ctx, const char *name); -extern void _mesa_init_extensions(GLcontext *ctx); +extern void _mesa_init_extensions(struct gl_context *ctx); -extern GLubyte *_mesa_make_extension_string(GLcontext *ctx); +extern GLubyte *_mesa_make_extension_string(struct gl_context *ctx); extern GLuint -_mesa_get_extension_count(GLcontext *ctx); +_mesa_get_extension_count(struct gl_context *ctx); extern const GLubyte * -_mesa_get_enabled_extension(GLcontext *ctx, GLuint index); +_mesa_get_enabled_extension(struct gl_context *ctx, GLuint index); #else diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index f28846c4c99..3dc78f2bf53 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -95,7 +95,7 @@ delete_dummy_framebuffer(struct gl_framebuffer *fb) void -_mesa_init_fbobjects(GLcontext *ctx) +_mesa_init_fbobjects(struct gl_context *ctx) { _glthread_INIT_MUTEX(DummyFramebuffer.Mutex); _glthread_INIT_MUTEX(DummyRenderbuffer.Mutex); @@ -115,7 +115,7 @@ _mesa_get_incomplete_framebuffer(void) * Helper routine for getting a gl_renderbuffer. */ struct gl_renderbuffer * -_mesa_lookup_renderbuffer(GLcontext *ctx, GLuint id) +_mesa_lookup_renderbuffer(struct gl_context *ctx, GLuint id) { struct gl_renderbuffer *rb; @@ -132,7 +132,7 @@ _mesa_lookup_renderbuffer(GLcontext *ctx, GLuint id) * Helper routine for getting a gl_framebuffer. */ struct gl_framebuffer * -_mesa_lookup_framebuffer(GLcontext *ctx, GLuint id) +_mesa_lookup_framebuffer(struct gl_context *ctx, GLuint id) { struct gl_framebuffer *fb; @@ -166,7 +166,7 @@ invalidate_framebuffer(struct gl_framebuffer *fb) * the depth buffer attachment point. */ struct gl_renderbuffer_attachment * -_mesa_get_attachment(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment) { GLuint i; @@ -216,7 +216,7 @@ _mesa_get_attachment(GLcontext *ctx, struct gl_framebuffer *fb, * window-system framebuffer (not user-created framebuffer objects). */ static struct gl_renderbuffer_attachment * -_mesa_get_fb0_attachment(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_get_fb0_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment) { assert(fb->Name == 0); @@ -255,7 +255,7 @@ _mesa_get_fb0_attachment(GLcontext *ctx, struct gl_framebuffer *fb, * point. Update reference counts, etc. */ void -_mesa_remove_attachment(GLcontext *ctx, struct gl_renderbuffer_attachment *att) +_mesa_remove_attachment(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { if (att->Type == GL_TEXTURE) { ASSERT(att->Texture); @@ -281,7 +281,7 @@ _mesa_remove_attachment(GLcontext *ctx, struct gl_renderbuffer_attachment *att) * The previous binding, if any, will be removed first. */ void -_mesa_set_texture_attachment(GLcontext *ctx, +_mesa_set_texture_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att, struct gl_texture_object *texObj, @@ -322,7 +322,7 @@ _mesa_set_texture_attachment(GLcontext *ctx, * The previous binding, if any, will be removed first. */ void -_mesa_set_renderbuffer_attachment(GLcontext *ctx, +_mesa_set_renderbuffer_attachment(struct gl_context *ctx, struct gl_renderbuffer_attachment *att, struct gl_renderbuffer *rb) { @@ -340,7 +340,7 @@ _mesa_set_renderbuffer_attachment(GLcontext *ctx, * Attach a renderbuffer object to a framebuffer object. */ void -_mesa_framebuffer_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb) { struct gl_renderbuffer_attachment *att; @@ -406,7 +406,7 @@ fbo_incomplete(const char *msg, int index) * if GL_STENCIL, this is a stencil component attachment point. */ static void -test_attachment_completeness(const GLcontext *ctx, GLenum format, +test_attachment_completeness(const struct gl_context *ctx, GLenum format, struct gl_renderbuffer_attachment *att) { assert(format == GL_COLOR || format == GL_DEPTH || format == GL_STENCIL); @@ -563,7 +563,7 @@ test_attachment_completeness(const GLcontext *ctx, GLenum format, * framebuffer is complete. */ void -_mesa_test_framebuffer_completeness(GLcontext *ctx, struct gl_framebuffer *fb) +_mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffer *fb) { GLuint numImages; GLenum intFormat = GL_NONE; /* color buffers' internal format */ @@ -833,7 +833,7 @@ _mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer) * The spec calls for unbinding. */ static void -detach_renderbuffer(GLcontext *ctx, +detach_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer *rb) { @@ -934,7 +934,7 @@ _mesa_GenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers) * we'll also return GL_RED and GL_RG. */ GLenum -_mesa_base_fbo_format(GLcontext *ctx, GLenum internalFormat) +_mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) { switch (internalFormat) { case GL_ALPHA: @@ -1287,7 +1287,7 @@ _mesa_IsFramebufferEXT(GLuint framebuffer) * attachments. */ static void -check_begin_texture_render(GLcontext *ctx, struct gl_framebuffer *fb) +check_begin_texture_render(struct gl_context *ctx, struct gl_framebuffer *fb) { GLuint i; ASSERT(ctx->Driver.RenderTexture); @@ -1312,7 +1312,7 @@ check_begin_texture_render(GLcontext *ctx, struct gl_framebuffer *fb) * notify the device driver that the texture image may have changed. */ static void -check_end_texture_render(GLcontext *ctx, struct gl_framebuffer *fb) +check_end_texture_render(struct gl_context *ctx, struct gl_framebuffer *fb) { if (fb->Name == 0) return; /* can't render to texture with winsys framebuffers */ @@ -1606,7 +1606,7 @@ _mesa_CheckFramebufferStatusEXT(GLenum target) * Common code called by glFramebufferTexture1D/2D/3DEXT(). */ static void -framebuffer_texture(GLcontext *ctx, const char *caller, GLenum target, +framebuffer_texture(struct gl_context *ctx, const char *caller, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h index 9850ee9aa23..9e18e538a6f 100644 --- a/src/mesa/main/fbobject.h +++ b/src/mesa/main/fbobject.h @@ -29,47 +29,47 @@ #include "mtypes.h" extern void -_mesa_init_fbobjects(GLcontext *ctx); +_mesa_init_fbobjects(struct gl_context *ctx); extern struct gl_framebuffer * _mesa_get_incomplete_framebuffer(void); extern struct gl_renderbuffer * -_mesa_lookup_renderbuffer(GLcontext *ctx, GLuint id); +_mesa_lookup_renderbuffer(struct gl_context *ctx, GLuint id); extern struct gl_framebuffer * -_mesa_lookup_framebuffer(GLcontext *ctx, GLuint id); +_mesa_lookup_framebuffer(struct gl_context *ctx, GLuint id); extern struct gl_renderbuffer_attachment * -_mesa_get_attachment(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment); extern void -_mesa_remove_attachment(GLcontext *ctx, +_mesa_remove_attachment(struct gl_context *ctx, struct gl_renderbuffer_attachment *att); extern void -_mesa_set_texture_attachment(GLcontext *ctx, +_mesa_set_texture_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att, struct gl_texture_object *texObj, GLenum texTarget, GLuint level, GLuint zoffset); extern void -_mesa_set_renderbuffer_attachment(GLcontext *ctx, +_mesa_set_renderbuffer_attachment(struct gl_context *ctx, struct gl_renderbuffer_attachment *att, struct gl_renderbuffer *rb); extern void -_mesa_framebuffer_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb); extern void -_mesa_test_framebuffer_completeness(GLcontext *ctx, struct gl_framebuffer *fb); +_mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffer *fb); extern GLenum -_mesa_base_fbo_format(GLcontext *ctx, GLenum internalFormat); +_mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat); extern GLboolean GLAPIENTRY _mesa_IsRenderbufferEXT(GLuint renderbuffer); diff --git a/src/mesa/main/feedback.c b/src/mesa/main/feedback.c index c72b91280ed..ffdecaecc29 100644 --- a/src/mesa/main/feedback.c +++ b/src/mesa/main/feedback.c @@ -116,7 +116,7 @@ _mesa_PassThrough( GLfloat token ) * Put a vertex into the feedback buffer. */ void -_mesa_feedback_vertex(GLcontext *ctx, +_mesa_feedback_vertex(struct gl_context *ctx, const GLfloat win[4], const GLfloat color[4], const GLfloat texcoord[4]) @@ -159,7 +159,7 @@ _mesa_feedback_vertex(GLcontext *ctx, * \note this function can't be put in a display list. * * Verifies we're not in selection mode, flushes the vertices and initialize - * the fields in __GLcontextRec::Select with the given buffer. + * the fields in __struct gl_contextRec::Select with the given buffer. */ static void GLAPIENTRY _mesa_SelectBuffer( GLsizei size, GLuint *buffer ) @@ -192,7 +192,7 @@ _mesa_SelectBuffer( GLsizei size, GLuint *buffer ) * increments the pointer. */ static INLINE void -write_record(GLcontext *ctx, GLuint value) +write_record(struct gl_context *ctx, GLuint value) { if (ctx->Select.BufferCount < ctx->Select.BufferSize) { ctx->Select.Buffer[ctx->Select.BufferCount] = value; @@ -211,7 +211,7 @@ write_record(GLcontext *ctx, GLuint value) * gl_selection::HitMaxZ. */ void -_mesa_update_hitflag(GLcontext *ctx, GLfloat z) +_mesa_update_hitflag(struct gl_context *ctx, GLfloat z) { ctx->Select.HitFlag = GL_TRUE; if (z < ctx->Select.HitMinZ) { @@ -235,7 +235,7 @@ _mesa_update_hitflag(GLcontext *ctx, GLfloat z) * \sa gl_selection. */ static void -write_hit_record(GLcontext *ctx) +write_hit_record(struct gl_context *ctx) { GLuint i; GLuint zmin, zmax, zscale = (~0u); @@ -266,7 +266,7 @@ write_hit_record(GLcontext *ctx) * * Verifies we are in select mode and resets the name stack depth and resets * the hit record data in gl_selection. Marks new render mode in - * __GLcontextRec::NewState. + * __struct gl_contextRec::NewState. */ static void GLAPIENTRY _mesa_InitNames( void ) @@ -297,7 +297,7 @@ _mesa_InitNames( void ) * Flushes vertices. If there is a hit flag writes it (via write_hit_record()), * and replace the top-most name in the stack. * - * sa __GLcontextRec::Select. + * sa __struct gl_contextRec::Select. */ static void GLAPIENTRY _mesa_LoadName( GLuint name ) @@ -336,7 +336,7 @@ _mesa_LoadName( GLuint name ) * Flushes vertices. If there is a hit flag writes it (via write_hit_record()), * and adds the name to the top of the name stack. * - * sa __GLcontextRec::Select. + * sa __struct gl_contextRec::Select. */ static void GLAPIENTRY _mesa_PushName( GLuint name ) @@ -367,7 +367,7 @@ _mesa_PushName( GLuint name ) * Flushes vertices. If there is a hit flag writes it (via write_hit_record()), * and removes top-most name in the name stack. * - * sa __GLcontextRec::Select. + * sa __struct gl_contextRec::Select. */ static void GLAPIENTRY _mesa_PopName( void ) @@ -409,7 +409,7 @@ _mesa_PopName( void ) * Flushes the vertices and do the necessary cleanup according to the previous * rasterization mode, such as writing the hit record or resent the select * buffer index when exiting the select mode. Updates - * __GLcontextRec::RenderMode and notifies the driver via the + * __struct gl_contextRec::RenderMode and notifies the driver via the * dd_function_table::RenderMode callback. */ static GLint GLAPIENTRY @@ -519,7 +519,7 @@ _mesa_init_feedback_dispatch(struct _glapi_table *disp) /** * Initialize context feedback data. */ -void _mesa_init_feedback( GLcontext * ctx ) +void _mesa_init_feedback( struct gl_context * ctx ) { /* Feedback */ ctx->Feedback.Type = GL_2D; /* TODO: verify */ diff --git a/src/mesa/main/feedback.h b/src/mesa/main/feedback.h index c6354b97bcd..f9fbbce70b9 100644 --- a/src/mesa/main/feedback.h +++ b/src/mesa/main/feedback.h @@ -33,14 +33,14 @@ #if FEATURE_feedback extern void -_mesa_feedback_vertex( GLcontext *ctx, +_mesa_feedback_vertex( struct gl_context *ctx, const GLfloat win[4], const GLfloat color[4], const GLfloat texcoord[4] ); static INLINE void -_mesa_feedback_token( GLcontext *ctx, GLfloat token ) +_mesa_feedback_token( struct gl_context *ctx, GLfloat token ) { if (ctx->Feedback.Count < ctx->Feedback.BufferSize) { ctx->Feedback.Buffer[ctx->Feedback.Count] = token; @@ -50,7 +50,7 @@ _mesa_feedback_token( GLcontext *ctx, GLfloat token ) extern void -_mesa_update_hitflag( GLcontext *ctx, GLfloat z ); +_mesa_update_hitflag( struct gl_context *ctx, GLfloat z ); extern void @@ -61,7 +61,7 @@ _mesa_init_feedback_dispatch(struct _glapi_table *disp); #include "main/compiler.h" static INLINE void -_mesa_feedback_vertex( GLcontext *ctx, +_mesa_feedback_vertex( struct gl_context *ctx, const GLfloat win[4], const GLfloat color[4], const GLfloat texcoord[4] ) @@ -72,14 +72,14 @@ _mesa_feedback_vertex( GLcontext *ctx, static INLINE void -_mesa_feedback_token( GLcontext *ctx, GLfloat token ) +_mesa_feedback_token( struct gl_context *ctx, GLfloat token ) { /* render mode is always GL_RENDER */ ASSERT_NO_FEATURE(); } static INLINE void -_mesa_update_hitflag( GLcontext *ctx, GLfloat z ) +_mesa_update_hitflag( struct gl_context *ctx, GLfloat z ) { /* render mode is always GL_RENDER */ ASSERT_NO_FEATURE(); @@ -93,6 +93,6 @@ _mesa_init_feedback_dispatch(struct _glapi_table *disp) #endif /* FEATURE_feedback */ extern void -_mesa_init_feedback( GLcontext *ctx ); +_mesa_init_feedback( struct gl_context *ctx ); #endif /* FEEDBACK_H */ diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c index 92fec09bad0..0f2c313c819 100644 --- a/src/mesa/main/ffvertex_prog.c +++ b/src/mesa/main/ffvertex_prog.c @@ -109,7 +109,7 @@ static GLuint translate_texgen( GLboolean enabled, GLenum mode ) -static GLboolean check_active_shininess( GLcontext *ctx, +static GLboolean check_active_shininess( struct gl_context *ctx, const struct state_key *key, GLuint side ) { @@ -129,7 +129,7 @@ static GLboolean check_active_shininess( GLcontext *ctx, } -static void make_state_key( GLcontext *ctx, struct state_key *key ) +static void make_state_key( struct gl_context *ctx, struct state_key *key ) { const struct gl_fragment_program *fp; GLuint i; @@ -1638,7 +1638,7 @@ create_new_program( const struct state_key *key, * XXX move this into core mesa (main/) */ struct gl_vertex_program * -_mesa_get_fixed_func_vertex_program(GLcontext *ctx) +_mesa_get_fixed_func_vertex_program(struct gl_context *ctx) { struct gl_vertex_program *prog; struct state_key key; diff --git a/src/mesa/main/ffvertex_prog.h b/src/mesa/main/ffvertex_prog.h index 38dc5fbb8d3..72cd6ea115d 100644 --- a/src/mesa/main/ffvertex_prog.h +++ b/src/mesa/main/ffvertex_prog.h @@ -33,7 +33,7 @@ #include "main/mtypes.h" struct gl_vertex_program * -_mesa_get_fixed_func_vertex_program(GLcontext *ctx); +_mesa_get_fixed_func_vertex_program(struct gl_context *ctx); diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c index 9f26c012d66..fd64bd1fd89 100644 --- a/src/mesa/main/fog.c +++ b/src/mesa/main/fog.c @@ -178,7 +178,7 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) /***** Initialization *****/ /**********************************************************************/ -void _mesa_init_fog( GLcontext * ctx ) +void _mesa_init_fog( struct gl_context * ctx ) { /* Fog group */ ctx->Fog.Enabled = GL_FALSE; diff --git a/src/mesa/main/fog.h b/src/mesa/main/fog.h index a14d19cdb39..7df4f0b6735 100644 --- a/src/mesa/main/fog.h +++ b/src/mesa/main/fog.h @@ -54,7 +54,7 @@ _mesa_Fogfv(GLenum pname, const GLfloat *params ); extern void GLAPIENTRY _mesa_Fogiv(GLenum pname, const GLint *params ); -extern void _mesa_init_fog( GLcontext * ctx ); +extern void _mesa_init_fog( struct gl_context * ctx ); #else diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index 0e9e6def9b6..af3b5dfcf9b 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -102,7 +102,7 @@ _mesa_create_framebuffer(const struct gl_config *visual) * \sa _mesa_create_framebuffer */ struct gl_framebuffer * -_mesa_new_framebuffer(GLcontext *ctx, GLuint name) +_mesa_new_framebuffer(struct gl_context *ctx, GLuint name) { struct gl_framebuffer *fb; (void) ctx; @@ -281,7 +281,7 @@ _mesa_reference_framebuffer(struct gl_framebuffer **ptr, * without a currently bound rendering context. */ void -_mesa_resize_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_resize_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint width, GLuint height) { GLuint i; @@ -359,7 +359,7 @@ _mesa_resize_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb, * from device drivers (as was done in the past). */ void -_mesa_resizebuffers( GLcontext *ctx ) +_mesa_resizebuffers( struct gl_context *ctx ) { ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx ); @@ -429,7 +429,7 @@ _mesa_ResizeBuffersMESA( void ) * window-system framebuffes. */ static void -update_framebuffer_size(GLcontext *ctx, struct gl_framebuffer *fb) +update_framebuffer_size(struct gl_context *ctx, struct gl_framebuffer *fb) { GLuint minWidth = ~0, minHeight = ~0; GLuint i; @@ -464,7 +464,7 @@ update_framebuffer_size(GLcontext *ctx, struct gl_framebuffer *fb) * \param ctx the GL context. */ void -_mesa_update_draw_buffer_bounds(GLcontext *ctx) +_mesa_update_draw_buffer_bounds(struct gl_context *ctx) { struct gl_framebuffer *buffer = ctx->DrawBuffer; @@ -600,7 +600,7 @@ _mesa_update_framebuffer_visual(struct gl_framebuffer *fb) * \param attIndex indicates the renderbuffer to possibly wrap */ void -_mesa_update_depth_buffer(GLcontext *ctx, +_mesa_update_depth_buffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint attIndex) { @@ -641,7 +641,7 @@ _mesa_update_depth_buffer(GLcontext *ctx, * \param attIndex indicates the renderbuffer to possibly wrap */ void -_mesa_update_stencil_buffer(GLcontext *ctx, +_mesa_update_stencil_buffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint attIndex) { @@ -722,7 +722,7 @@ _mesa_update_stencil_buffer(GLcontext *ctx, * writing colors. */ static void -update_color_draw_buffers(GLcontext *ctx, struct gl_framebuffer *fb) +update_color_draw_buffers(struct gl_context *ctx, struct gl_framebuffer *fb) { GLuint output; @@ -746,7 +746,7 @@ update_color_draw_buffers(GLcontext *ctx, struct gl_framebuffer *fb) * Unlike the DrawBuffer, we can only read from one (or zero) color buffers. */ static void -update_color_read_buffer(GLcontext *ctx, struct gl_framebuffer *fb) +update_color_read_buffer(struct gl_context *ctx, struct gl_framebuffer *fb) { (void) ctx; if (fb->_ColorReadBufferIndex == -1 || @@ -781,7 +781,7 @@ update_color_read_buffer(GLcontext *ctx, struct gl_framebuffer *fb) * glRenderbufferStorageEXT. */ static void -update_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb) +update_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) { if (fb->Name == 0) { /* This is a window-system framebuffer */ @@ -823,7 +823,7 @@ update_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb) * Update state related to the current draw/read framebuffers. */ void -_mesa_update_framebuffer(GLcontext *ctx) +_mesa_update_framebuffer(struct gl_context *ctx) { struct gl_framebuffer *drawFb; struct gl_framebuffer *readFb; @@ -846,7 +846,7 @@ _mesa_update_framebuffer(GLcontext *ctx) * \return GL_TRUE if buffer exists, GL_FALSE otherwise */ GLboolean -_mesa_source_buffer_exists(GLcontext *ctx, GLenum format) +_mesa_source_buffer_exists(struct gl_context *ctx, GLenum format) { const struct gl_renderbuffer_attachment *att = ctx->ReadBuffer->Attachment; @@ -922,7 +922,7 @@ _mesa_source_buffer_exists(GLcontext *ctx, GLenum format) * XXX could do some code merging w/ above function. */ GLboolean -_mesa_dest_buffer_exists(GLcontext *ctx, GLenum format) +_mesa_dest_buffer_exists(struct gl_context *ctx, GLenum format) { const struct gl_renderbuffer_attachment *att = ctx->DrawBuffer->Attachment; @@ -993,7 +993,7 @@ _mesa_dest_buffer_exists(GLcontext *ctx, GLenum format) * Used to answer the GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES query. */ GLenum -_mesa_get_color_read_format(GLcontext *ctx) +_mesa_get_color_read_format(struct gl_context *ctx) { switch (ctx->ReadBuffer->_ColorReadBuffer->Format) { case MESA_FORMAT_ARGB8888: @@ -1010,7 +1010,7 @@ _mesa_get_color_read_format(GLcontext *ctx) * Used to answer the GL_IMPLEMENTATION_COLOR_READ_TYPE_OES query. */ GLenum -_mesa_get_color_read_type(GLcontext *ctx) +_mesa_get_color_read_type(struct gl_context *ctx) { switch (ctx->ReadBuffer->_ColorReadBuffer->Format) { case MESA_FORMAT_ARGB8888: diff --git a/src/mesa/main/framebuffer.h b/src/mesa/main/framebuffer.h index 0cf28424cf9..13722ea457a 100644 --- a/src/mesa/main/framebuffer.h +++ b/src/mesa/main/framebuffer.h @@ -32,7 +32,7 @@ extern struct gl_framebuffer * _mesa_create_framebuffer(const struct gl_config *visual); extern struct gl_framebuffer * -_mesa_new_framebuffer(GLcontext *ctx, GLuint name); +_mesa_new_framebuffer(struct gl_context *ctx, GLuint name); extern void _mesa_initialize_window_framebuffer(struct gl_framebuffer *fb, @@ -52,45 +52,45 @@ _mesa_reference_framebuffer(struct gl_framebuffer **ptr, struct gl_framebuffer *fb); extern void -_mesa_resize_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_resize_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint width, GLuint height); extern void -_mesa_resizebuffers( GLcontext *ctx ); +_mesa_resizebuffers( struct gl_context *ctx ); extern void GLAPIENTRY _mesa_ResizeBuffersMESA( void ); extern void -_mesa_update_draw_buffer_bounds(GLcontext *ctx); +_mesa_update_draw_buffer_bounds(struct gl_context *ctx); extern void _mesa_update_framebuffer_visual(struct gl_framebuffer *fb); extern void -_mesa_update_depth_buffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_update_depth_buffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint attIndex); extern void -_mesa_update_stencil_buffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_update_stencil_buffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint attIndex); extern void -_mesa_update_framebuffer(GLcontext *ctx); +_mesa_update_framebuffer(struct gl_context *ctx); extern GLboolean -_mesa_source_buffer_exists(GLcontext *ctx, GLenum format); +_mesa_source_buffer_exists(struct gl_context *ctx, GLenum format); extern GLboolean -_mesa_dest_buffer_exists(GLcontext *ctx, GLenum format); +_mesa_dest_buffer_exists(struct gl_context *ctx, GLenum format); extern GLenum -_mesa_get_color_read_type(GLcontext *ctx); +_mesa_get_color_read_type(struct gl_context *ctx); extern GLenum -_mesa_get_color_read_format(GLcontext *ctx); +_mesa_get_color_read_format(struct gl_context *ctx); extern void _mesa_print_framebuffer(const struct gl_framebuffer *fb); diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index cb456fb64d8..8224c15627c 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -36,17 +36,17 @@ /* This is a table driven implemetation of the glGet*v() functions. * The basic idea is that most getters just look up an int somewhere - * in GLcontext and then convert it to a bool or float according to + * in struct gl_context and then convert it to a bool or float according to * which of glGetIntegerv() glGetBooleanv() etc is being called. * Instead of generating code to do this, we can just record the enum - * value and the offset into GLcontext in an array of structs. Then + * value and the offset into struct gl_context in an array of structs. Then * in glGet*(), we lookup the struct for the enum in question, and use * the offset to get the int we need. * * Sometimes we need to look up a float, a boolean, a bit in a * bitfield, a matrix or other types instead, so we need to track the - * type of the value in GLcontext. And sometimes the value isn't in - * GLcontext but in the drawbuffer, the array object, current texture + * type of the value in struct gl_context. And sometimes the value isn't in + * struct gl_context but in the drawbuffer, the array object, current texture * unit, or maybe it's a computed value. So we need to also track * where or how to find the value. Finally, we sometimes need to * check that one of a number of extensions are enabled, the GL @@ -165,7 +165,7 @@ union value { #define BUFFER_FIELD(field, type) \ LOC_BUFFER, type, offsetof(struct gl_framebuffer, field) #define CONTEXT_FIELD(field, type) \ - LOC_CONTEXT, type, offsetof(GLcontext, field) + LOC_CONTEXT, type, offsetof(struct gl_context, field) #define ARRAY_FIELD(field, type) \ LOC_ARRAY, type, offsetof(struct gl_array_object, field) #define CONST(value) \ @@ -371,7 +371,7 @@ static const struct value_desc values[] = { { GL_MAX_ELEMENTS_VERTICES, CONTEXT_INT(Const.MaxArrayLockSize), NO_EXTRA }, { GL_MAX_ELEMENTS_INDICES, CONTEXT_INT(Const.MaxArrayLockSize), NO_EXTRA }, { GL_MAX_TEXTURE_SIZE, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, Const.MaxTextureLevels), NO_EXTRA }, + offsetof(struct gl_context, Const.MaxTextureLevels), NO_EXTRA }, { GL_MAX_VIEWPORT_DIMS, CONTEXT_INT2(Const.MaxViewportWidth), NO_EXTRA }, { GL_PACK_ALIGNMENT, CONTEXT_INT(Pack.Alignment), NO_EXTRA }, { GL_ALIASED_POINT_SIZE_RANGE, CONTEXT_FLOAT2(Const.MinPointSize), NO_EXTRA }, @@ -410,7 +410,7 @@ static const struct value_desc values[] = { { GL_TEXTURE_BINDING_CUBE_MAP_ARB, LOC_CUSTOM, TYPE_INT, TEXTURE_CUBE_INDEX, extra_ARB_texture_cube_map }, { GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, Const.MaxCubeTextureLevels), + offsetof(struct gl_context, Const.MaxCubeTextureLevels), extra_ARB_texture_cube_map }, /* XXX: OES_texture_cube_map */ /* XXX: OES_blend_subtract */ @@ -522,7 +522,7 @@ static const struct value_desc values[] = { { GL_MAX_TEXTURE_STACK_DEPTH, CONST(MAX_TEXTURE_STACK_DEPTH), NO_EXTRA }, { GL_MODELVIEW_MATRIX, CONTEXT_MATRIX(ModelviewMatrixStack.Top), NO_EXTRA }, { GL_MODELVIEW_STACK_DEPTH, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, ModelviewMatrixStack.Depth), NO_EXTRA }, + offsetof(struct gl_context, ModelviewMatrixStack.Depth), NO_EXTRA }, { GL_NORMALIZE, CONTEXT_BOOL(Transform.Normalize), NO_EXTRA }, { GL_PACK_SKIP_IMAGES_EXT, CONTEXT_INT(Pack.SkipImages), NO_EXTRA }, { GL_PERSPECTIVE_CORRECTION_HINT, CONTEXT_ENUM(Hint.PerspectiveCorrection), NO_EXTRA }, @@ -535,7 +535,7 @@ static const struct value_desc values[] = { { GL_POINT_FADE_THRESHOLD_SIZE_EXT, CONTEXT_FLOAT(Point.Threshold), NO_EXTRA }, { GL_PROJECTION_MATRIX, CONTEXT_MATRIX(ProjectionMatrixStack.Top), NO_EXTRA }, { GL_PROJECTION_STACK_DEPTH, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, ProjectionMatrixStack.Depth), NO_EXTRA }, + offsetof(struct gl_context, ProjectionMatrixStack.Depth), NO_EXTRA }, { GL_RESCALE_NORMAL, CONTEXT_BOOL(Transform.RescaleNormals), NO_EXTRA }, { GL_SHADE_MODEL, CONTEXT_ENUM(Light.ShadeModel), NO_EXTRA }, { GL_TEXTURE_2D, LOC_CUSTOM, TYPE_BOOLEAN, 0, NO_EXTRA }, @@ -672,7 +672,7 @@ static const struct value_desc values[] = { /* OES_texture_3D */ { GL_TEXTURE_BINDING_3D, LOC_CUSTOM, TYPE_INT, TEXTURE_3D_INDEX, NO_EXTRA }, { GL_MAX_3D_TEXTURE_SIZE, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, Const.Max3DTextureLevels), NO_EXTRA }, + offsetof(struct gl_context, Const.Max3DTextureLevels), NO_EXTRA }, /* GL_ARB_fragment_program/OES_standard_derivatives */ { GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB, @@ -683,11 +683,11 @@ static const struct value_desc values[] = { /* Enums unique to OpenGL ES 2.0 */ { 0, 0, TYPE_API_MASK, API_OPENGLES2_BIT, NO_EXTRA }, { GL_MAX_FRAGMENT_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, Const.FragmentProgram.MaxUniformComponents), NO_EXTRA }, + offsetof(struct gl_context, Const.FragmentProgram.MaxUniformComponents), NO_EXTRA }, { GL_MAX_VARYING_VECTORS, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, Const.MaxVarying), NO_EXTRA }, + offsetof(struct gl_context, Const.MaxVarying), NO_EXTRA }, { GL_MAX_VERTEX_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, - offsetof(GLcontext, Const.VertexProgram.MaxUniformComponents), NO_EXTRA }, + offsetof(struct gl_context, Const.VertexProgram.MaxUniformComponents), NO_EXTRA }, { GL_SHADER_COMPILER, CONST(1), NO_EXTRA }, /* OES_get_program_binary */ { GL_NUM_SHADER_BINARY_FORMATS, CONST(0), NO_EXTRA }, @@ -1256,7 +1256,7 @@ print_table_stats(void) * * \param the current context, for determining the API in question */ -void _mesa_init_get_hash(GLcontext *ctx) +void _mesa_init_get_hash(struct gl_context *ctx) { int i, hash, index, mask; int api_mask = 0, api_bit; @@ -1305,7 +1305,7 @@ void _mesa_init_get_hash(GLcontext *ctx) * \param v pointer to the tmp declared in the calling glGet*v() function */ static void -find_custom_value(GLcontext *ctx, const struct value_desc *d, union value *v) +find_custom_value(struct gl_context *ctx, const struct value_desc *d, union value *v) { struct gl_buffer_object *buffer_obj; struct gl_client_array *array; @@ -1583,7 +1583,7 @@ find_custom_value(GLcontext *ctx, const struct value_desc *d, union value *v) * otherwise GL_TRUE. */ static GLboolean -check_extra(GLcontext *ctx, const char *func, const struct value_desc *d) +check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d) { const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor; int total, enabled; diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c index 3910047fb5d..bfa283f6a30 100644 --- a/src/mesa/main/getstring.c +++ b/src/mesa/main/getstring.c @@ -35,7 +35,7 @@ * Return the string for a glGetString(GL_SHADING_LANGUAGE_VERSION) query. */ static const GLubyte * -shading_language_version(GLcontext *ctx) +shading_language_version(struct gl_context *ctx) { switch (ctx->API) { case API_OPENGL: @@ -233,7 +233,7 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params ) * Returns the current GL error code, or GL_NO_ERROR. * \return current error code * - * Returns __GLcontextRec::ErrorValue. + * Returns __struct gl_contextRec::ErrorValue. */ GLenum GLAPIENTRY _mesa_GetError( void ) diff --git a/src/mesa/main/hash.c b/src/mesa/main/hash.c index b624e6ecac1..72d924dcc38 100644 --- a/src/mesa/main/hash.c +++ b/src/mesa/main/hash.c @@ -277,7 +277,7 @@ _mesa_HashRemove(struct _mesa_HashTable *table, GLuint key) * \param table the hash table to delete * \param callback the callback function * \param userData arbitrary pointer to pass along to the callback - * (this is typically a GLcontext pointer) + * (this is typically a struct gl_context pointer) */ void _mesa_HashDeleteAll(struct _mesa_HashTable *table, @@ -313,7 +313,7 @@ _mesa_HashDeleteAll(struct _mesa_HashTable *table, * \param table the hash table to walk * \param callback the callback function * \param userData arbitrary pointer to pass along to the callback - * (this is typically a GLcontext pointer) + * (this is typically a struct gl_context pointer) */ void _mesa_HashWalk(const struct _mesa_HashTable *table, diff --git a/src/mesa/main/hint.c b/src/mesa/main/hint.c index 8902ae37763..878f10d4a43 100644 --- a/src/mesa/main/hint.c +++ b/src/mesa/main/hint.c @@ -130,7 +130,7 @@ _mesa_Hint( GLenum target, GLenum mode ) /***** Initialization *****/ /**********************************************************************/ -void _mesa_init_hint( GLcontext * ctx ) +void _mesa_init_hint( struct gl_context * ctx ) { /* Hint group */ ctx->Hint.PerspectiveCorrection = GL_DONT_CARE; diff --git a/src/mesa/main/hint.h b/src/mesa/main/hint.h index bfc3887107d..66e78ad6557 100644 --- a/src/mesa/main/hint.h +++ b/src/mesa/main/hint.h @@ -45,7 +45,7 @@ extern void GLAPIENTRY _mesa_Hint( GLenum target, GLenum mode ); extern void -_mesa_init_hint( GLcontext * ctx ); +_mesa_init_hint( struct gl_context * ctx ); #else diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index f83fcc725d8..2c3af332c0c 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -399,7 +399,7 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type ) * otherwise. */ GLboolean -_mesa_is_legal_format_and_type( GLcontext *ctx, GLenum format, GLenum type ) +_mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum type ) { switch (format) { case GL_COLOR_INDEX: @@ -869,7 +869,7 @@ _mesa_is_integer_format(GLenum format) * \return GL_TRUE if compressed, GL_FALSE if uncompressed */ GLboolean -_mesa_is_compressed_format(GLcontext *ctx, GLenum format) +_mesa_is_compressed_format(struct gl_context *ctx, GLenum format) { switch (format) { case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: @@ -1541,7 +1541,7 @@ _mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4], * Apply pixel mapping to an array of floating point RGBA pixels. */ void -_mesa_map_rgba( const GLcontext *ctx, GLuint n, GLfloat rgba[][4] ) +_mesa_map_rgba( const struct gl_context *ctx, GLuint n, GLfloat rgba[][4] ) { const GLfloat rscale = (GLfloat) (ctx->PixelMaps.RtoR.Size - 1); const GLfloat gscale = (GLfloat) (ctx->PixelMaps.GtoG.Size - 1); @@ -1829,7 +1829,7 @@ _mesa_lookup_rgba_ubyte(const struct gl_color_table *table, * Map color indexes to float rgba values. */ void -_mesa_map_ci_to_rgba( const GLcontext *ctx, GLuint n, +_mesa_map_ci_to_rgba( const struct gl_context *ctx, GLuint n, const GLuint index[], GLfloat rgba[][4] ) { GLuint rmask = ctx->PixelMaps.ItoR.Size - 1; @@ -1854,7 +1854,7 @@ _mesa_map_ci_to_rgba( const GLcontext *ctx, GLuint n, * Map ubyte color indexes to ubyte/RGBA values. */ void -_mesa_map_ci8_to_rgba8(const GLcontext *ctx, GLuint n, const GLubyte index[], +_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, GLuint n, const GLubyte index[], GLubyte rgba[][4]) { GLuint rmask = ctx->PixelMaps.ItoR.Size - 1; @@ -1876,7 +1876,7 @@ _mesa_map_ci8_to_rgba8(const GLcontext *ctx, GLuint n, const GLubyte index[], void -_mesa_scale_and_bias_depth(const GLcontext *ctx, GLuint n, +_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n, GLfloat depthValues[]) { const GLfloat scale = ctx->Pixel.DepthScale; @@ -1890,7 +1890,7 @@ _mesa_scale_and_bias_depth(const GLcontext *ctx, GLuint n, void -_mesa_scale_and_bias_depth_uint(const GLcontext *ctx, GLuint n, +_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n, GLuint depthValues[]) { const GLdouble max = (double) 0xffffffff; @@ -1909,7 +1909,7 @@ _mesa_scale_and_bias_depth_uint(const GLcontext *ctx, GLuint n, * as indicated by the transferOps bitmask */ void -_mesa_apply_rgba_transfer_ops(GLcontext *ctx, GLbitfield transferOps, +_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps, GLuint n, GLfloat rgba[][4]) { /* scale & bias */ @@ -1942,7 +1942,7 @@ _mesa_apply_rgba_transfer_ops(GLcontext *ctx, GLbitfield transferOps, * Apply color index shift and offset to an array of pixels. */ static void -shift_and_offset_ci( const GLcontext *ctx, GLuint n, GLuint indexes[] ) +shift_and_offset_ci( const struct gl_context *ctx, GLuint n, GLuint indexes[] ) { GLint shift = ctx->Pixel.IndexShift; GLint offset = ctx->Pixel.IndexOffset; @@ -1972,7 +1972,7 @@ shift_and_offset_ci( const GLcontext *ctx, GLuint n, GLuint indexes[] ) * of color indexes; */ void -_mesa_apply_ci_transfer_ops(const GLcontext *ctx, GLbitfield transferOps, +_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, GLbitfield transferOps, GLuint n, GLuint indexes[]) { if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { @@ -1994,7 +1994,7 @@ _mesa_apply_ci_transfer_ops(const GLcontext *ctx, GLbitfield transferOps, * of stencil values. */ void -_mesa_apply_stencil_transfer_ops(const GLcontext *ctx, GLuint n, +_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n, GLstencil stencil[]) { if (ctx->Pixel.IndexShift != 0 || ctx->Pixel.IndexOffset != 0) { @@ -2035,7 +2035,7 @@ _mesa_apply_stencil_transfer_ops(const GLcontext *ctx, GLuint n, * transfer ops are enabled. */ void -_mesa_pack_rgba_span_float(GLcontext *ctx, GLuint n, GLfloat rgba[][4], +_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], GLenum dstFormat, GLenum dstType, GLvoid *dstAddr, const struct gl_pixelstore_attrib *dstPacking, @@ -3912,7 +3912,7 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4], * XXX perhaps expand this to process whole images someday. */ void -_mesa_unpack_color_span_chan( GLcontext *ctx, +_mesa_unpack_color_span_chan( struct gl_context *ctx, GLuint n, GLenum dstFormat, GLchan dest[], GLenum srcFormat, GLenum srcType, const GLvoid *source, @@ -4262,7 +4262,7 @@ _mesa_unpack_color_span_chan( GLcontext *ctx, * instead of GLchan. */ void -_mesa_unpack_color_span_float( GLcontext *ctx, +_mesa_unpack_color_span_float( struct gl_context *ctx, GLuint n, GLenum dstFormat, GLfloat dest[], GLenum srcFormat, GLenum srcType, const GLvoid *source, @@ -4498,7 +4498,7 @@ _mesa_unpack_color_span_float( GLcontext *ctx, * directly return GLbyte data, no transfer ops apply. */ void -_mesa_unpack_dudv_span_byte( GLcontext *ctx, +_mesa_unpack_dudv_span_byte( struct gl_context *ctx, GLuint n, GLenum dstFormat, GLbyte dest[], GLenum srcFormat, GLenum srcType, const GLvoid *source, @@ -4565,7 +4565,7 @@ _mesa_unpack_dudv_span_byte( GLcontext *ctx, * transferOps - the pixel transfer operations to apply */ void -_mesa_unpack_index_span( const GLcontext *ctx, GLuint n, +_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, @@ -4643,7 +4643,7 @@ _mesa_unpack_index_span( const GLcontext *ctx, GLuint n, void -_mesa_pack_index_span( const GLcontext *ctx, GLuint n, +_mesa_pack_index_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLuint *source, const struct gl_pixelstore_attrib *dstPacking, GLbitfield transferOps ) @@ -4773,7 +4773,7 @@ _mesa_pack_index_span( const GLcontext *ctx, GLuint n, * transferOps - apply offset/bias/lookup ops? */ void -_mesa_unpack_stencil_span( const GLcontext *ctx, GLuint n, +_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, @@ -4868,7 +4868,7 @@ _mesa_unpack_stencil_span( const GLcontext *ctx, GLuint n, void -_mesa_pack_stencil_span( const GLcontext *ctx, GLuint n, +_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLstencil *source, const struct gl_pixelstore_attrib *dstPacking ) { @@ -5043,7 +5043,7 @@ _mesa_pack_stencil_span( const GLcontext *ctx, GLuint n, * (ignored for GLfloat). */ void -_mesa_unpack_depth_span( const GLcontext *ctx, GLuint n, +_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLuint depthMax, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking ) @@ -5242,7 +5242,7 @@ _mesa_unpack_depth_span( const GLcontext *ctx, GLuint n, * Pack an array of depth values. The values are floats in [0,1]. */ void -_mesa_pack_depth_span( const GLcontext *ctx, GLuint n, GLvoid *dest, +_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, GLenum dstType, const GLfloat *depthSpan, const struct gl_pixelstore_attrib *dstPacking ) { @@ -5358,7 +5358,7 @@ _mesa_pack_depth_span( const GLcontext *ctx, GLuint n, GLvoid *dest, * Pack depth and stencil values as GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8. */ void -_mesa_pack_depth_stencil_span(const GLcontext *ctx, GLuint n, GLuint *dest, +_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest, const GLfloat *depthVals, const GLstencil *stencilVals, const struct gl_pixelstore_attrib *dstPacking) @@ -5673,7 +5673,7 @@ _mesa_convert_colors(GLenum srcType, const GLvoid *src, * GL_FALSE if image was completely clipped away (draw nothing) */ GLboolean -_mesa_clip_drawpixels(const GLcontext *ctx, +_mesa_clip_drawpixels(const struct gl_context *ctx, GLint *destX, GLint *destY, GLsizei *width, GLsizei *height, struct gl_pixelstore_attrib *unpack) @@ -5744,7 +5744,7 @@ _mesa_clip_drawpixels(const GLcontext *ctx, * GL_FALSE if image was completely clipped away (draw nothing) */ GLboolean -_mesa_clip_readpixels(const GLcontext *ctx, +_mesa_clip_readpixels(const struct gl_context *ctx, GLint *srcX, GLint *srcY, GLsizei *width, GLsizei *height, struct gl_pixelstore_attrib *pack) @@ -5794,7 +5794,7 @@ _mesa_clip_readpixels(const GLcontext *ctx, * \return GL_FALSE if region is totally clipped, GL_TRUE otherwise. */ GLboolean -_mesa_clip_copytexsubimage(const GLcontext *ctx, +_mesa_clip_copytexsubimage(const struct gl_context *ctx, GLint *destX, GLint *destY, GLint *srcX, GLint *srcY, GLsizei *width, GLsizei *height) @@ -5937,7 +5937,7 @@ clip_left_or_bottom(GLint *srcX0, GLint *srcX1, * \return GL_TRUE if anything is left to draw, GL_FALSE if totally clipped */ GLboolean -_mesa_clip_blit(GLcontext *ctx, +_mesa_clip_blit(struct gl_context *ctx, GLint *srcX0, GLint *srcY0, GLint *srcX1, GLint *srcY1, GLint *dstX0, GLint *dstY0, GLint *dstX1, GLint *dstY1) { diff --git a/src/mesa/main/image.h b/src/mesa/main/image.h index 672dbf2823e..ed5ffa368c5 100644 --- a/src/mesa/main/image.h +++ b/src/mesa/main/image.h @@ -52,7 +52,7 @@ extern GLint _mesa_bytes_per_pixel( GLenum format, GLenum type ); extern GLboolean -_mesa_is_legal_format_and_type( GLcontext *ctx, GLenum format, GLenum type ); +_mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum type ); extern GLboolean _mesa_is_color_format(GLenum format); @@ -82,7 +82,7 @@ extern GLboolean _mesa_is_integer_format(GLenum format); extern GLboolean -_mesa_is_compressed_format(GLcontext *ctx, GLenum format); +_mesa_is_compressed_format(struct gl_context *ctx, GLenum format); extern GLvoid * _mesa_image_address( GLuint dimensions, @@ -161,7 +161,7 @@ _mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4], GLfloat bBias, GLfloat aBias); extern void -_mesa_map_rgba(const GLcontext *ctx, GLuint n, GLfloat rgba[][4]); +_mesa_map_rgba(const struct gl_context *ctx, GLuint n, GLfloat rgba[][4]); extern void _mesa_lookup_rgba_float(const struct gl_color_table *table, @@ -173,47 +173,47 @@ _mesa_lookup_rgba_ubyte(const struct gl_color_table *table, extern void -_mesa_map_ci_to_rgba(const GLcontext *ctx, +_mesa_map_ci_to_rgba(const struct gl_context *ctx, GLuint n, const GLuint index[], GLfloat rgba[][4]); extern void -_mesa_map_ci8_to_rgba8(const GLcontext *ctx, GLuint n, const GLubyte index[], +_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, GLuint n, const GLubyte index[], GLubyte rgba[][4]); extern void -_mesa_scale_and_bias_depth(const GLcontext *ctx, GLuint n, +_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n, GLfloat depthValues[]); extern void -_mesa_scale_and_bias_depth_uint(const GLcontext *ctx, GLuint n, +_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n, GLuint depthValues[]); extern void -_mesa_apply_rgba_transfer_ops(GLcontext *ctx, GLbitfield transferOps, +_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps, GLuint n, GLfloat rgba[][4]); extern void -_mesa_apply_ci_transfer_ops(const GLcontext *ctx, GLbitfield transferOps, +_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, GLbitfield transferOps, GLuint n, GLuint indexes[]); extern void -_mesa_apply_stencil_transfer_ops(const GLcontext *ctx, GLuint n, +_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n, GLstencil stencil[]); extern void -_mesa_pack_rgba_span_float( GLcontext *ctx, GLuint n, GLfloat rgba[][4], +_mesa_pack_rgba_span_float( struct gl_context *ctx, GLuint n, GLfloat rgba[][4], GLenum dstFormat, GLenum dstType, GLvoid *dstAddr, const struct gl_pixelstore_attrib *dstPacking, GLbitfield transferOps ); extern void -_mesa_unpack_color_span_chan( GLcontext *ctx, +_mesa_unpack_color_span_chan( struct gl_context *ctx, GLuint n, GLenum dstFormat, GLchan dest[], GLenum srcFormat, GLenum srcType, const GLvoid *source, @@ -222,7 +222,7 @@ _mesa_unpack_color_span_chan( GLcontext *ctx, extern void -_mesa_unpack_color_span_float( GLcontext *ctx, +_mesa_unpack_color_span_float( struct gl_context *ctx, GLuint n, GLenum dstFormat, GLfloat dest[], GLenum srcFormat, GLenum srcType, const GLvoid *source, @@ -230,7 +230,7 @@ _mesa_unpack_color_span_float( GLcontext *ctx, GLbitfield transferOps ); extern void -_mesa_unpack_dudv_span_byte( GLcontext *ctx, +_mesa_unpack_dudv_span_byte( struct gl_context *ctx, GLuint n, GLenum dstFormat, GLbyte dest[], GLenum srcFormat, GLenum srcType, const GLvoid *source, @@ -238,7 +238,7 @@ _mesa_unpack_dudv_span_byte( GLcontext *ctx, GLbitfield transferOps ); extern void -_mesa_unpack_index_span( const GLcontext *ctx, GLuint n, +_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, @@ -246,39 +246,39 @@ _mesa_unpack_index_span( const GLcontext *ctx, GLuint n, extern void -_mesa_pack_index_span( const GLcontext *ctx, GLuint n, +_mesa_pack_index_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLuint *source, const struct gl_pixelstore_attrib *dstPacking, GLbitfield transferOps ); extern void -_mesa_unpack_stencil_span( const GLcontext *ctx, GLuint n, +_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, GLbitfield transferOps ); extern void -_mesa_pack_stencil_span( const GLcontext *ctx, GLuint n, +_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLstencil *source, const struct gl_pixelstore_attrib *dstPacking ); extern void -_mesa_unpack_depth_span( const GLcontext *ctx, GLuint n, +_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLuint depthMax, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking ); extern void -_mesa_pack_depth_span( const GLcontext *ctx, GLuint n, GLvoid *dest, +_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, GLenum dstType, const GLfloat *depthSpan, const struct gl_pixelstore_attrib *dstPacking ); extern void -_mesa_pack_depth_stencil_span(const GLcontext *ctx, GLuint n, GLuint *dest, +_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest, const GLfloat *depthVals, const GLstencil *stencilVals, const struct gl_pixelstore_attrib *dstPacking); @@ -298,20 +298,20 @@ _mesa_convert_colors(GLenum srcType, const GLvoid *src, extern GLboolean -_mesa_clip_drawpixels(const GLcontext *ctx, +_mesa_clip_drawpixels(const struct gl_context *ctx, GLint *destX, GLint *destY, GLsizei *width, GLsizei *height, struct gl_pixelstore_attrib *unpack); extern GLboolean -_mesa_clip_readpixels(const GLcontext *ctx, +_mesa_clip_readpixels(const struct gl_context *ctx, GLint *srcX, GLint *srcY, GLsizei *width, GLsizei *height, struct gl_pixelstore_attrib *pack); extern GLboolean -_mesa_clip_copytexsubimage(const GLcontext *ctx, +_mesa_clip_copytexsubimage(const struct gl_context *ctx, GLint *destX, GLint *destY, GLint *srcX, GLint *srcY, GLsizei *width, GLsizei *height); @@ -323,7 +323,7 @@ _mesa_clip_to_region(GLint xmin, GLint ymin, GLsizei *width, GLsizei *height ); extern GLboolean -_mesa_clip_blit(GLcontext *ctx, +_mesa_clip_blit(struct gl_context *ctx, GLint *srcX0, GLint *srcY0, GLint *srcX1, GLint *srcY1, GLint *dstX0, GLint *dstY0, GLint *dstX1, GLint *dstY1); diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c index 46e5c932d0f..bcca4edc1aa 100644 --- a/src/mesa/main/imports.c +++ b/src/mesa/main/imports.c @@ -882,7 +882,7 @@ error_string( GLenum error ) * previous errors which were accumulated. */ static void -flush_delayed_errors( GLcontext *ctx ) +flush_delayed_errors( struct gl_context *ctx ) { char s[MAXSTRING]; @@ -906,7 +906,7 @@ flush_delayed_errors( GLcontext *ctx ) * \param fmtString printf()-like format string. */ void -_mesa_warning( GLcontext *ctx, const char *fmtString, ... ) +_mesa_warning( struct gl_context *ctx, const char *fmtString, ... ) { char str[MAXSTRING]; va_list args; @@ -929,7 +929,7 @@ _mesa_warning( GLcontext *ctx, const char *fmtString, ... ) * \param fmtString problem description string. */ void -_mesa_problem( const GLcontext *ctx, const char *fmtString, ... ) +_mesa_problem( const struct gl_context *ctx, const char *fmtString, ... ) { va_list args; char str[MAXSTRING]; @@ -957,7 +957,7 @@ _mesa_problem( const GLcontext *ctx, const char *fmtString, ... ) * \param fmtString printf() style format string, followed by optional args */ void -_mesa_error( GLcontext *ctx, GLenum error, const char *fmtString, ... ) +_mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) { static GLint debug = -1; @@ -1014,7 +1014,7 @@ _mesa_error( GLcontext *ctx, GLenum error, const char *fmtString, ... ) * \param fmtString printf()-style format string, followed by optional args. */ void -_mesa_debug( const GLcontext *ctx, const char *fmtString, ... ) +_mesa_debug( const struct gl_context *ctx, const char *fmtString, ... ) { #ifdef DEBUG char s[MAXSTRING]; diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index a56e0af9b5c..30fc152389d 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -568,19 +568,19 @@ _mesa_str_checksum(const char *str); extern int _mesa_snprintf( char *str, size_t size, const char *fmt, ... ) PRINTFLIKE(3, 4); -struct __GLcontextRec; +struct gl_context; extern void -_mesa_warning( struct __GLcontextRec *gc, const char *fmtString, ... ) PRINTFLIKE(2, 3); +_mesa_warning( struct gl_context *gc, const char *fmtString, ... ) PRINTFLIKE(2, 3); extern void -_mesa_problem( const struct __GLcontextRec *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); +_mesa_problem( const struct gl_context *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); extern void -_mesa_error( struct __GLcontextRec *ctx, GLenum error, const char *fmtString, ... ) PRINTFLIKE(3, 4); +_mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) PRINTFLIKE(3, 4); extern void -_mesa_debug( const struct __GLcontextRec *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); +_mesa_debug( const struct gl_context *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); #if defined(_MSC_VER) && !defined(snprintf) diff --git a/src/mesa/main/light.c b/src/mesa/main/light.c index 43ae28c25ab..c27cf1dd38b 100644 --- a/src/mesa/main/light.c +++ b/src/mesa/main/light.c @@ -103,7 +103,7 @@ _mesa_ProvokingVertexEXT(GLenum mode) * Also, all error checking should have already been done. */ void -_mesa_light(GLcontext *ctx, GLuint lnum, GLenum pname, const GLfloat *params) +_mesa_light(struct gl_context *ctx, GLuint lnum, GLenum pname, const GLfloat *params) { struct gl_light *light; @@ -569,7 +569,7 @@ _mesa_LightModelf( GLenum pname, GLfloat param ) * of the targeted material values. */ GLuint -_mesa_material_bitmask( GLcontext *ctx, GLenum face, GLenum pname, +_mesa_material_bitmask( struct gl_context *ctx, GLenum face, GLenum pname, GLuint legal, const char *where ) { GLuint bitmask = 0; @@ -643,7 +643,7 @@ _mesa_copy_materials( struct gl_material *dst, /* Update derived values following a change in ctx->Light.Material */ void -_mesa_update_material( GLcontext *ctx, GLuint bitmask ) +_mesa_update_material( struct gl_context *ctx, GLuint bitmask ) { struct gl_light *light, *list = &ctx->Light.EnabledList; GLfloat (*mat)[4] = ctx->Light.Material.Attrib; @@ -728,7 +728,7 @@ _mesa_update_material( GLcontext *ctx, GLuint bitmask ) * set by glColorMaterial(). */ void -_mesa_update_color_material( GLcontext *ctx, const GLfloat color[4] ) +_mesa_update_color_material( struct gl_context *ctx, const GLfloat color[4] ) { GLuint bitmask = ctx->Light.ColorMaterialBitmask; struct gl_material *mat = &ctx->Light.Material; @@ -972,7 +972,7 @@ validate_spot_exp_table( struct gl_light *l ) * by keeping a MRU cache of shine tables for various shine values. */ void -_mesa_invalidate_shine_table( GLcontext *ctx, GLuint side ) +_mesa_invalidate_shine_table( struct gl_context *ctx, GLuint side ) { ASSERT(side < 2); if (ctx->_ShineTable[side]) @@ -982,7 +982,7 @@ _mesa_invalidate_shine_table( GLcontext *ctx, GLuint side ) static void -validate_shine_table( GLcontext *ctx, GLuint side, GLfloat shininess ) +validate_shine_table( struct gl_context *ctx, GLuint side, GLfloat shininess ) { struct gl_shine_tab *list = ctx->_ShineTabList; struct gl_shine_tab *s; @@ -1034,7 +1034,7 @@ validate_shine_table( GLcontext *ctx, GLuint side, GLfloat shininess ) void -_mesa_validate_all_lighting_tables( GLcontext *ctx ) +_mesa_validate_all_lighting_tables( struct gl_context *ctx ) { GLuint i; GLfloat shininess; @@ -1060,7 +1060,7 @@ _mesa_validate_all_lighting_tables( GLcontext *ctx ) * source and material ambient, diffuse and specular coefficients. */ void -_mesa_update_lighting( GLcontext *ctx ) +_mesa_update_lighting( struct gl_context *ctx ) { struct gl_light *light; ctx->Light._NeedEyeCoords = GL_FALSE; @@ -1123,7 +1123,7 @@ _mesa_update_lighting( GLcontext *ctx ) * Also update on lighting space changes. */ static void -compute_light_positions( GLcontext *ctx ) +compute_light_positions( struct gl_context *ctx ) { struct gl_light *light; static const GLfloat eye_z[3] = { 0, 0, 1 }; @@ -1210,7 +1210,7 @@ compute_light_positions( GLcontext *ctx ) static void -update_modelview_scale( GLcontext *ctx ) +update_modelview_scale( struct gl_context *ctx ) { ctx->_ModelViewInvScale = 1.0F; if (!_math_matrix_is_length_preserving(ctx->ModelviewMatrixStack.Top)) { @@ -1229,7 +1229,7 @@ update_modelview_scale( GLcontext *ctx ) * Bring up to date any state that relies on _NeedEyeCoords. */ void -_mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state ) +_mesa_update_tnl_spaces( struct gl_context *ctx, GLuint new_state ) { const GLuint oldneedeyecoords = ctx->_NeedEyeCoords; @@ -1278,7 +1278,7 @@ _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state ) * light-in-modelspace optimization. It's also useful for debugging. */ void -_mesa_allow_light_in_model( GLcontext *ctx, GLboolean flag ) +_mesa_allow_light_in_model( struct gl_context *ctx, GLboolean flag ) { ctx->_ForceEyeCoords = !flag; ctx->NewState |= _NEW_POINT; /* one of the bits from @@ -1370,7 +1370,7 @@ init_material( struct gl_material *m ) * Initialize all lighting state for the given context. */ void -_mesa_init_lighting( GLcontext *ctx ) +_mesa_init_lighting( struct gl_context *ctx ) { GLuint i; @@ -1418,7 +1418,7 @@ _mesa_init_lighting( GLcontext *ctx ) * Deallocate malloc'd lighting state attached to given context. */ void -_mesa_free_lighting_data( GLcontext *ctx ) +_mesa_free_lighting_data( struct gl_context *ctx ) { struct gl_shine_tab *s, *tmps; diff --git a/src/mesa/main/light.h b/src/mesa/main/light.h index b3436114d40..021f5ea1939 100644 --- a/src/mesa/main/light.h +++ b/src/mesa/main/light.h @@ -79,7 +79,7 @@ _mesa_GetMaterialiv( GLenum face, GLenum pname, GLint *params ); extern void -_mesa_light(GLcontext *ctx, GLuint lnum, GLenum pname, const GLfloat *params); +_mesa_light(struct gl_context *ctx, GLuint lnum, GLenum pname, const GLfloat *params); /* Lerp between adjacent values in the f(x) lookup table, giving a @@ -100,36 +100,36 @@ do { \ } while (0) -extern GLuint _mesa_material_bitmask( GLcontext *ctx, +extern GLuint _mesa_material_bitmask( struct gl_context *ctx, GLenum face, GLenum pname, GLuint legal, const char * ); extern void _mesa_invalidate_spot_exp_table( struct gl_light *l ); -extern void _mesa_invalidate_shine_table( GLcontext *ctx, GLuint i ); +extern void _mesa_invalidate_shine_table( struct gl_context *ctx, GLuint i ); -extern void _mesa_validate_all_lighting_tables( GLcontext *ctx ); +extern void _mesa_validate_all_lighting_tables( struct gl_context *ctx ); -extern void _mesa_update_lighting( GLcontext *ctx ); +extern void _mesa_update_lighting( struct gl_context *ctx ); -extern void _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state ); +extern void _mesa_update_tnl_spaces( struct gl_context *ctx, GLuint new_state ); -extern void _mesa_update_material( GLcontext *ctx, +extern void _mesa_update_material( struct gl_context *ctx, GLuint bitmask ); extern void _mesa_copy_materials( struct gl_material *dst, const struct gl_material *src, GLuint bitmask ); -extern void _mesa_update_color_material( GLcontext *ctx, +extern void _mesa_update_color_material( struct gl_context *ctx, const GLfloat rgba[4] ); -extern void _mesa_init_lighting( GLcontext *ctx ); +extern void _mesa_init_lighting( struct gl_context *ctx ); -extern void _mesa_free_lighting_data( GLcontext *ctx ); +extern void _mesa_free_lighting_data( struct gl_context *ctx ); -extern void _mesa_allow_light_in_model( GLcontext *ctx, GLboolean flag ); +extern void _mesa_allow_light_in_model( struct gl_context *ctx, GLboolean flag ); #else #define _mesa_update_color_material( c, r ) ((void)0) diff --git a/src/mesa/main/lines.c b/src/mesa/main/lines.c index cc63a759ec0..505f840ba5a 100644 --- a/src/mesa/main/lines.c +++ b/src/mesa/main/lines.c @@ -102,11 +102,11 @@ _mesa_LineStipple( GLint factor, GLushort pattern ) * * \param ctx GL context. * - * Initializes __GLcontextRec::Line and line related constants in - * __GLcontextRec::Const. + * Initializes __struct gl_contextRec::Line and line related constants in + * __struct gl_contextRec::Const. */ void GLAPIENTRY -_mesa_init_line( GLcontext * ctx ) +_mesa_init_line( struct gl_context * ctx ) { ctx->Line.SmoothFlag = GL_FALSE; ctx->Line.StippleFlag = GL_FALSE; diff --git a/src/mesa/main/lines.h b/src/mesa/main/lines.h index 5a47e9858d5..3accdd78004 100644 --- a/src/mesa/main/lines.h +++ b/src/mesa/main/lines.h @@ -43,6 +43,6 @@ extern void GLAPIENTRY _mesa_LineStipple( GLint factor, GLushort pattern ); extern void GLAPIENTRY -_mesa_init_line( GLcontext * ctx ); +_mesa_init_line( struct gl_context * ctx ); #endif diff --git a/src/mesa/main/matrix.c b/src/mesa/main/matrix.c index 8ed718cd38e..105d4a327fb 100644 --- a/src/mesa/main/matrix.c +++ b/src/mesa/main/matrix.c @@ -59,7 +59,7 @@ * * Flushes vertices and validates parameters. Calls _math_matrix_frustum() with * the top matrix of the current matrix stack and sets - * __GLcontextRec::NewState. + * __struct gl_contextRec::NewState. */ void GLAPIENTRY _mesa_Frustum( GLdouble left, GLdouble right, @@ -101,7 +101,7 @@ _mesa_Frustum( GLdouble left, GLdouble right, * * Flushes vertices and validates parameters. Calls _math_matrix_ortho() with * the top matrix of the current matrix stack and sets - * __GLcontextRec::NewState. + * __struct gl_contextRec::NewState. */ void GLAPIENTRY _mesa_Ortho( GLdouble left, GLdouble right, @@ -139,7 +139,7 @@ _mesa_Ortho( GLdouble left, GLdouble right, * \sa glMatrixMode(). * * Flushes the vertices, validates the parameter and updates - * __GLcontextRec::CurrentStack and gl_transform_attrib::MatrixMode with the + * __struct gl_contextRec::CurrentStack and gl_transform_attrib::MatrixMode with the * specified matrix stack. */ void GLAPIENTRY @@ -231,7 +231,7 @@ _mesa_MatrixMode( GLenum mode ) * \sa glPushMatrix(). * * Verifies the current matrix stack is not full, and duplicates the top-most - * matrix in the stack. Marks __GLcontextRec::NewState with the stack dirty + * matrix in the stack. Marks __struct gl_contextRec::NewState with the stack dirty * flag. */ void GLAPIENTRY @@ -271,7 +271,7 @@ _mesa_PushMatrix( void ) * \sa glPopMatrix(). * * Flushes the vertices, verifies the current matrix stack is not empty, and - * moves the stack head down. Marks __GLcontextRec::NewState with the dirty + * moves the stack head down. Marks __struct gl_contextRec::NewState with the dirty * stack flag. */ void GLAPIENTRY @@ -309,7 +309,7 @@ _mesa_PopMatrix( void ) * \sa glLoadIdentity(). * * Flushes the vertices and calls _math_matrix_set_identity() with the top-most - * matrix in the current stack. Marks __GLcontextRec::NewState with the stack + * matrix in the current stack. Marks __struct gl_contextRec::NewState with the stack * dirty flag. */ void GLAPIENTRY @@ -334,7 +334,7 @@ _mesa_LoadIdentity( void ) * \sa glLoadMatrixf(). * * Flushes the vertices and calls _math_matrix_loadf() with the top-most matrix - * in the current stack and the given matrix. Marks __GLcontextRec::NewState + * in the current stack and the given matrix. Marks __struct gl_contextRec::NewState * with the dirty stack flag. */ void GLAPIENTRY @@ -365,7 +365,7 @@ _mesa_LoadMatrixf( const GLfloat *m ) * * Flushes the vertices and calls _math_matrix_mul_floats() with the top-most * matrix in the current stack and the given matrix. Marks - * __GLcontextRec::NewState with the dirty stack flag. + * __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_MultMatrixf( const GLfloat *m ) @@ -397,7 +397,7 @@ _mesa_MultMatrixf( const GLfloat *m ) * * Flushes the vertices and calls _math_matrix_rotate() with the top-most * matrix in the current stack and the given parameters. Marks - * __GLcontextRec::NewState with the dirty stack flag. + * __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_Rotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) @@ -422,7 +422,7 @@ _mesa_Rotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) * * Flushes the vertices and calls _math_matrix_scale() with the top-most * matrix in the current stack and the given parameters. Marks - * __GLcontextRec::NewState with the dirty stack flag. + * __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_Scalef( GLfloat x, GLfloat y, GLfloat z ) @@ -445,7 +445,7 @@ _mesa_Scalef( GLfloat x, GLfloat y, GLfloat z ) * * Flushes the vertices and calls _math_matrix_translate() with the top-most * matrix in the current stack and the given parameters. Marks - * __GLcontextRec::NewState with the dirty stack flag. + * __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_Translatef( GLfloat x, GLfloat y, GLfloat z ) @@ -559,13 +559,13 @@ _mesa_MultTransposeMatrixdARB( const GLdouble *m ) * Calls _math_matrix_analyse() with the top-matrix of the projection matrix * stack, and recomputes user clip positions if necessary. * - * \note This routine references __GLcontextRec::Tranform attribute values to + * \note This routine references __struct gl_contextRec::Tranform attribute values to * compute userclip positions in clip space, but is only called on * _NEW_PROJECTION. The _mesa_ClipPlane() function keeps these values up to - * date across changes to the __GLcontextRec::Transform attributes. + * date across changes to the __struct gl_contextRec::Transform attributes. */ static void -update_projection( GLcontext *ctx ) +update_projection( struct gl_context *ctx ) { _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); @@ -593,11 +593,11 @@ update_projection( GLcontext *ctx ) * \param ctx GL context. * * Multiplies the top matrices of the projection and model view stacks into - * __GLcontextRec::_ModelProjectMatrix via _math_matrix_mul_matrix() and + * __struct gl_contextRec::_ModelProjectMatrix via _math_matrix_mul_matrix() and * analyzes the resulting matrix via _math_matrix_analyse(). */ static void -calculate_model_project_matrix( GLcontext *ctx ) +calculate_model_project_matrix( struct gl_context *ctx ) { _math_matrix_mul_matrix( &ctx->_ModelProjectMatrix, ctx->ProjectionMatrixStack.Top, @@ -618,7 +618,7 @@ calculate_model_project_matrix( GLcontext *ctx ) * calculate_model_project_matrix() to recalculate the modelview-projection * matrix. */ -void _mesa_update_modelview_project( GLcontext *ctx, GLuint new_state ) +void _mesa_update_modelview_project( struct gl_context *ctx, GLuint new_state ) { if (new_state & _NEW_MODELVIEW) { _math_matrix_analyse( ctx->ModelviewMatrixStack.Top ); @@ -712,7 +712,7 @@ free_matrix_stack( struct gl_matrix_stack *stack ) * Initializes each of the matrix stacks and the combined modelview-projection * matrix. */ -void _mesa_init_matrix( GLcontext * ctx ) +void _mesa_init_matrix( struct gl_context * ctx ) { GLint i; @@ -742,7 +742,7 @@ void _mesa_init_matrix( GLcontext * ctx ) * Frees each of the matrix stacks and the combined modelview-projection * matrix. */ -void _mesa_free_matrix_data( GLcontext *ctx ) +void _mesa_free_matrix_data( struct gl_context *ctx ) { GLint i; @@ -765,7 +765,7 @@ void _mesa_free_matrix_data( GLcontext *ctx ) * * \todo Move this to a new file with other 'transform' routines. */ -void _mesa_init_transform( GLcontext *ctx ) +void _mesa_init_transform( struct gl_context *ctx ) { GLint i; diff --git a/src/mesa/main/matrix.h b/src/mesa/main/matrix.h index a53d1045c7d..38fd235b117 100644 --- a/src/mesa/main/matrix.h +++ b/src/mesa/main/matrix.h @@ -97,16 +97,16 @@ _mesa_MultTransposeMatrixdARB( const GLdouble *m ); extern void -_mesa_init_matrix( GLcontext * ctx ); +_mesa_init_matrix( struct gl_context * ctx ); extern void -_mesa_init_transform( GLcontext *ctx ); +_mesa_init_transform( struct gl_context *ctx ); extern void -_mesa_free_matrix_data( GLcontext *ctx ); +_mesa_free_matrix_data( struct gl_context *ctx ); extern void -_mesa_update_modelview_project( GLcontext *ctx, GLuint newstate ); +_mesa_update_modelview_project( struct gl_context *ctx, GLuint newstate ); #endif diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c index 3d1a4c49c49..d65aecdf3e5 100644 --- a/src/mesa/main/mipmap.c +++ b/src/mesa/main/mipmap.c @@ -1504,7 +1504,7 @@ next_mipmap_level_size(GLenum target, GLint border, * GL_TEXTURE_CUBE_MAP_POSITIVE/NEGATIVE_X/Y/Z; never GL_TEXTURE_CUBE_MAP. */ void -_mesa_generate_mipmap(GLcontext *ctx, GLenum target, +_mesa_generate_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { const struct gl_texture_image *srcImage; diff --git a/src/mesa/main/mipmap.h b/src/mesa/main/mipmap.h index 22094c34372..4c7ee635aee 100644 --- a/src/mesa/main/mipmap.h +++ b/src/mesa/main/mipmap.h @@ -42,7 +42,7 @@ _mesa_generate_mipmap_level(GLenum target, extern void -_mesa_generate_mipmap(GLcontext *ctx, GLenum target, +_mesa_generate_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj); diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 806a19d02a6..aace09d6efc 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -123,8 +123,8 @@ struct gl_program_cache; struct gl_texture_format; struct gl_texture_image; struct gl_texture_object; +struct gl_context; struct st_context; -typedef struct __GLcontextRec GLcontext; /*@}*/ @@ -2324,38 +2324,38 @@ struct gl_renderbuffer void (*Delete)(struct gl_renderbuffer *rb); /* Allocate new storage for this renderbuffer */ - GLboolean (*AllocStorage)(GLcontext *ctx, struct gl_renderbuffer *rb, + GLboolean (*AllocStorage)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height); /* Lock/Unlock are called before/after calling the Get/Put functions. * Not sure this is the right place for these yet. - void (*Lock)(GLcontext *ctx, struct gl_renderbuffer *rb); - void (*Unlock)(GLcontext *ctx, struct gl_renderbuffer *rb); + void (*Lock)(struct gl_context *ctx, struct gl_renderbuffer *rb); + void (*Unlock)(struct gl_context *ctx, struct gl_renderbuffer *rb); */ /* Return a pointer to the element/pixel at (x,y). * Should return NULL if the buffer memory can't be directly addressed. */ - void *(*GetPointer)(GLcontext *ctx, struct gl_renderbuffer *rb, + void *(*GetPointer)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y); /* Get/Read a row of values. * The values will be of format _BaseFormat and type DataType. */ - void (*GetRow)(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, + void (*GetRow)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values); /* Get/Read values at arbitrary locations. * The values will be of format _BaseFormat and type DataType. */ - void (*GetValues)(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, + void (*GetValues)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values); /* Put/Write a row of values. * The values will be of format _BaseFormat and type DataType. */ - void (*PutRow)(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, + void (*PutRow)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask); /* Put/Write a row of RGB values. This is a special-case routine that's @@ -2363,26 +2363,26 @@ struct gl_renderbuffer * a common case for glDrawPixels and some triangle routines. * The values will be of format GL_RGB and type DataType. */ - void (*PutRowRGB)(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, + void (*PutRowRGB)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask); /* Put/Write a row of identical values. * The values will be of format _BaseFormat and type DataType. */ - void (*PutMonoRow)(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, + void (*PutMonoRow)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask); /* Put/Write values at arbitrary locations. * The values will be of format _BaseFormat and type DataType. */ - void (*PutValues)(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, + void (*PutValues)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask); /* Put/Write identical values at arbitrary locations. * The values will be of format _BaseFormat and type DataType. */ - void (*PutMonoValues)(GLcontext *ctx, struct gl_renderbuffer *rb, + void (*PutMonoValues)(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask); }; @@ -2787,7 +2787,7 @@ struct gl_matrix_stack /** * \name Bits for image transfer operations - * \sa __GLcontextRec::ImageTransferState. + * \sa __struct gl_contextRec::ImageTransferState. */ /*@{*/ #define IMAGE_SCALE_BIAS_BIT 0x1 @@ -2807,34 +2807,34 @@ struct gl_matrix_stack * 4 unused flags. */ /*@{*/ -#define _NEW_MODELVIEW 0x1 /**< __GLcontextRec::ModelView */ -#define _NEW_PROJECTION 0x2 /**< __GLcontextRec::Projection */ -#define _NEW_TEXTURE_MATRIX 0x4 /**< __GLcontextRec::TextureMatrix */ -#define _NEW_ACCUM 0x10 /**< __GLcontextRec::Accum */ -#define _NEW_COLOR 0x20 /**< __GLcontextRec::Color */ -#define _NEW_DEPTH 0x40 /**< __GLcontextRec::Depth */ -#define _NEW_EVAL 0x80 /**< __GLcontextRec::Eval, __GLcontextRec::EvalMap */ -#define _NEW_FOG 0x100 /**< __GLcontextRec::Fog */ -#define _NEW_HINT 0x200 /**< __GLcontextRec::Hint */ -#define _NEW_LIGHT 0x400 /**< __GLcontextRec::Light */ -#define _NEW_LINE 0x800 /**< __GLcontextRec::Line */ -#define _NEW_PIXEL 0x1000 /**< __GLcontextRec::Pixel */ -#define _NEW_POINT 0x2000 /**< __GLcontextRec::Point */ -#define _NEW_POLYGON 0x4000 /**< __GLcontextRec::Polygon */ -#define _NEW_POLYGONSTIPPLE 0x8000 /**< __GLcontextRec::PolygonStipple */ -#define _NEW_SCISSOR 0x10000 /**< __GLcontextRec::Scissor */ -#define _NEW_STENCIL 0x20000 /**< __GLcontextRec::Stencil */ -#define _NEW_TEXTURE 0x40000 /**< __GLcontextRec::Texture */ -#define _NEW_TRANSFORM 0x80000 /**< __GLcontextRec::Transform */ -#define _NEW_VIEWPORT 0x100000 /**< __GLcontextRec::Viewport */ -#define _NEW_PACKUNPACK 0x200000 /**< __GLcontextRec::Pack, __GLcontextRec::Unpack */ -#define _NEW_ARRAY 0x400000 /**< __GLcontextRec::Array */ -#define _NEW_RENDERMODE 0x800000 /**< __GLcontextRec::RenderMode, __GLcontextRec::Feedback, __GLcontextRec::Select */ -#define _NEW_BUFFERS 0x1000000 /**< __GLcontextRec::Visual, __GLcontextRec::DrawBuffer, */ -#define _NEW_MULTISAMPLE 0x2000000 /**< __GLcontextRec::Multisample */ -#define _NEW_TRACK_MATRIX 0x4000000 /**< __GLcontextRec::VertexProgram */ -#define _NEW_PROGRAM 0x8000000 /**< __GLcontextRec::VertexProgram */ -#define _NEW_CURRENT_ATTRIB 0x10000000 /**< __GLcontextRec::Current */ +#define _NEW_MODELVIEW 0x1 /**< __struct gl_contextRec::ModelView */ +#define _NEW_PROJECTION 0x2 /**< __struct gl_contextRec::Projection */ +#define _NEW_TEXTURE_MATRIX 0x4 /**< __struct gl_contextRec::TextureMatrix */ +#define _NEW_ACCUM 0x10 /**< __struct gl_contextRec::Accum */ +#define _NEW_COLOR 0x20 /**< __struct gl_contextRec::Color */ +#define _NEW_DEPTH 0x40 /**< __struct gl_contextRec::Depth */ +#define _NEW_EVAL 0x80 /**< __struct gl_contextRec::Eval, __struct gl_contextRec::EvalMap */ +#define _NEW_FOG 0x100 /**< __struct gl_contextRec::Fog */ +#define _NEW_HINT 0x200 /**< __struct gl_contextRec::Hint */ +#define _NEW_LIGHT 0x400 /**< __struct gl_contextRec::Light */ +#define _NEW_LINE 0x800 /**< __struct gl_contextRec::Line */ +#define _NEW_PIXEL 0x1000 /**< __struct gl_contextRec::Pixel */ +#define _NEW_POINT 0x2000 /**< __struct gl_contextRec::Point */ +#define _NEW_POLYGON 0x4000 /**< __struct gl_contextRec::Polygon */ +#define _NEW_POLYGONSTIPPLE 0x8000 /**< __struct gl_contextRec::PolygonStipple */ +#define _NEW_SCISSOR 0x10000 /**< __struct gl_contextRec::Scissor */ +#define _NEW_STENCIL 0x20000 /**< __struct gl_contextRec::Stencil */ +#define _NEW_TEXTURE 0x40000 /**< __struct gl_contextRec::Texture */ +#define _NEW_TRANSFORM 0x80000 /**< __struct gl_contextRec::Transform */ +#define _NEW_VIEWPORT 0x100000 /**< __struct gl_contextRec::Viewport */ +#define _NEW_PACKUNPACK 0x200000 /**< __struct gl_contextRec::Pack, __struct gl_contextRec::Unpack */ +#define _NEW_ARRAY 0x400000 /**< __struct gl_contextRec::Array */ +#define _NEW_RENDERMODE 0x800000 /**< __struct gl_contextRec::RenderMode, __struct gl_contextRec::Feedback, __struct gl_contextRec::Select */ +#define _NEW_BUFFERS 0x1000000 /**< __struct gl_contextRec::Visual, __struct gl_contextRec::DrawBuffer, */ +#define _NEW_MULTISAMPLE 0x2000000 /**< __struct gl_contextRec::Multisample */ +#define _NEW_TRACK_MATRIX 0x4000000 /**< __struct gl_contextRec::VertexProgram */ +#define _NEW_PROGRAM 0x8000000 /**< __struct gl_contextRec::VertexProgram */ +#define _NEW_CURRENT_ATTRIB 0x10000000 /**< __struct gl_contextRec::Current */ #define _NEW_PROGRAM_CONSTANTS 0x20000000 #define _NEW_BUFFER_OBJECT 0x40000000 #define _NEW_ALL ~0 @@ -2877,7 +2877,7 @@ struct gl_matrix_stack /** * \name A bunch of flags that we think might be useful to drivers. * - * Set in the __GLcontextRec::_TriangleCaps bitfield. + * Set in the __struct gl_contextRec::_TriangleCaps bitfield. */ /*@{*/ #define DD_FLATSHADE 0x1 @@ -3045,9 +3045,9 @@ typedef enum { * Think of this as a base class from which device drivers will derive * sub classes. * - * The GLcontext typedef names this structure. + * The struct gl_context typedef names this structure. */ -struct __GLcontextRec +struct gl_context { /** State possibly shared with other contexts in the address space */ struct gl_shared_state *Shared; diff --git a/src/mesa/main/multisample.c b/src/mesa/main/multisample.c index 01b68df7afc..5487d45f56b 100644 --- a/src/mesa/main/multisample.c +++ b/src/mesa/main/multisample.c @@ -50,7 +50,7 @@ _mesa_SampleCoverageARB(GLclampf value, GLboolean invert) * \param ctx the GL context. */ void -_mesa_init_multisample(GLcontext *ctx) +_mesa_init_multisample(struct gl_context *ctx) { ctx->Multisample.Enabled = GL_TRUE; ctx->Multisample.SampleAlphaToCoverage = GL_FALSE; diff --git a/src/mesa/main/multisample.h b/src/mesa/main/multisample.h index 998488ef420..c7cc432daac 100644 --- a/src/mesa/main/multisample.h +++ b/src/mesa/main/multisample.h @@ -33,7 +33,7 @@ _mesa_SampleCoverageARB(GLclampf value, GLboolean invert); extern void -_mesa_init_multisample(GLcontext *ctx); +_mesa_init_multisample(struct gl_context *ctx); #endif diff --git a/src/mesa/main/nvprogram.c b/src/mesa/main/nvprogram.c index 3a570b7dda6..833bf916ecf 100644 --- a/src/mesa/main/nvprogram.c +++ b/src/mesa/main/nvprogram.c @@ -511,7 +511,7 @@ _mesa_GetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid **pointer) } void -_mesa_emit_nv_temp_initialization(GLcontext *ctx, +_mesa_emit_nv_temp_initialization(struct gl_context *ctx, struct gl_program *program) { struct prog_instruction *inst; @@ -559,7 +559,7 @@ _mesa_emit_nv_temp_initialization(GLcontext *ctx, } void -_mesa_setup_nv_temporary_count(GLcontext *ctx, struct gl_program *program) +_mesa_setup_nv_temporary_count(struct gl_context *ctx, struct gl_program *program) { GLuint i; diff --git a/src/mesa/main/nvprogram.h b/src/mesa/main/nvprogram.h index 260a25ba9e9..035f2fe2426 100644 --- a/src/mesa/main/nvprogram.h +++ b/src/mesa/main/nvprogram.h @@ -106,10 +106,10 @@ _mesa_GetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); extern void -_mesa_setup_nv_temporary_count(GLcontext *ctx, struct gl_program *program); +_mesa_setup_nv_temporary_count(struct gl_context *ctx, struct gl_program *program); extern void -_mesa_emit_nv_temp_initialization(GLcontext *ctx, +_mesa_emit_nv_temp_initialization(struct gl_context *ctx, struct gl_program *program); #endif diff --git a/src/mesa/main/pixel.c b/src/mesa/main/pixel.c index 1d378e4d9f7..5f824b34294 100644 --- a/src/mesa/main/pixel.c +++ b/src/mesa/main/pixel.c @@ -69,7 +69,7 @@ _mesa_PixelZoom( GLfloat xfactor, GLfloat yfactor ) * Return pointer to a pixelmap by name. */ static struct gl_pixelmap * -get_pixelmap(GLcontext *ctx, GLenum map) +get_pixelmap(struct gl_context *ctx, GLenum map) { switch (map) { case GL_PIXEL_MAP_I_TO_I: @@ -102,7 +102,7 @@ get_pixelmap(GLcontext *ctx, GLenum map) * Helper routine used by the other _mesa_PixelMap() functions. */ static void -store_pixelmap(GLcontext *ctx, GLenum map, GLsizei mapsize, +store_pixelmap(struct gl_context *ctx, GLenum map, GLsizei mapsize, const GLfloat *values) { GLint i; @@ -143,7 +143,7 @@ store_pixelmap(GLcontext *ctx, GLenum map, GLsizei mapsize, * Convenience wrapper for _mesa_validate_pbo_access() for gl[Get]PixelMap(). */ static GLboolean -validate_pbo_access(GLcontext *ctx, struct gl_pixelstore_attrib *pack, +validate_pbo_access(struct gl_context *ctx, struct gl_pixelstore_attrib *pack, GLsizei mapsize, GLenum format, GLenum type, const GLvoid *ptr) { @@ -590,7 +590,7 @@ _mesa_PixelTransferi( GLenum pname, GLint param ) * pixel transfer operations are enabled. */ static void -update_image_transfer_state(GLcontext *ctx) +update_image_transfer_state(struct gl_context *ctx) { GLuint mask = 0; @@ -613,7 +613,7 @@ update_image_transfer_state(GLcontext *ctx) /** * Update mesa pixel transfer derived state. */ -void _mesa_update_pixel( GLcontext *ctx, GLuint new_state ) +void _mesa_update_pixel( struct gl_context *ctx, GLuint new_state ) { if (new_state & _MESA_NEW_TRANSFER_STATE) update_image_transfer_state(ctx); @@ -655,7 +655,7 @@ init_pixelmap(struct gl_pixelmap *map) * Initialize the context's PIXEL attribute group. */ void -_mesa_init_pixel( GLcontext *ctx ) +_mesa_init_pixel( struct gl_context *ctx ) { /* Pixel group */ ctx->Pixel.RedBias = 0.0; diff --git a/src/mesa/main/pixel.h b/src/mesa/main/pixel.h index f4d3f1efdb0..03560835a8c 100644 --- a/src/mesa/main/pixel.h +++ b/src/mesa/main/pixel.h @@ -39,7 +39,7 @@ #if FEATURE_pixel_transfer extern void -_mesa_update_pixel( GLcontext *ctx, GLuint newstate ); +_mesa_update_pixel( struct gl_context *ctx, GLuint newstate ); extern void _mesa_init_pixel_dispatch( struct _glapi_table * disp ); @@ -47,7 +47,7 @@ _mesa_init_pixel_dispatch( struct _glapi_table * disp ); #else /* FEATURE_pixel_transfer */ static INLINE void -_mesa_update_pixel(GLcontext *ctx, GLuint newstate) +_mesa_update_pixel(struct gl_context *ctx, GLuint newstate) { } @@ -60,7 +60,7 @@ _mesa_init_pixel_dispatch(struct _glapi_table *disp) extern void -_mesa_init_pixel( GLcontext * ctx ); +_mesa_init_pixel( struct gl_context * ctx ); /*@}*/ diff --git a/src/mesa/main/pixelstore.c b/src/mesa/main/pixelstore.c index ec585ef0cce..b16d27a4ea5 100644 --- a/src/mesa/main/pixelstore.c +++ b/src/mesa/main/pixelstore.c @@ -228,7 +228,7 @@ _mesa_PixelStoref( GLenum pname, GLfloat param ) * Initialize the context's pixel store state. */ void -_mesa_init_pixelstore( GLcontext *ctx ) +_mesa_init_pixelstore( struct gl_context *ctx ) { /* Pixel transfer */ ctx->Pack.Alignment = 4; diff --git a/src/mesa/main/pixelstore.h b/src/mesa/main/pixelstore.h index 47bff4276d1..cdef7de2613 100644 --- a/src/mesa/main/pixelstore.h +++ b/src/mesa/main/pixelstore.h @@ -45,7 +45,7 @@ _mesa_PixelStoref( GLenum pname, GLfloat param ); extern void -_mesa_init_pixelstore( GLcontext *ctx ); +_mesa_init_pixelstore( struct gl_context *ctx ); #endif diff --git a/src/mesa/main/points.c b/src/mesa/main/points.c index eab9d13d6d9..87bfae27eba 100644 --- a/src/mesa/main/points.c +++ b/src/mesa/main/points.c @@ -245,11 +245,11 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params) * * \param ctx GL context. * - * Initializes __GLcontextRec::Point and point related constants in - * __GLcontextRec::Const. + * Initializes __struct gl_contextRec::Point and point related constants in + * __struct gl_contextRec::Const. */ void -_mesa_init_point(GLcontext *ctx) +_mesa_init_point(struct gl_context *ctx) { GLuint i; diff --git a/src/mesa/main/points.h b/src/mesa/main/points.h index 156641eab91..b222379b1b5 100644 --- a/src/mesa/main/points.h +++ b/src/mesa/main/points.h @@ -51,7 +51,7 @@ extern void GLAPIENTRY _mesa_PointParameterfv( GLenum pname, const GLfloat *params ); extern void -_mesa_init_point( GLcontext * ctx ); +_mesa_init_point( struct gl_context * ctx ); #endif diff --git a/src/mesa/main/polygon.c b/src/mesa/main/polygon.c index 30e4a606bb7..970020048db 100644 --- a/src/mesa/main/polygon.c +++ b/src/mesa/main/polygon.c @@ -190,7 +190,7 @@ _mesa_PolygonMode( GLenum face, GLenum mode ) * too. */ void -_mesa_polygon_stipple(GLcontext *ctx, const GLubyte *pattern) +_mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern) { pattern = _mesa_map_validate_pbo_source(ctx, 2, &ctx->Unpack, 32, 32, 1, @@ -293,10 +293,10 @@ _mesa_PolygonOffsetEXT( GLfloat factor, GLfloat bias ) * * \param ctx GL context. * - * Initializes __GLcontextRec::Polygon and __GLcontextRec::PolygonStipple + * Initializes __struct gl_contextRec::Polygon and __struct gl_contextRec::PolygonStipple * attribute groups. */ -void _mesa_init_polygon( GLcontext * ctx ) +void _mesa_init_polygon( struct gl_context * ctx ) { /* Polygon group */ ctx->Polygon.CullFlag = GL_FALSE; diff --git a/src/mesa/main/polygon.h b/src/mesa/main/polygon.h index 78e8394d053..ad0ac4cc3a7 100644 --- a/src/mesa/main/polygon.h +++ b/src/mesa/main/polygon.h @@ -36,7 +36,7 @@ extern void -_mesa_polygon_stipple(GLcontext *ctx, const GLubyte *pattern); +_mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern); extern void GLAPIENTRY @@ -61,6 +61,6 @@ extern void GLAPIENTRY _mesa_GetPolygonStipple( GLubyte *mask ); extern void -_mesa_init_polygon( GLcontext * ctx ); +_mesa_init_polygon( struct gl_context * ctx ); #endif diff --git a/src/mesa/main/queryobj.c b/src/mesa/main/queryobj.c index a907dac836b..88743977206 100644 --- a/src/mesa/main/queryobj.c +++ b/src/mesa/main/queryobj.c @@ -43,7 +43,7 @@ * \return pointer to new query_object object or NULL if out of memory. */ static struct gl_query_object * -_mesa_new_query_object(GLcontext *ctx, GLuint id) +_mesa_new_query_object(struct gl_context *ctx, GLuint id) { struct gl_query_object *q = MALLOC_STRUCT(gl_query_object); (void) ctx; @@ -62,7 +62,7 @@ _mesa_new_query_object(GLcontext *ctx, GLuint id) * Called via ctx->Driver.BeginQuery(). */ static void -_mesa_begin_query(GLcontext *ctx, struct gl_query_object *q) +_mesa_begin_query(struct gl_context *ctx, struct gl_query_object *q) { /* no-op */ } @@ -73,7 +73,7 @@ _mesa_begin_query(GLcontext *ctx, struct gl_query_object *q) * Called via ctx->Driver.EndQuery(). */ static void -_mesa_end_query(GLcontext *ctx, struct gl_query_object *q) +_mesa_end_query(struct gl_context *ctx, struct gl_query_object *q) { q->Ready = GL_TRUE; } @@ -84,7 +84,7 @@ _mesa_end_query(GLcontext *ctx, struct gl_query_object *q) * Called via ctx->Driver.WaitQuery(). */ static void -_mesa_wait_query(GLcontext *ctx, struct gl_query_object *q) +_mesa_wait_query(struct gl_context *ctx, struct gl_query_object *q) { /* For software drivers, _mesa_end_query() should have completed the query. * For real hardware, implement a proper WaitQuery() driver function, @@ -99,7 +99,7 @@ _mesa_wait_query(GLcontext *ctx, struct gl_query_object *q) * Called via ctx->Driver.CheckQuery(). */ static void -_mesa_check_query(GLcontext *ctx, struct gl_query_object *q) +_mesa_check_query(struct gl_context *ctx, struct gl_query_object *q) { /* No-op for sw rendering. * HW drivers may need to flush at this time. @@ -112,7 +112,7 @@ _mesa_check_query(GLcontext *ctx, struct gl_query_object *q) * Not removed from hash table here. */ static void -_mesa_delete_query(GLcontext *ctx, struct gl_query_object *q) +_mesa_delete_query(struct gl_context *ctx, struct gl_query_object *q) { free(q); } @@ -135,7 +135,7 @@ _mesa_init_query_object_functions(struct dd_function_table *driver) * \return NULL if invalid target, else the address of binding point */ static struct gl_query_object ** -get_query_binding_point(GLcontext *ctx, GLenum target) +get_query_binding_point(struct gl_context *ctx, GLenum target) { switch (target) { case GL_SAMPLES_PASSED_ARB: @@ -535,7 +535,7 @@ _mesa_init_queryobj_dispatch(struct _glapi_table *disp) * Allocate/init the context state related to query objects. */ void -_mesa_init_queryobj(GLcontext *ctx) +_mesa_init_queryobj(struct gl_context *ctx) { ctx->Query.QueryObjects = _mesa_NewHashTable(); ctx->Query.CurrentOcclusionObject = NULL; @@ -549,7 +549,7 @@ static void delete_queryobj_cb(GLuint id, void *data, void *userData) { struct gl_query_object *q= (struct gl_query_object *) data; - GLcontext *ctx = (GLcontext *)userData; + struct gl_context *ctx = (struct gl_context *)userData; ctx->Driver.DeleteQuery(ctx, q); } @@ -558,7 +558,7 @@ delete_queryobj_cb(GLuint id, void *data, void *userData) * Free the context state related to query objects. */ void -_mesa_free_queryobj_data(GLcontext *ctx) +_mesa_free_queryobj_data(struct gl_context *ctx) { _mesa_HashDeleteAll(ctx->Query.QueryObjects, delete_queryobj_cb, ctx); _mesa_DeleteHashTable(ctx->Query.QueryObjects); diff --git a/src/mesa/main/queryobj.h b/src/mesa/main/queryobj.h index 8746ed15e99..e289625731a 100644 --- a/src/mesa/main/queryobj.h +++ b/src/mesa/main/queryobj.h @@ -34,7 +34,7 @@ #if FEATURE_queryobj static INLINE struct gl_query_object * -_mesa_lookup_query_object(GLcontext *ctx, GLuint id) +_mesa_lookup_query_object(struct gl_context *ctx, GLuint id) { return (struct gl_query_object *) _mesa_HashLookup(ctx->Query.QueryObjects, id); @@ -68,7 +68,7 @@ _mesa_init_queryobj_dispatch(struct _glapi_table *disp); #else /* FEATURE_queryobj */ static INLINE struct gl_query_object * -_mesa_lookup_query_object(GLcontext *ctx, GLuint id) +_mesa_lookup_query_object(struct gl_context *ctx, GLuint id) { return NULL; } @@ -86,10 +86,10 @@ _mesa_init_queryobj_dispatch(struct _glapi_table *disp) #endif /* FEATURE_queryobj */ extern void -_mesa_init_queryobj(GLcontext *ctx); +_mesa_init_queryobj(struct gl_context *ctx); extern void -_mesa_free_queryobj_data(GLcontext *ctx); +_mesa_free_queryobj_data(struct gl_context *ctx); #endif /* QUERYOBJ_H */ diff --git a/src/mesa/main/rastpos.c b/src/mesa/main/rastpos.c index 75c67f2693e..6f52f07dfab 100644 --- a/src/mesa/main/rastpos.c +++ b/src/mesa/main/rastpos.c @@ -545,10 +545,10 @@ _mesa_init_rastpos_dispatch(struct _glapi_table *disp) * \param ctx GL context. * * Initialize the current raster position information in - * __GLcontextRec::Current, and adds the extension entry points to the + * __struct gl_contextRec::Current, and adds the extension entry points to the * dispatcher. */ -void _mesa_init_rastpos( GLcontext * ctx ) +void _mesa_init_rastpos( struct gl_context * ctx ) { int i; diff --git a/src/mesa/main/rastpos.h b/src/mesa/main/rastpos.h index 4994616d40a..9b508eaedf5 100644 --- a/src/mesa/main/rastpos.h +++ b/src/mesa/main/rastpos.h @@ -50,7 +50,7 @@ _mesa_init_rastpos_dispatch(struct _glapi_table *disp) #endif /* FEATURE_rastpos */ extern void -_mesa_init_rastpos(GLcontext *ctx); +_mesa_init_rastpos(struct gl_context *ctx); /*@}*/ diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c index bb3fb9eb662..0043c8adc41 100644 --- a/src/mesa/main/readpix.c +++ b/src/mesa/main/readpix.c @@ -40,7 +40,7 @@ * \return GL_TRUE if error detected, GL_FALSE if no errors */ GLboolean -_mesa_error_check_format_type(GLcontext *ctx, GLenum format, GLenum type, +_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type, GLboolean drawing) { const char *readDraw = drawing ? "Draw" : "Read"; diff --git a/src/mesa/main/readpix.h b/src/mesa/main/readpix.h index 1bf02fb8e4d..0753e619fed 100644 --- a/src/mesa/main/readpix.h +++ b/src/mesa/main/readpix.h @@ -31,7 +31,7 @@ extern GLboolean -_mesa_error_check_format_type(GLcontext *ctx, GLenum format, GLenum type, +_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type, GLboolean drawing); extern void GLAPIENTRY diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c index 118fb52bb2e..dc8bc747874 100644 --- a/src/mesa/main/renderbuffer.c +++ b/src/mesa/main/renderbuffer.c @@ -61,7 +61,7 @@ */ static void * -get_pointer_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, +get_pointer_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { if (!rb->Data) @@ -75,7 +75,7 @@ get_pointer_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, static void -get_row_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { const GLubyte *src = (const GLubyte *) rb->Data + y * rb->Width + x; @@ -85,7 +85,7 @@ get_row_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -get_values_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { GLubyte *dst = (GLubyte *) values; @@ -99,7 +99,7 @@ get_values_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; @@ -120,7 +120,7 @@ put_row_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_row_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { const GLubyte val = *((const GLubyte *) value); @@ -144,7 +144,7 @@ put_mono_row_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_values_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -161,7 +161,7 @@ put_values_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_values_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -183,7 +183,7 @@ put_mono_values_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, */ static void * -get_pointer_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, +get_pointer_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { if (!rb->Data) @@ -195,7 +195,7 @@ get_pointer_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, static void -get_row_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { const void *src = rb->GetPointer(ctx, rb, x, y); @@ -205,7 +205,7 @@ get_row_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -get_values_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { GLushort *dst = (GLushort *) values; @@ -219,7 +219,7 @@ get_values_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLushort *src = (const GLushort *) values; @@ -240,7 +240,7 @@ put_row_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_row_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { const GLushort val = *((const GLushort *) value); @@ -264,7 +264,7 @@ put_mono_row_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_values_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -281,7 +281,7 @@ put_values_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_values_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, +put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -312,7 +312,7 @@ put_mono_values_ushort(GLcontext *ctx, struct gl_renderbuffer *rb, */ static void * -get_pointer_uint(GLcontext *ctx, struct gl_renderbuffer *rb, +get_pointer_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { if (!rb->Data) @@ -324,7 +324,7 @@ get_pointer_uint(GLcontext *ctx, struct gl_renderbuffer *rb, static void -get_row_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { const void *src = rb->GetPointer(ctx, rb, x, y); @@ -335,7 +335,7 @@ get_row_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -get_values_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { GLuint *dst = (GLuint *) values; @@ -350,7 +350,7 @@ get_values_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLuint *src = (const GLuint *) values; @@ -372,7 +372,7 @@ put_row_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_row_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { const GLuint val = *((const GLuint *) value); @@ -397,7 +397,7 @@ put_mono_row_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_values_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -415,7 +415,7 @@ put_values_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_values_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -440,7 +440,7 @@ put_mono_values_uint(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, */ static void * -get_pointer_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, +get_pointer_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { ASSERT(rb->Format == MESA_FORMAT_RGB888); @@ -452,7 +452,7 @@ get_pointer_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, static void -get_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { const GLubyte *src = (const GLubyte *) rb->Data + 3 * (y * rb->Width + x); @@ -470,7 +470,7 @@ get_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -get_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { GLubyte *dst = (GLubyte *) values; @@ -489,7 +489,7 @@ get_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { /* note: incoming values are RGB+A! */ @@ -509,7 +509,7 @@ put_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_rgb_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_rgb_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { /* note: incoming values are RGB+A! */ @@ -529,7 +529,7 @@ put_row_rgb_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { /* note: incoming value is RGB+A! */ @@ -557,7 +557,7 @@ put_mono_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -578,7 +578,7 @@ put_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, +put_mono_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -606,7 +606,7 @@ put_mono_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, */ static void * -get_pointer_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, +get_pointer_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { if (!rb->Data) @@ -618,7 +618,7 @@ get_pointer_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, static void -get_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { const GLubyte *src = (const GLubyte *) rb->Data + 4 * (y * rb->Width + x); @@ -629,7 +629,7 @@ get_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -get_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { /* treat 4*GLubyte as 1*GLuint */ @@ -645,7 +645,7 @@ get_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { /* treat 4*GLubyte as 1*GLuint */ @@ -668,7 +668,7 @@ put_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_rgb_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_rgb_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { /* Store RGB values in RGBA buffer */ @@ -689,7 +689,7 @@ put_row_rgb_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { /* treat 4*GLubyte as 1*GLuint */ @@ -722,7 +722,7 @@ put_mono_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -741,7 +741,7 @@ put_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, +put_mono_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -765,7 +765,7 @@ put_mono_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, */ static void * -get_pointer_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, +get_pointer_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { if (!rb->Data) @@ -776,7 +776,7 @@ get_pointer_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, static void -get_row_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { const GLshort *src = (const GLshort *) rb->Data + 4 * (y * rb->Width + x); @@ -786,7 +786,7 @@ get_row_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -get_values_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +get_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { GLushort *dst = (GLushort *) values; @@ -801,7 +801,7 @@ get_values_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLushort *src = (const GLushort *) values; @@ -825,7 +825,7 @@ put_row_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_row_rgb_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_row_rgb_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { /* Put RGB values in RGBA buffer */ @@ -850,7 +850,7 @@ put_row_rgb_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_row_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_mono_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { const GLushort val0 = ((const GLushort *) value)[0]; @@ -878,7 +878,7 @@ put_mono_row_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_values_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +put_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -898,7 +898,7 @@ put_values_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -put_mono_values_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, +put_mono_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -936,7 +936,7 @@ put_mono_values_ushort4(GLcontext *ctx, struct gl_renderbuffer *rb, * Get/PutValues functions. */ GLboolean -_mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { @@ -1145,7 +1145,7 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb, static GLboolean -alloc_storage_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, +alloc_storage_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLenum internalFormat, GLuint width, GLuint height) { ASSERT(arb != arb->Wrapped); @@ -1195,7 +1195,7 @@ delete_renderbuffer_alpha8(struct gl_renderbuffer *arb) static void * -get_pointer_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, +get_pointer_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLint x, GLint y) { return NULL; /* don't allow direct access! */ @@ -1203,7 +1203,7 @@ get_pointer_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, static void -get_row_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, +get_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count, GLint x, GLint y, void *values) { /* NOTE: 'values' is RGBA format! */ @@ -1222,7 +1222,7 @@ get_row_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, static void -get_values_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, +get_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count, const GLint x[], const GLint y[], void *values) { GLubyte *dst = (GLubyte *) values; @@ -1240,7 +1240,7 @@ get_values_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, static void -put_row_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, +put_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; @@ -1260,7 +1260,7 @@ put_row_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, static void -put_row_rgb_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, +put_row_rgb_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; @@ -1280,7 +1280,7 @@ put_row_rgb_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, static void -put_mono_row_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, +put_mono_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { const GLubyte val = ((const GLubyte *) value)[3]; @@ -1305,7 +1305,7 @@ put_mono_row_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, static void -put_values_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, +put_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -1326,7 +1326,7 @@ put_values_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, GLuint count, static void -put_mono_values_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb, +put_mono_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -1368,7 +1368,7 @@ copy_buffer_alpha8(struct gl_renderbuffer* dst, struct gl_renderbuffer* src) * direct buffer access is not supported. */ static void * -nop_get_pointer(GLcontext *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) +nop_get_pointer(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { return NULL; } @@ -1422,7 +1422,7 @@ _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name) * renderbuffers or window-system renderbuffers. */ struct gl_renderbuffer * -_mesa_new_renderbuffer(GLcontext *ctx, GLuint name) +_mesa_new_renderbuffer(struct gl_context *ctx, GLuint name) { struct gl_renderbuffer *rb = CALLOC_STRUCT(gl_renderbuffer); if (rb) { @@ -1453,7 +1453,7 @@ _mesa_delete_renderbuffer(struct gl_renderbuffer *rb) * This would not be used for hardware-based renderbuffers. */ struct gl_renderbuffer * -_mesa_new_soft_renderbuffer(GLcontext *ctx, GLuint name) +_mesa_new_soft_renderbuffer(struct gl_context *ctx, GLuint name) { struct gl_renderbuffer *rb = _mesa_new_renderbuffer(ctx, name); if (rb) { @@ -1476,7 +1476,7 @@ _mesa_new_soft_renderbuffer(GLcontext *ctx, GLuint name) * rendering! */ GLboolean -_mesa_add_color_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_color_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint rgbBits, GLuint alphaBits, GLboolean frontLeft, GLboolean backLeft, GLboolean frontRight, GLboolean backRight) @@ -1540,7 +1540,7 @@ _mesa_add_color_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, * rendering! */ GLboolean -_mesa_add_alpha_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_alpha_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint alphaBits, GLboolean frontLeft, GLboolean backLeft, GLboolean frontRight, GLboolean backRight) @@ -1624,7 +1624,7 @@ _mesa_add_alpha_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, * copy the back buffer alpha channel into the front buffer alpha channel. */ void -_mesa_copy_soft_alpha_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb) +_mesa_copy_soft_alpha_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb) { if (fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer && fb->Attachment[BUFFER_BACK_LEFT].Renderbuffer) @@ -1648,7 +1648,7 @@ _mesa_copy_soft_alpha_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb) * rendering! */ GLboolean -_mesa_add_depth_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_depth_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint depthBits) { struct gl_renderbuffer *rb; @@ -1696,7 +1696,7 @@ _mesa_add_depth_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, * rendering! */ GLboolean -_mesa_add_stencil_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_stencil_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint stencilBits) { struct gl_renderbuffer *rb; @@ -1735,7 +1735,7 @@ _mesa_add_stencil_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, * rendering! */ GLboolean -_mesa_add_accum_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_accum_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint redBits, GLuint greenBits, GLuint blueBits, GLuint alphaBits) { @@ -1776,7 +1776,7 @@ _mesa_add_accum_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, * NOTE: color-index aux buffers not supported. */ GLboolean -_mesa_add_aux_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_aux_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint colorBits, GLuint numBuffers) { GLuint i; @@ -1990,7 +1990,7 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, * \return new depth/stencil renderbuffer */ struct gl_renderbuffer * -_mesa_new_depthstencil_renderbuffer(GLcontext *ctx, GLuint name) +_mesa_new_depthstencil_renderbuffer(struct gl_context *ctx, GLuint name) { struct gl_renderbuffer *dsrb; diff --git a/src/mesa/main/renderbuffer.h b/src/mesa/main/renderbuffer.h index bc92b269821..8791369dbee 100644 --- a/src/mesa/main/renderbuffer.h +++ b/src/mesa/main/renderbuffer.h @@ -36,52 +36,52 @@ extern void _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name); extern struct gl_renderbuffer * -_mesa_new_renderbuffer(GLcontext *ctx, GLuint name); +_mesa_new_renderbuffer(struct gl_context *ctx, GLuint name); extern void _mesa_delete_renderbuffer(struct gl_renderbuffer *rb); extern struct gl_renderbuffer * -_mesa_new_soft_renderbuffer(GLcontext *ctx, GLuint name); +_mesa_new_soft_renderbuffer(struct gl_context *ctx, GLuint name); extern GLboolean -_mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb, +_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height); extern GLboolean -_mesa_add_color_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_color_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint rgbBits, GLuint alphaBits, GLboolean frontLeft, GLboolean backLeft, GLboolean frontRight, GLboolean backRight); extern GLboolean -_mesa_add_alpha_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_alpha_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint alphaBits, GLboolean frontLeft, GLboolean backLeft, GLboolean frontRight, GLboolean backRight); extern void -_mesa_copy_soft_alpha_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb); +_mesa_copy_soft_alpha_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb); extern GLboolean -_mesa_add_depth_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_depth_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint depthBits); extern GLboolean -_mesa_add_stencil_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_stencil_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint stencilBits); extern GLboolean -_mesa_add_accum_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_accum_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint redBits, GLuint greenBits, GLuint blueBits, GLuint alphaBits); extern GLboolean -_mesa_add_aux_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb, +_mesa_add_aux_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, GLuint bits, GLuint numBuffers); extern void @@ -105,7 +105,7 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, struct gl_renderbuffer *rb); extern struct gl_renderbuffer * -_mesa_new_depthstencil_renderbuffer(GLcontext *ctx, GLuint name); +_mesa_new_depthstencil_renderbuffer(struct gl_context *ctx, GLuint name); #endif /* RENDERBUFFER_H */ diff --git a/src/mesa/main/scissor.c b/src/mesa/main/scissor.c index 523f3c3ab83..4cf0bc2528c 100644 --- a/src/mesa/main/scissor.c +++ b/src/mesa/main/scissor.c @@ -58,12 +58,12 @@ _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ) * * \sa glScissor(). * - * Verifies the parameters and updates __GLcontextRec::Scissor. On a + * Verifies the parameters and updates __struct gl_contextRec::Scissor. On a * change flushes the vertices and notifies the driver via * the dd_function_table::Scissor callback. */ void -_mesa_set_scissor(GLcontext *ctx, +_mesa_set_scissor(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height) { if (x == ctx->Scissor.X && @@ -88,7 +88,7 @@ _mesa_set_scissor(GLcontext *ctx, * \param ctx the GL context. */ void -_mesa_init_scissor(GLcontext *ctx) +_mesa_init_scissor(struct gl_context *ctx) { /* Scissor group */ ctx->Scissor.Enabled = GL_FALSE; diff --git a/src/mesa/main/scissor.h b/src/mesa/main/scissor.h index b852a2122d0..bd909019db2 100644 --- a/src/mesa/main/scissor.h +++ b/src/mesa/main/scissor.h @@ -35,12 +35,12 @@ _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ); extern void -_mesa_set_scissor(GLcontext *ctx, +_mesa_set_scissor(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height); extern void -_mesa_init_scissor(GLcontext *ctx); +_mesa_init_scissor(struct gl_context *ctx); #endif diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index c25d2a19747..9a2a42e50e4 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -89,7 +89,7 @@ get_shader_flags(void) * Initialize context's shader state. */ void -_mesa_init_shader_state(GLcontext *ctx) +_mesa_init_shader_state(struct gl_context *ctx) { /* Device drivers may override these to control what kind of instructions * are generated by the GLSL compiler. @@ -114,7 +114,7 @@ _mesa_init_shader_state(GLcontext *ctx) * Free the per-context shader-related state. */ void -_mesa_free_shader_state(GLcontext *ctx) +_mesa_free_shader_state(struct gl_context *ctx) { _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, NULL); } @@ -221,7 +221,7 @@ longest_feedback_varying_name(const struct gl_shader_program *shProg) static GLboolean -is_program(GLcontext *ctx, GLuint name) +is_program(struct gl_context *ctx, GLuint name) { struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, name); return shProg ? GL_TRUE : GL_FALSE; @@ -229,7 +229,7 @@ is_program(GLcontext *ctx, GLuint name) static GLboolean -is_shader(GLcontext *ctx, GLuint name) +is_shader(struct gl_context *ctx, GLuint name) { struct gl_shader *shader = _mesa_lookup_shader(ctx, name); return shader ? GL_TRUE : GL_FALSE; @@ -240,7 +240,7 @@ is_shader(GLcontext *ctx, GLuint name) * Attach shader to a shader program. */ static void -attach_shader(GLcontext *ctx, GLuint program, GLuint shader) +attach_shader(struct gl_context *ctx, GLuint program, GLuint shader) { struct gl_shader_program *shProg; struct gl_shader *sh; @@ -287,7 +287,7 @@ attach_shader(GLcontext *ctx, GLuint program, GLuint shader) static GLint -get_attrib_location(GLcontext *ctx, GLuint program, const GLchar *name) +get_attrib_location(struct gl_context *ctx, GLuint program, const GLchar *name) { struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation"); @@ -320,7 +320,7 @@ get_attrib_location(GLcontext *ctx, GLuint program, const GLchar *name) static void -bind_attrib_location(GLcontext *ctx, GLuint program, GLuint index, +bind_attrib_location(struct gl_context *ctx, GLuint program, GLuint index, const GLchar *name) { struct gl_shader_program *shProg; @@ -371,7 +371,7 @@ bind_attrib_location(GLcontext *ctx, GLuint program, GLuint index, static GLuint -create_shader(GLcontext *ctx, GLenum type) +create_shader(struct gl_context *ctx, GLenum type) { struct gl_shader *sh; GLuint name; @@ -396,7 +396,7 @@ create_shader(GLcontext *ctx, GLenum type) static GLuint -create_shader_program(GLcontext *ctx) +create_shader_program(struct gl_context *ctx) { GLuint name; struct gl_shader_program *shProg; @@ -418,7 +418,7 @@ create_shader_program(GLcontext *ctx) * DeleteProgramARB. */ static void -delete_shader_program(GLcontext *ctx, GLuint name) +delete_shader_program(struct gl_context *ctx, GLuint name) { /* * NOTE: deleting shaders/programs works a bit differently than @@ -442,7 +442,7 @@ delete_shader_program(GLcontext *ctx, GLuint name) static void -delete_shader(GLcontext *ctx, GLuint shader) +delete_shader(struct gl_context *ctx, GLuint shader) { struct gl_shader *sh; @@ -458,7 +458,7 @@ delete_shader(GLcontext *ctx, GLuint shader) static void -detach_shader(GLcontext *ctx, GLuint program, GLuint shader) +detach_shader(struct gl_context *ctx, GLuint program, GLuint shader) { struct gl_shader_program *shProg; GLuint n; @@ -526,7 +526,7 @@ detach_shader(GLcontext *ctx, GLuint program, GLuint shader) static void -get_active_attrib(GLcontext *ctx, GLuint program, GLuint index, +get_active_attrib(struct gl_context *ctx, GLuint program, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLchar *nameOut) { @@ -561,7 +561,7 @@ get_active_attrib(GLcontext *ctx, GLuint program, GLuint index, * Return list of shaders attached to shader program. */ static void -get_attached_shaders(GLcontext *ctx, GLuint program, GLsizei maxCount, +get_attached_shaders(struct gl_context *ctx, GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) { struct gl_shader_program *shProg = @@ -581,7 +581,7 @@ get_attached_shaders(GLcontext *ctx, GLuint program, GLsizei maxCount, * glGetHandleARB() - return ID/name of currently bound shader program. */ static GLuint -get_handle(GLcontext *ctx, GLenum pname) +get_handle(struct gl_context *ctx, GLenum pname) { if (pname == GL_PROGRAM_OBJECT_ARB) { if (ctx->Shader.CurrentProgram) @@ -602,7 +602,7 @@ get_handle(GLcontext *ctx, GLenum pname) * programs (see glGetProgramivARB). */ static void -get_programiv(GLcontext *ctx, GLuint program, GLenum pname, GLint *params) +get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *params) { const struct gl_program_parameter_list *attribs; struct gl_shader_program *shProg @@ -684,7 +684,7 @@ get_programiv(GLcontext *ctx, GLuint program, GLenum pname, GLint *params) * glGetShaderiv() - get GLSL shader state */ static void -get_shaderiv(GLcontext *ctx, GLuint name, GLenum pname, GLint *params) +get_shaderiv(struct gl_context *ctx, GLuint name, GLenum pname, GLint *params) { struct gl_shader *shader = _mesa_lookup_shader_err(ctx, name, "glGetShaderiv"); @@ -717,7 +717,7 @@ get_shaderiv(GLcontext *ctx, GLuint name, GLenum pname, GLint *params) static void -get_program_info_log(GLcontext *ctx, GLuint program, GLsizei bufSize, +get_program_info_log(struct gl_context *ctx, GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) { struct gl_shader_program *shProg @@ -731,7 +731,7 @@ get_program_info_log(GLcontext *ctx, GLuint program, GLsizei bufSize, static void -get_shader_info_log(GLcontext *ctx, GLuint shader, GLsizei bufSize, +get_shader_info_log(struct gl_context *ctx, GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) { struct gl_shader *sh = _mesa_lookup_shader(ctx, shader); @@ -747,7 +747,7 @@ get_shader_info_log(GLcontext *ctx, GLuint shader, GLsizei bufSize, * Return shader source code. */ static void -get_shader_source(GLcontext *ctx, GLuint shader, GLsizei maxLength, +get_shader_source(struct gl_context *ctx, GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *sourceOut) { struct gl_shader *sh; @@ -763,7 +763,7 @@ get_shader_source(GLcontext *ctx, GLuint shader, GLsizei maxLength, * Set/replace shader source code. */ static void -shader_source(GLcontext *ctx, GLuint shader, const GLchar *source) +shader_source(struct gl_context *ctx, GLuint shader, const GLchar *source) { struct gl_shader *sh; @@ -787,7 +787,7 @@ shader_source(GLcontext *ctx, GLuint shader, const GLchar *source) * Compile a shader. */ static void -compile_shader(GLcontext *ctx, GLuint shaderObj) +compile_shader(struct gl_context *ctx, GLuint shaderObj) { struct gl_shader *sh; struct gl_shader_compiler_options *options; @@ -812,7 +812,7 @@ compile_shader(GLcontext *ctx, GLuint shaderObj) * Link a program's shaders. */ static void -link_program(GLcontext *ctx, GLuint program) +link_program(struct gl_context *ctx, GLuint program) { struct gl_shader_program *shProg; struct gl_transform_feedback_object *obj = @@ -888,7 +888,7 @@ print_shader_info(const struct gl_shader_program *shProg) * Use the named shader program for subsequent rendering. */ void -_mesa_use_program(GLcontext *ctx, GLuint program) +_mesa_use_program(struct gl_context *ctx, GLuint program) { struct gl_shader_program *shProg; struct gl_transform_feedback_object *obj = @@ -943,7 +943,7 @@ _mesa_use_program(GLcontext *ctx, GLuint program) * \return GL_TRUE if valid, GL_FALSE if invalid */ static GLboolean -validate_samplers(GLcontext *ctx, const struct gl_program *prog, char *errMsg) +validate_samplers(struct gl_context *ctx, const struct gl_program *prog, char *errMsg) { static const char *targetName[] = { "TEXTURE_2D_ARRAY", @@ -995,7 +995,7 @@ validate_samplers(GLcontext *ctx, const struct gl_program *prog, char *errMsg) * \return GL_TRUE if valid, GL_FALSE if invalid (and set errMsg) */ static GLboolean -validate_shader_program(GLcontext *ctx, +validate_shader_program(struct gl_context *ctx, const struct gl_shader_program *shProg, char *errMsg) { @@ -1041,7 +1041,7 @@ validate_shader_program(GLcontext *ctx, * Called via glValidateProgram() */ static void -validate_program(GLcontext *ctx, GLuint program) +validate_program(struct gl_context *ctx, GLuint program) { struct gl_shader_program *shProg; char errMsg[100]; diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index 16e22530de5..b55d7ca8b25 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -39,7 +39,7 @@ _mesa_copy_string(GLchar *dst, GLsizei maxLength, GLsizei *length, const GLchar *src); extern void -_mesa_use_program(GLcontext *ctx, GLuint program); +_mesa_use_program(struct gl_context *ctx, GLuint program); extern void diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c index 2de8f279818..e0ffa2f289d 100644 --- a/src/mesa/main/shaderobj.c +++ b/src/mesa/main/shaderobj.c @@ -50,7 +50,7 @@ * Then set ptr to point to sh, incrementing its refcount. */ void -_mesa_reference_shader(GLcontext *ctx, struct gl_shader **ptr, +_mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr, struct gl_shader *sh) { assert(ptr); @@ -88,7 +88,7 @@ _mesa_reference_shader(GLcontext *ctx, struct gl_shader **ptr, } void -_mesa_init_shader(GLcontext *ctx, struct gl_shader *shader) +_mesa_init_shader(struct gl_context *ctx, struct gl_shader *shader) { shader->RefCount = 1; } @@ -98,7 +98,7 @@ _mesa_init_shader(GLcontext *ctx, struct gl_shader *shader) * Called via ctx->Driver.NewShader() */ struct gl_shader * -_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type) +_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type) { struct gl_shader *shader; assert(type == GL_FRAGMENT_SHADER || type == GL_VERTEX_SHADER || @@ -118,7 +118,7 @@ _mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type) * Called via ctx->Driver.DeleteShader(). */ static void -_mesa_delete_shader(GLcontext *ctx, struct gl_shader *sh) +_mesa_delete_shader(struct gl_context *ctx, struct gl_shader *sh) { if (sh->Source) free((void *) sh->Source); @@ -131,7 +131,7 @@ _mesa_delete_shader(GLcontext *ctx, struct gl_shader *sh) * Lookup a GLSL shader object. */ struct gl_shader * -_mesa_lookup_shader(GLcontext *ctx, GLuint name) +_mesa_lookup_shader(struct gl_context *ctx, GLuint name) { if (name) { struct gl_shader *sh = (struct gl_shader *) @@ -153,7 +153,7 @@ _mesa_lookup_shader(GLcontext *ctx, GLuint name) * As above, but record an error if shader is not found. */ struct gl_shader * -_mesa_lookup_shader_err(GLcontext *ctx, GLuint name, const char *caller) +_mesa_lookup_shader_err(struct gl_context *ctx, GLuint name, const char *caller) { if (!name) { _mesa_error(ctx, GL_INVALID_VALUE, "%s", caller); @@ -188,7 +188,7 @@ _mesa_lookup_shader_err(GLcontext *ctx, GLuint name, const char *caller) * Then set ptr to point to shProg, incrementing its refcount. */ void -_mesa_reference_shader_program(GLcontext *ctx, +_mesa_reference_shader_program(struct gl_context *ctx, struct gl_shader_program **ptr, struct gl_shader_program *shProg) { @@ -230,7 +230,7 @@ _mesa_reference_shader_program(GLcontext *ctx, } void -_mesa_init_shader_program(GLcontext *ctx, struct gl_shader_program *prog) +_mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog) { prog->Type = GL_SHADER_PROGRAM_MESA; prog->RefCount = 1; @@ -247,7 +247,7 @@ _mesa_init_shader_program(GLcontext *ctx, struct gl_shader_program *prog) * Called via ctx->Driver.NewShaderProgram() */ static struct gl_shader_program * -_mesa_new_shader_program(GLcontext *ctx, GLuint name) +_mesa_new_shader_program(struct gl_context *ctx, GLuint name) { struct gl_shader_program *shProg; shProg = talloc_zero(NULL, struct gl_shader_program); @@ -263,7 +263,7 @@ _mesa_new_shader_program(GLcontext *ctx, GLuint name) * Clear (free) the shader program state that gets produced by linking. */ void -_mesa_clear_shader_program_data(GLcontext *ctx, +_mesa_clear_shader_program_data(struct gl_context *ctx, struct gl_shader_program *shProg) { _mesa_reference_vertprog(ctx, &shProg->VertexProgram, NULL); @@ -287,7 +287,7 @@ _mesa_clear_shader_program_data(GLcontext *ctx, * object itself. */ void -_mesa_free_shader_program_data(GLcontext *ctx, +_mesa_free_shader_program_data(struct gl_context *ctx, struct gl_shader_program *shProg) { GLuint i; @@ -338,7 +338,7 @@ _mesa_free_shader_program_data(GLcontext *ctx, * Called via ctx->Driver.DeleteShaderProgram(). */ static void -_mesa_delete_shader_program(GLcontext *ctx, struct gl_shader_program *shProg) +_mesa_delete_shader_program(struct gl_context *ctx, struct gl_shader_program *shProg) { _mesa_free_shader_program_data(ctx, shProg); @@ -350,7 +350,7 @@ _mesa_delete_shader_program(GLcontext *ctx, struct gl_shader_program *shProg) * Lookup a GLSL program object. */ struct gl_shader_program * -_mesa_lookup_shader_program(GLcontext *ctx, GLuint name) +_mesa_lookup_shader_program(struct gl_context *ctx, GLuint name) { struct gl_shader_program *shProg; if (name) { @@ -373,7 +373,7 @@ _mesa_lookup_shader_program(GLcontext *ctx, GLuint name) * As above, but record an error if program is not found. */ struct gl_shader_program * -_mesa_lookup_shader_program_err(GLcontext *ctx, GLuint name, +_mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name, const char *caller) { if (!name) { diff --git a/src/mesa/main/shaderobj.h b/src/mesa/main/shaderobj.h index cbe7ae7b068..cf1b4c27bd5 100644 --- a/src/mesa/main/shaderobj.h +++ b/src/mesa/main/shaderobj.h @@ -39,50 +39,50 @@ extern "C" { */ extern void -_mesa_init_shader_state(GLcontext * ctx); +_mesa_init_shader_state(struct gl_context * ctx); extern void -_mesa_free_shader_state(GLcontext *ctx); +_mesa_free_shader_state(struct gl_context *ctx); extern void -_mesa_reference_shader(GLcontext *ctx, struct gl_shader **ptr, +_mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr, struct gl_shader *sh); extern struct gl_shader * -_mesa_lookup_shader(GLcontext *ctx, GLuint name); +_mesa_lookup_shader(struct gl_context *ctx, GLuint name); extern struct gl_shader * -_mesa_lookup_shader_err(GLcontext *ctx, GLuint name, const char *caller); +_mesa_lookup_shader_err(struct gl_context *ctx, GLuint name, const char *caller); extern void -_mesa_reference_shader_program(GLcontext *ctx, +_mesa_reference_shader_program(struct gl_context *ctx, struct gl_shader_program **ptr, struct gl_shader_program *shProg); extern void -_mesa_init_shader(GLcontext *ctx, struct gl_shader *shader); +_mesa_init_shader(struct gl_context *ctx, struct gl_shader *shader); extern struct gl_shader * -_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type); +_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type); extern void -_mesa_init_shader_program(GLcontext *ctx, struct gl_shader_program *prog); +_mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog); extern struct gl_shader_program * -_mesa_lookup_shader_program(GLcontext *ctx, GLuint name); +_mesa_lookup_shader_program(struct gl_context *ctx, GLuint name); extern struct gl_shader_program * -_mesa_lookup_shader_program_err(GLcontext *ctx, GLuint name, +_mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name, const char *caller); extern void -_mesa_clear_shader_program_data(GLcontext *ctx, +_mesa_clear_shader_program_data(struct gl_context *ctx, struct gl_shader_program *shProg); extern void -_mesa_free_shader_program_data(GLcontext *ctx, +_mesa_free_shader_program_data(struct gl_context *ctx, struct gl_shader_program *shProg); @@ -91,10 +91,10 @@ extern void _mesa_init_shader_object_functions(struct dd_function_table *driver); extern void -_mesa_init_shader_state(GLcontext *ctx); +_mesa_init_shader_state(struct gl_context *ctx); extern void -_mesa_free_shader_state(GLcontext *ctx); +_mesa_free_shader_state(struct gl_context *ctx); static INLINE GLuint _mesa_shader_type_to_index(GLenum v) diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c index a56c70fa7f6..3abee0178eb 100644 --- a/src/mesa/main/shared.c +++ b/src/mesa/main/shared.c @@ -52,7 +52,7 @@ * failure. */ struct gl_shared_state * -_mesa_alloc_shared_state(GLcontext *ctx) +_mesa_alloc_shared_state(struct gl_context *ctx) { struct gl_shared_state *shared; GLuint i; @@ -133,7 +133,7 @@ static void delete_displaylist_cb(GLuint id, void *data, void *userData) { struct gl_display_list *list = (struct gl_display_list *) data; - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; _mesa_delete_list(ctx, list); } @@ -145,7 +145,7 @@ static void delete_texture_cb(GLuint id, void *data, void *userData) { struct gl_texture_object *texObj = (struct gl_texture_object *) data; - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; ctx->Driver.DeleteTexture(ctx, texObj); } @@ -157,7 +157,7 @@ static void delete_program_cb(GLuint id, void *data, void *userData) { struct gl_program *prog = (struct gl_program *) data; - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; if(prog != &_mesa_DummyProgram) { ASSERT(prog->RefCount == 1); /* should only be referenced by hash table */ prog->RefCount = 0; /* now going away */ @@ -175,7 +175,7 @@ static void delete_fragshader_cb(GLuint id, void *data, void *userData) { struct ati_fragment_shader *shader = (struct ati_fragment_shader *) data; - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; _mesa_delete_ati_fragment_shader(ctx, shader); } #endif @@ -188,7 +188,7 @@ static void delete_bufferobj_cb(GLuint id, void *data, void *userData) { struct gl_buffer_object *bufObj = (struct gl_buffer_object *) data; - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; if (_mesa_bufferobj_mapped(bufObj)) { ctx->Driver.UnmapBuffer(ctx, 0, bufObj); bufObj->Pointer = NULL; @@ -204,7 +204,7 @@ delete_bufferobj_cb(GLuint id, void *data, void *userData) static void free_shader_program_data_cb(GLuint id, void *data, void *userData) { - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; struct gl_shader_program *shProg = (struct gl_shader_program *) data; if (shProg->Type == GL_SHADER_PROGRAM_MESA) { @@ -220,7 +220,7 @@ free_shader_program_data_cb(GLuint id, void *data, void *userData) static void delete_shader_cb(GLuint id, void *data, void *userData) { - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; struct gl_shader *sh = (struct gl_shader *) data; if (sh->Type == GL_FRAGMENT_SHADER || sh->Type == GL_VERTEX_SHADER) { ctx->Driver.DeleteShader(ctx, sh); @@ -280,7 +280,7 @@ delete_renderbuffer_cb(GLuint id, void *data, void *userData) * \sa alloc_shared_state(). */ static void -free_shared_state(GLcontext *ctx, struct gl_shared_state *shared) +free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) { GLuint i; @@ -373,7 +373,7 @@ free_shared_state(GLcontext *ctx, struct gl_shared_state *shared) * \sa free_shared_state(). */ void -_mesa_release_shared_state(GLcontext *ctx, struct gl_shared_state *shared) +_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) { GLint RefCount; diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h index 5166a0ce51f..43f8a388e6f 100644 --- a/src/mesa/main/shared.h +++ b/src/mesa/main/shared.h @@ -28,11 +28,11 @@ #include "mtypes.h" struct gl_shared_state * -_mesa_alloc_shared_state(GLcontext *ctx); +_mesa_alloc_shared_state(struct gl_context *ctx); void -_mesa_release_shared_state(GLcontext *ctx, struct gl_shared_state *shared); +_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared); #endif diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 4a3dffe4cf8..5529732de07 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -27,7 +27,7 @@ * \file state.c * State management. * - * This file manages recalculation of derived values in GLcontext. + * This file manages recalculation of derived values in struct gl_context. */ @@ -51,7 +51,7 @@ static void -update_separate_specular(GLcontext *ctx) +update_separate_specular(struct gl_context *ctx) { if (NEED_SECONDARY_COLOR(ctx)) ctx->_TriangleCaps |= DD_SEPARATE_SPECULAR; @@ -107,7 +107,7 @@ update_min(GLuint min, struct gl_client_array *array) * Need to do this upon new array state or new buffer object state. */ static void -update_arrays( GLcontext *ctx ) +update_arrays( struct gl_context *ctx ) { struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLuint i, min = ~0; @@ -219,7 +219,7 @@ update_arrays( GLcontext *ctx ) * This needs to be done before texture state validation. */ static void -update_program_enables(GLcontext *ctx) +update_program_enables(struct gl_context *ctx) { /* These _Enabled flags indicate if the program is enabled AND valid. */ ctx->VertexProgram._Enabled = ctx->VertexProgram.Enabled @@ -245,7 +245,7 @@ update_program_enables(GLcontext *ctx) * or fragment program is being used. */ static GLbitfield -update_program(GLcontext *ctx) +update_program(struct gl_context *ctx) { const struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; const struct gl_vertex_program *prevVP = ctx->VertexProgram._Current; @@ -362,7 +362,7 @@ update_program(GLcontext *ctx) * Examine shader constants and return either _NEW_PROGRAM_CONSTANTS or 0. */ static GLbitfield -update_program_constants(GLcontext *ctx) +update_program_constants(struct gl_context *ctx) { GLbitfield new_state = 0x0; @@ -399,7 +399,7 @@ update_program_constants(GLcontext *ctx) static void -update_viewport_matrix(GLcontext *ctx) +update_viewport_matrix(struct gl_context *ctx) { const GLfloat depthMax = ctx->DrawBuffer->_DepthMaxF; @@ -421,7 +421,7 @@ update_viewport_matrix(GLcontext *ctx) * Update derived multisample state. */ static void -update_multisample(GLcontext *ctx) +update_multisample(struct gl_context *ctx) { ctx->Multisample._Enabled = GL_FALSE; if (ctx->Multisample.Enabled && @@ -435,7 +435,7 @@ update_multisample(GLcontext *ctx) * Update derived color/blend/logicop state. */ static void -update_color(GLcontext *ctx) +update_color(struct gl_context *ctx) { /* This is needed to support 1.1's RGB logic ops AND * 1.0's blending logicops. @@ -449,7 +449,7 @@ update_color(GLcontext *ctx) * in ctx->_TriangleCaps if needed. */ static void -update_polygon(GLcontext *ctx) +update_polygon(struct gl_context *ctx) { ctx->_TriangleCaps &= ~(DD_TRI_CULL_FRONT_BACK | DD_TRI_OFFSET); @@ -471,7 +471,7 @@ update_polygon(GLcontext *ctx) */ #if 0 static void -update_tricaps(GLcontext *ctx, GLbitfield new_state) +update_tricaps(struct gl_context *ctx, GLbitfield new_state) { ctx->_TriangleCaps = 0; @@ -540,7 +540,7 @@ update_tricaps(GLcontext *ctx, GLbitfield new_state) /** * Compute derived GL state. - * If __GLcontextRec::NewState is non-zero then this function \b must + * If __struct gl_contextRec::NewState is non-zero then this function \b must * be called before rendering anything. * * Calls dd_function_table::UpdateState to perform any internal state @@ -551,7 +551,7 @@ update_tricaps(GLcontext *ctx, GLbitfield new_state) * _mesa_update_lighting() and _mesa_update_tnl_spaces(). */ void -_mesa_update_state_locked( GLcontext *ctx ) +_mesa_update_state_locked( struct gl_context *ctx ) { GLbitfield new_state = ctx->NewState; GLbitfield prog_flags = _NEW_PROGRAM; @@ -670,7 +670,7 @@ _mesa_update_state_locked( GLcontext *ctx ) /* This is the usual entrypoint for state updates: */ void -_mesa_update_state( GLcontext *ctx ) +_mesa_update_state( struct gl_context *ctx ) { _mesa_lock_context_textures(ctx); _mesa_update_state_locked(ctx); @@ -703,7 +703,7 @@ _mesa_update_state( GLcontext *ctx ) * Otherwise, the fp should track them as state values instead. */ void -_mesa_set_varying_vp_inputs( GLcontext *ctx, +_mesa_set_varying_vp_inputs( struct gl_context *ctx, GLbitfield varying_inputs ) { if (ctx->varying_vp_inputs != varying_inputs) { @@ -721,7 +721,7 @@ _mesa_set_varying_vp_inputs( GLcontext *ctx, * of ordinary varyings/inputs. */ void -_mesa_set_vp_override(GLcontext *ctx, GLboolean flag) +_mesa_set_vp_override(struct gl_context *ctx, GLboolean flag) { if (ctx->VertexProgram._Overriden != flag) { ctx->VertexProgram._Overriden = flag; diff --git a/src/mesa/main/state.h b/src/mesa/main/state.h index 29db08a0b95..f0eb43d8ee3 100644 --- a/src/mesa/main/state.h +++ b/src/mesa/main/state.h @@ -29,21 +29,21 @@ #include "mtypes.h" extern void -_mesa_update_state(GLcontext *ctx); +_mesa_update_state(struct gl_context *ctx); /* As above but can only be called between _mesa_lock_context_textures() and * _mesa_unlock_context_textures(). */ extern void -_mesa_update_state_locked(GLcontext *ctx); +_mesa_update_state_locked(struct gl_context *ctx); extern void -_mesa_set_varying_vp_inputs(GLcontext *ctx, GLbitfield varying_inputs); +_mesa_set_varying_vp_inputs(struct gl_context *ctx, GLbitfield varying_inputs); extern void -_mesa_set_vp_override(GLcontext *ctx, GLboolean flag); +_mesa_set_vp_override(struct gl_context *ctx, GLboolean flag); #endif diff --git a/src/mesa/main/stencil.c b/src/mesa/main/stencil.c index 15c98e20156..93e2e97ce0c 100644 --- a/src/mesa/main/stencil.c +++ b/src/mesa/main/stencil.c @@ -56,7 +56,7 @@ static GLboolean -validate_stencil_op(GLcontext *ctx, GLenum op) +validate_stencil_op(struct gl_context *ctx, GLenum op) { switch (op) { case GL_KEEP: @@ -79,7 +79,7 @@ validate_stencil_op(GLcontext *ctx, GLenum op) static GLboolean -validate_stencil_func(GLcontext *ctx, GLenum func) +validate_stencil_func(struct gl_context *ctx, GLenum func) { switch (func) { case GL_NEVER: @@ -137,7 +137,7 @@ _mesa_ClearStencil( GLint s ) * \sa glStencilFunc(). * * Verifies the parameters and updates the respective values in - * __GLcontextRec::Stencil. On change flushes the vertices and notifies the + * __struct gl_contextRec::Stencil. On change flushes the vertices and notifies the * driver via the dd_function_table::StencilFunc callback. */ void GLAPIENTRY @@ -192,7 +192,7 @@ _mesa_StencilFuncSeparateATI( GLenum frontfunc, GLenum backfunc, GLint ref, GLui * \sa glStencilFunc(). * * Verifies the parameters and updates the respective values in - * __GLcontextRec::Stencil. On change flushes the vertices and notifies the + * __struct gl_contextRec::Stencil. On change flushes the vertices and notifies the * driver via the dd_function_table::StencilFunc callback. */ void GLAPIENTRY @@ -312,7 +312,7 @@ _mesa_StencilMask( GLuint mask ) * \sa glStencilOp(). * * Verifies the parameters and updates the respective fields in - * __GLcontextRec::Stencil. On change flushes the vertices and notifies the + * __struct gl_contextRec::Stencil. On change flushes the vertices and notifies the * driver via the dd_function_table::StencilOp callback. */ void GLAPIENTRY @@ -532,7 +532,7 @@ _mesa_StencilMaskSeparate(GLenum face, GLuint mask) * Update derived stencil state. */ void -_mesa_update_stencil(GLcontext *ctx) +_mesa_update_stencil(struct gl_context *ctx) { const GLint face = ctx->Stencil._BackFace; @@ -556,10 +556,10 @@ _mesa_update_stencil(GLcontext *ctx) * * \param ctx GL context. * - * Initializes __GLcontextRec::Stencil attribute group. + * Initializes __struct gl_contextRec::Stencil attribute group. */ void -_mesa_init_stencil(GLcontext *ctx) +_mesa_init_stencil(struct gl_context *ctx) { ctx->Stencil.Enabled = GL_FALSE; ctx->Stencil.TestTwoSide = GL_FALSE; diff --git a/src/mesa/main/stencil.h b/src/mesa/main/stencil.h index 252ac932acd..38a7183a811 100644 --- a/src/mesa/main/stencil.h +++ b/src/mesa/main/stencil.h @@ -71,10 +71,10 @@ _mesa_StencilMaskSeparate(GLenum face, GLuint mask); extern void -_mesa_update_stencil(GLcontext *ctx); +_mesa_update_stencil(struct gl_context *ctx); extern void -_mesa_init_stencil( GLcontext * ctx ); +_mesa_init_stencil( struct gl_context * ctx ); #endif diff --git a/src/mesa/main/syncobj.c b/src/mesa/main/syncobj.c index ac948cc1efe..2c8bcbeaf7c 100644 --- a/src/mesa/main/syncobj.c +++ b/src/mesa/main/syncobj.c @@ -66,7 +66,7 @@ #include "syncobj.h" static struct gl_sync_object * -_mesa_new_sync_object(GLcontext *ctx, GLenum type) +_mesa_new_sync_object(struct gl_context *ctx, GLenum type) { struct gl_sync_object *s = MALLOC_STRUCT(gl_sync_object); (void) ctx; @@ -77,7 +77,7 @@ _mesa_new_sync_object(GLcontext *ctx, GLenum type) static void -_mesa_delete_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj) +_mesa_delete_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { (void) ctx; free(syncObj); @@ -85,7 +85,7 @@ _mesa_delete_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj) static void -_mesa_fence_sync(GLcontext *ctx, struct gl_sync_object *syncObj, +_mesa_fence_sync(struct gl_context *ctx, struct gl_sync_object *syncObj, GLenum condition, GLbitfield flags) { (void) ctx; @@ -97,7 +97,7 @@ _mesa_fence_sync(GLcontext *ctx, struct gl_sync_object *syncObj, static void -_mesa_check_sync(GLcontext *ctx, struct gl_sync_object *syncObj) +_mesa_check_sync(struct gl_context *ctx, struct gl_sync_object *syncObj) { (void) ctx; (void) syncObj; @@ -109,7 +109,7 @@ _mesa_check_sync(GLcontext *ctx, struct gl_sync_object *syncObj) static void -_mesa_wait_sync(GLcontext *ctx, struct gl_sync_object *syncObj, +_mesa_wait_sync(struct gl_context *ctx, struct gl_sync_object *syncObj, GLbitfield flags, GLuint64 timeout) { (void) ctx; @@ -155,7 +155,7 @@ _mesa_init_sync_dispatch(struct _glapi_table *disp) * Allocate/init the context state related to sync objects. */ void -_mesa_init_sync(GLcontext *ctx) +_mesa_init_sync(struct gl_context *ctx) { (void) ctx; } @@ -165,7 +165,7 @@ _mesa_init_sync(GLcontext *ctx) * Free the context state related to sync objects. */ void -_mesa_free_sync_data(GLcontext *ctx) +_mesa_free_sync_data(struct gl_context *ctx) { (void) ctx; } @@ -181,7 +181,7 @@ _mesa_validate_sync(struct gl_sync_object *syncObj) void -_mesa_ref_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj) +_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { _glthread_LOCK_MUTEX(ctx->Shared->Mutex); syncObj->RefCount++; @@ -190,7 +190,7 @@ _mesa_ref_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj) void -_mesa_unref_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj) +_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { _glthread_LOCK_MUTEX(ctx->Shared->Mutex); syncObj->RefCount--; diff --git a/src/mesa/main/syncobj.h b/src/mesa/main/syncobj.h index 82e141d408b..f3c0046cf3d 100644 --- a/src/mesa/main/syncobj.h +++ b/src/mesa/main/syncobj.h @@ -44,16 +44,16 @@ extern void _mesa_init_sync_dispatch(struct _glapi_table *disp); extern void -_mesa_init_sync(GLcontext *); +_mesa_init_sync(struct gl_context *); extern void -_mesa_free_sync_data(GLcontext *); +_mesa_free_sync_data(struct gl_context *); extern void -_mesa_ref_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj); +_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); extern void -_mesa_unref_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj); +_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); extern GLboolean GLAPIENTRY _mesa_IsSync(GLsync sync); @@ -89,23 +89,23 @@ _mesa_init_sync_dispatch(struct _glapi_table *disp) } static INLINE void -_mesa_init_sync(GLcontext *ctx) +_mesa_init_sync(struct gl_context *ctx) { } static INLINE void -_mesa_free_sync_data(GLcontext *ctx) +_mesa_free_sync_data(struct gl_context *ctx) { } static INLINE void -_mesa_ref_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj) +_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { ASSERT_NO_FEATURE(); } static INLINE void -_mesa_unref_sync_object(GLcontext *ctx, struct gl_sync_object *syncObj) +_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { ASSERT_NO_FEATURE(); } diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c index e911524cbc5..e3d2a786b3e 100644 --- a/src/mesa/main/texcompress.c +++ b/src/mesa/main/texcompress.c @@ -50,7 +50,7 @@ * \return number of formats. */ GLuint -_mesa_get_compressed_formats(GLcontext *ctx, GLint *formats, GLboolean all) +_mesa_get_compressed_formats(struct gl_context *ctx, GLint *formats, GLboolean all) { GLuint n = 0; if (ctx->Extensions.TDFX_texture_compression_FXT1) { @@ -178,7 +178,7 @@ _mesa_glenum_to_compressed_format(GLenum format) * internal format unchanged. */ GLenum -_mesa_compressed_format_to_glenum(GLcontext *ctx, GLuint mesaFormat) +_mesa_compressed_format_to_glenum(struct gl_context *ctx, GLuint mesaFormat) { switch (mesaFormat) { #if FEATURE_texture_fxt1 diff --git a/src/mesa/main/texcompress.h b/src/mesa/main/texcompress.h index 5e73a3149bd..83856429c54 100644 --- a/src/mesa/main/texcompress.h +++ b/src/mesa/main/texcompress.h @@ -31,13 +31,13 @@ #if _HAVE_FULL_GL extern GLuint -_mesa_get_compressed_formats(GLcontext *ctx, GLint *formats, GLboolean all); +_mesa_get_compressed_formats(struct gl_context *ctx, GLint *formats, GLboolean all); extern gl_format _mesa_glenum_to_compressed_format(GLenum format); extern GLenum -_mesa_compressed_format_to_glenum(GLcontext *ctx, GLuint mesaFormat); +_mesa_compressed_format_to_glenum(struct gl_context *ctx, GLuint mesaFormat); extern GLubyte * _mesa_compressed_image_address(GLint col, GLint row, GLint img, diff --git a/src/mesa/main/texcompress_s3tc.c b/src/mesa/main/texcompress_s3tc.c index 534a4247cf2..0e893a59fa3 100644 --- a/src/mesa/main/texcompress_s3tc.c +++ b/src/mesa/main/texcompress_s3tc.c @@ -104,7 +104,7 @@ static void *dxtlibhandle = NULL; void -_mesa_init_texture_s3tc( GLcontext *ctx ) +_mesa_init_texture_s3tc( struct gl_context *ctx ) { /* called during context initialization */ ctx->Mesa_DXTn = GL_FALSE; diff --git a/src/mesa/main/texcompress_s3tc.h b/src/mesa/main/texcompress_s3tc.h index 2e7688d3669..d0a5b186b71 100644 --- a/src/mesa/main/texcompress_s3tc.h +++ b/src/mesa/main/texcompress_s3tc.h @@ -76,7 +76,7 @@ _mesa_fetch_texel_2d_f_srgba_dxt5(const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLfloat *texel); extern void -_mesa_init_texture_s3tc(GLcontext *ctx); +_mesa_init_texture_s3tc(struct gl_context *ctx); #else /* FEATURE_texture_s3tc */ @@ -97,7 +97,7 @@ _mesa_init_texture_s3tc(GLcontext *ctx); #define _mesa_fetch_texel_2d_f_srgba_dxt5 NULL static INLINE void -_mesa_init_texture_s3tc(GLcontext *ctx) +_mesa_init_texture_s3tc(struct gl_context *ctx) { } diff --git a/src/mesa/main/texenv.c b/src/mesa/main/texenv.c index 3a55128c736..508dbf4887d 100644 --- a/src/mesa/main/texenv.c +++ b/src/mesa/main/texenv.c @@ -44,7 +44,7 @@ /** Set texture env mode */ static void -set_env_mode(GLcontext *ctx, +set_env_mode(struct gl_context *ctx, struct gl_texture_unit *texUnit, GLenum mode) { @@ -89,7 +89,7 @@ set_env_mode(GLcontext *ctx, static void -set_env_color(GLcontext *ctx, +set_env_color(struct gl_context *ctx, struct gl_texture_unit *texUnit, const GLfloat *color) { @@ -107,7 +107,7 @@ set_env_color(GLcontext *ctx, /** Set an RGB or A combiner mode/function */ static void -set_combiner_mode(GLcontext *ctx, +set_combiner_mode(struct gl_context *ctx, struct gl_texture_unit *texUnit, GLenum pname, GLenum mode) { @@ -181,7 +181,7 @@ set_combiner_mode(GLcontext *ctx, /** Set an RGB or A combiner source term */ static void -set_combiner_source(GLcontext *ctx, +set_combiner_source(struct gl_context *ctx, struct gl_texture_unit *texUnit, GLenum pname, GLenum param) { @@ -274,7 +274,7 @@ set_combiner_source(GLcontext *ctx, /** Set an RGB or A combiner operand term */ static void -set_combiner_operand(GLcontext *ctx, +set_combiner_operand(struct gl_context *ctx, struct gl_texture_unit *texUnit, GLenum pname, GLenum param) { @@ -360,7 +360,7 @@ set_combiner_operand(GLcontext *ctx, static void -set_combiner_scale(GLcontext *ctx, +set_combiner_scale(struct gl_context *ctx, struct gl_texture_unit *texUnit, GLenum pname, GLfloat scale) { @@ -595,7 +595,7 @@ _mesa_TexEnviv( GLenum target, GLenum pname, const GLint *param ) * \return value of queried pname or -1 if error. */ static GLint -get_texenvi(GLcontext *ctx, const struct gl_texture_unit *texUnit, +get_texenvi(struct gl_context *ctx, const struct gl_texture_unit *texUnit, GLenum pname) { switch (pname) { diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c index 20f02cefe94..4647a9c4405 100644 --- a/src/mesa/main/texenvprogram.c +++ b/src/mesa/main/texenvprogram.c @@ -62,7 +62,7 @@ struct texenvprog_cache_item }; static GLboolean -texenv_doing_secondary_color(GLcontext *ctx) +texenv_doing_secondary_color(struct gl_context *ctx) { if (ctx->Light.Enabled && (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)) @@ -307,7 +307,7 @@ static GLuint translate_tex_src_bit( GLbitfield bit ) * has access to. The bitmask is later reduced to just those which * are actually referenced. */ -static GLbitfield get_fp_input_mask( GLcontext *ctx ) +static GLbitfield get_fp_input_mask( struct gl_context *ctx ) { /* _NEW_PROGRAM */ const GLboolean vertexShader = (ctx->Shader.CurrentProgram && @@ -407,7 +407,7 @@ static GLbitfield get_fp_input_mask( GLcontext *ctx ) * Examine current texture environment state and generate a unique * key to identify it. */ -static GLuint make_state_key( GLcontext *ctx, struct state_key *key ) +static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) { GLuint i, j; GLbitfield inputs_referenced = FRAG_BIT_COL0; @@ -663,7 +663,7 @@ static void reserve_temp( struct texenv_fragment_program *p, struct ureg r ) } -static void release_temps(GLcontext *ctx, struct texenv_fragment_program *p ) +static void release_temps(struct gl_context *ctx, struct texenv_fragment_program *p ) { GLuint max_temp = ctx->Const.FragmentProgram.MaxTemps; @@ -1415,7 +1415,7 @@ load_texunit_bumpmap( struct texenv_fragment_program *p, GLuint unit ) * current texture env/combine mode. */ static void -create_new_program(GLcontext *ctx, struct state_key *key, +create_new_program(struct gl_context *ctx, struct state_key *key, struct gl_fragment_program *program) { struct prog_instruction instBuffer[MAX_INSTRUCTIONS]; @@ -1526,7 +1526,7 @@ create_new_program(GLcontext *ctx, struct state_key *key, emit_arith( &p, OPCODE_END, undef, WRITEMASK_XYZW, 0, undef, undef, undef); if (key->fog_enabled) { - /* Pull fog mode from GLcontext, the value in the state key is + /* Pull fog mode from struct gl_context, the value in the state key is * a reduced value and not what is expected in FogOption */ p.program->FogOption = ctx->Fog.Mode; @@ -1590,7 +1590,7 @@ create_new_program(GLcontext *ctx, struct state_key *key, * fixed-function texture, fog and color-sum operations. */ struct gl_fragment_program * -_mesa_get_fixed_func_fragment_program(GLcontext *ctx) +_mesa_get_fixed_func_fragment_program(struct gl_context *ctx) { struct gl_fragment_program *prog; struct state_key key; diff --git a/src/mesa/main/texenvprogram.h b/src/mesa/main/texenvprogram.h index 0a162d2e7a2..abfb916d21b 100644 --- a/src/mesa/main/texenvprogram.h +++ b/src/mesa/main/texenvprogram.h @@ -30,6 +30,6 @@ #include "mtypes.h" extern struct gl_fragment_program * -_mesa_get_fixed_func_fragment_program(GLcontext *ctx); +_mesa_get_fixed_func_fragment_program(struct gl_context *ctx); #endif diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index 24efb108bb6..894c0130b47 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -54,7 +54,7 @@ * will typically override this function with a specialized version. */ gl_format -_mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat, +_mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ) { (void) format; diff --git a/src/mesa/main/texformat.h b/src/mesa/main/texformat.h index bda5fd6d8ce..8bd15076753 100644 --- a/src/mesa/main/texformat.h +++ b/src/mesa/main/texformat.h @@ -32,7 +32,7 @@ extern gl_format -_mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat, +_mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type ); diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 00134ea9ffb..30d1062a415 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -63,7 +63,7 @@ type_with_negative_values(GLenum type) * glGetTexImage for color index pixels. */ static void -get_tex_color_index(GLcontext *ctx, GLuint dimensions, +get_tex_color_index(struct gl_context *ctx, GLuint dimensions, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_image *texImage) { @@ -111,7 +111,7 @@ get_tex_color_index(GLcontext *ctx, GLuint dimensions, * glGetTexImage for depth/Z pixels. */ static void -get_tex_depth(GLcontext *ctx, GLuint dimensions, +get_tex_depth(struct gl_context *ctx, GLuint dimensions, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_image *texImage) { @@ -141,7 +141,7 @@ get_tex_depth(GLcontext *ctx, GLuint dimensions, * glGetTexImage for depth/stencil pixels. */ static void -get_tex_depth_stencil(GLcontext *ctx, GLuint dimensions, +get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_image *texImage) { @@ -171,7 +171,7 @@ get_tex_depth_stencil(GLcontext *ctx, GLuint dimensions, * glGetTexImage for YCbCr pixels. */ static void -get_tex_ycbcr(GLcontext *ctx, GLuint dimensions, +get_tex_ycbcr(struct gl_context *ctx, GLuint dimensions, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_image *texImage) { @@ -234,7 +234,7 @@ linear_to_nonlinear(GLfloat cl) * glGetTexImagefor sRGB pixels; */ static void -get_tex_srgb(GLcontext *ctx, GLuint dimensions, +get_tex_srgb(struct gl_context *ctx, GLuint dimensions, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_image *texImage) { @@ -285,7 +285,7 @@ get_tex_srgb(GLcontext *ctx, GLuint dimensions, static INLINE void -get_tex_srgb(GLcontext *ctx, GLuint dimensions, +get_tex_srgb(struct gl_context *ctx, GLuint dimensions, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_image *texImage) { @@ -301,7 +301,7 @@ get_tex_srgb(GLcontext *ctx, GLuint dimensions, * This is the slow way since we use texture sampling. */ static void -get_tex_rgba(GLcontext *ctx, GLuint dimensions, +get_tex_rgba(struct gl_context *ctx, GLuint dimensions, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_image *texImage) { @@ -371,7 +371,7 @@ get_tex_rgba(GLcontext *ctx, GLuint dimensions, * \return GL_TRUE if done, GL_FALSE otherwise */ static GLboolean -get_tex_memcpy(GLcontext *ctx, GLenum format, GLenum type, GLvoid *pixels, +get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixels, const struct gl_texture_object *texObj, const struct gl_texture_image *texImage) { @@ -451,7 +451,7 @@ get_tex_memcpy(GLcontext *ctx, GLenum format, GLenum type, GLvoid *pixels, * The texture image must be mapped. */ void -_mesa_get_teximage(GLcontext *ctx, GLenum target, GLint level, +_mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -528,7 +528,7 @@ _mesa_get_teximage(GLcontext *ctx, GLenum target, GLint level, * All error checking will have been done before this routine is called. */ void -_mesa_get_compressed_teximage(GLcontext *ctx, GLenum target, GLint level, +_mesa_get_compressed_teximage(struct gl_context *ctx, GLenum target, GLint level, GLvoid *img, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -585,7 +585,7 @@ _mesa_get_compressed_teximage(GLcontext *ctx, GLenum target, GLint level, * \return GL_TRUE if any error, GL_FALSE if no errors. */ static GLboolean -getteximage_error_check(GLcontext *ctx, GLenum target, GLint level, +getteximage_error_check(struct gl_context *ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ) { struct gl_texture_object *texObj; @@ -771,7 +771,7 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, * \return GL_TRUE if any error, GL_FALSE if no errors. */ static GLboolean -getcompressedteximage_error_check(GLcontext *ctx, GLenum target, GLint level, +getcompressedteximage_error_check(struct gl_context *ctx, GLenum target, GLint level, GLvoid *img) { struct gl_texture_object *texObj; diff --git a/src/mesa/main/texgetimage.h b/src/mesa/main/texgetimage.h index 866ab704945..81a3bbbd9a7 100644 --- a/src/mesa/main/texgetimage.h +++ b/src/mesa/main/texgetimage.h @@ -30,14 +30,14 @@ #include "mtypes.h" extern void -_mesa_get_teximage(GLcontext *ctx, GLenum target, GLint level, +_mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage); extern void -_mesa_get_compressed_teximage(GLcontext *ctx, GLenum target, GLint level, +_mesa_get_compressed_teximage(struct gl_context *ctx, GLenum target, GLint level, GLvoid *img, struct gl_texture_object *texObj, struct gl_texture_image *texImage); diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 6c3f49f667b..08f9f5f3f85 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -127,7 +127,7 @@ logbase2( int n ) * XXX this could be static */ GLint -_mesa_base_tex_format( GLcontext *ctx, GLint internalFormat ) +_mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) { switch (internalFormat) { case GL_ALPHA: @@ -558,7 +558,7 @@ _mesa_set_tex_image(struct gl_texture_object *tObj, * zero. */ struct gl_texture_image * -_mesa_new_texture_image( GLcontext *ctx ) +_mesa_new_texture_image( struct gl_context *ctx ) { (void) ctx; return CALLOC_STRUCT(gl_texture_image); @@ -574,7 +574,7 @@ _mesa_new_texture_image( GLcontext *ctx ) * Free the texture image data if it's not marked as client data. */ void -_mesa_free_texture_image_data(GLcontext *ctx, +_mesa_free_texture_image_data(struct gl_context *ctx, struct gl_texture_image *texImage) { (void) ctx; @@ -596,7 +596,7 @@ _mesa_free_texture_image_data(GLcontext *ctx, * Free the texture image structure and the associated image data. */ void -_mesa_delete_texture_image( GLcontext *ctx, struct gl_texture_image *texImage ) +_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *texImage ) { /* Free texImage->Data and/or any other driver-specific texture * image storage. @@ -646,7 +646,7 @@ _mesa_is_proxy_texture(GLenum target) * \sa gl_texture_unit. */ struct gl_texture_object * -_mesa_select_tex_object(GLcontext *ctx, const struct gl_texture_unit *texUnit, +_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit, GLenum target) { switch (target) { @@ -703,7 +703,7 @@ _mesa_select_tex_object(GLcontext *ctx, const struct gl_texture_unit *texUnit, * Return pointer to texture object for given target on current texture unit. */ struct gl_texture_object * -_mesa_get_current_tex_object(GLcontext *ctx, GLenum target) +_mesa_get_current_tex_object(struct gl_context *ctx, GLenum target) { struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); return _mesa_select_tex_object(ctx, texUnit, target); @@ -723,7 +723,7 @@ _mesa_get_current_tex_object(GLcontext *ctx, GLenum target) * \return pointer to the texture image structure, or NULL on failure. */ struct gl_texture_image * -_mesa_select_tex_image(GLcontext *ctx, const struct gl_texture_object *texObj, +_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj, GLenum target, GLint level) { const GLuint face = _mesa_tex_target_to_face(target); @@ -742,7 +742,7 @@ _mesa_select_tex_image(GLcontext *ctx, const struct gl_texture_object *texObj, * out of memory. */ struct gl_texture_image * -_mesa_get_tex_image(GLcontext *ctx, struct gl_texture_object *texObj, +_mesa_get_tex_image(struct gl_context *ctx, struct gl_texture_object *texObj, GLenum target, GLint level) { struct gl_texture_image *texImage; @@ -772,7 +772,7 @@ _mesa_get_tex_image(GLcontext *ctx, struct gl_texture_object *texObj, * level, or out of memory. */ struct gl_texture_image * -_mesa_get_proxy_tex_image(GLcontext *ctx, GLenum target, GLint level) +_mesa_get_proxy_tex_image(struct gl_context *ctx, GLenum target, GLint level) { struct gl_texture_image *texImage; GLuint texIndex; @@ -847,7 +847,7 @@ _mesa_get_proxy_tex_image(GLcontext *ctx, GLenum target, GLint level) * \sa gl_constants. */ GLint -_mesa_max_texture_levels(GLcontext *ctx, GLenum target) +_mesa_max_texture_levels(struct gl_context *ctx, GLenum target) { switch (target) { case GL_TEXTURE_1D: @@ -993,7 +993,7 @@ clear_teximage_fields(struct gl_texture_image *img) * Note: width, height and depth include the border. */ void -_mesa_init_teximage_fields(GLcontext *ctx, GLenum target, +_mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, struct gl_texture_image *img, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum internalFormat) @@ -1084,7 +1084,7 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target, * fields are cleared so that its parent object will test incomplete. */ void -_mesa_clear_texture_image(GLcontext *ctx, struct gl_texture_image *texImage) +_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage) { ctx->Driver.FreeTexImageData(ctx, texImage); clear_teximage_fields(texImage); @@ -1116,7 +1116,7 @@ _mesa_clear_texture_image(GLcontext *ctx, struct gl_texture_image *texImage) * \return GL_TRUE if the image is acceptable, GL_FALSE if not acceptable. */ GLboolean -_mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level, +_mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLint width, GLint height, GLint depth, GLint border) { @@ -1228,7 +1228,7 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level, * Helper function to determine whether a target supports compressed textures */ static GLboolean -target_can_be_compressed(GLcontext *ctx, GLenum target) +target_can_be_compressed(struct gl_context *ctx, GLenum target) { return (((target == GL_TEXTURE_2D || target == GL_PROXY_TEXTURE_2D)) || ((ctx->Extensions.ARB_texture_cube_map && @@ -1259,11 +1259,11 @@ target_can_be_compressed(GLcontext *ctx, GLenum target) * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __GLcontextRec::Const and the supported extensions, and according to the + * __struct gl_contextRec::Const and the supported extensions, and according to the * OpenGL specification. */ static GLboolean -texture_error_check( GLcontext *ctx, GLenum target, +texture_error_check( struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLuint dimensions, @@ -1506,11 +1506,11 @@ texture_error_check( GLcontext *ctx, GLenum target, * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __GLcontextRec::Const and the supported extensions, and according to the + * __struct gl_contextRec::Const and the supported extensions, and according to the * OpenGL specification. */ static GLboolean -subtexture_error_check( GLcontext *ctx, GLuint dimensions, +subtexture_error_check( struct gl_context *ctx, GLuint dimensions, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, @@ -1603,7 +1603,7 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions, * \return GL_TRUE if error recorded, GL_FALSE otherwise */ static GLboolean -subtexture_error_check2( GLcontext *ctx, GLuint dimensions, +subtexture_error_check2( struct gl_context *ctx, GLuint dimensions, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, @@ -1701,11 +1701,11 @@ subtexture_error_check2( GLcontext *ctx, GLuint dimensions, * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __GLcontextRec::Const and the supported extensions, and according to the + * __struct gl_contextRec::Const and the supported extensions, and according to the * OpenGL specification. */ static GLboolean -copytexture_error_check( GLcontext *ctx, GLuint dimensions, +copytexture_error_check( struct gl_context *ctx, GLuint dimensions, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border ) { @@ -1880,7 +1880,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions, * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. */ static GLboolean -copytexsubimage_error_check1( GLcontext *ctx, GLuint dimensions, +copytexsubimage_error_check1( struct gl_context *ctx, GLuint dimensions, GLenum target, GLint level) { /* Check that the source buffer is complete */ @@ -1954,7 +1954,7 @@ copytexsubimage_error_check1( GLcontext *ctx, GLuint dimensions, * \param height image height given by the user. */ static GLboolean -copytexsubimage_error_check2( GLcontext *ctx, GLuint dimensions, +copytexsubimage_error_check2( struct gl_context *ctx, GLuint dimensions, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, @@ -2081,7 +2081,7 @@ copytexsubimage_error_check2( GLcontext *ctx, GLuint dimensions, /** Callback info for walking over FBO hash table */ struct cb_info { - GLcontext *ctx; + struct gl_context *ctx; struct gl_texture_object *texObj; GLuint level, face; }; @@ -2095,7 +2095,7 @@ check_rtt_cb(GLuint key, void *data, void *userData) { struct gl_framebuffer *fb = (struct gl_framebuffer *) data; const struct cb_info *info = (struct cb_info *) userData; - GLcontext *ctx = info->ctx; + struct gl_context *ctx = info->ctx; const struct gl_texture_object *texObj = info->texObj; const GLuint level = info->level, face = info->face; @@ -2127,7 +2127,7 @@ check_rtt_cb(GLuint key, void *data, void *userData) * Any FBOs rendering into the texture must be re-validated. */ static void -update_fbo_texture(GLcontext *ctx, struct gl_texture_object *texObj, +update_fbo_texture(struct gl_context *ctx, struct gl_texture_object *texObj, GLuint face, GLuint level) { /* Only check this texture if it's been marked as RenderToTexture */ @@ -2148,7 +2148,7 @@ update_fbo_texture(GLcontext *ctx, struct gl_texture_object *texObj, * mipmap levels now. */ static INLINE void -check_gen_mipmap(GLcontext *ctx, GLenum target, +check_gen_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, GLint level) { ASSERT(target != GL_TEXTURE_CUBE_MAP); @@ -2214,7 +2214,7 @@ override_internal_format(GLenum internalFormat, GLint width, GLint height) * comes up during automatic mipmap generation. */ void -_mesa_choose_texture_format(GLcontext *ctx, +_mesa_choose_texture_format(struct gl_context *ctx, struct gl_texture_object *texObj, struct gl_texture_image *texImage, GLenum target, GLint level, @@ -3158,7 +3158,7 @@ get_compressed_block_size(GLenum glformat, GLuint *bw, GLuint *bh) * \return error code or GL_NO_ERROR. */ static GLenum -compressed_texture_error_check(GLcontext *ctx, GLint dimensions, +compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, @@ -3265,7 +3265,7 @@ compressed_texture_error_check(GLcontext *ctx, GLint dimensions, * \return error code or GL_NO_ERROR. */ static GLenum -compressed_subtexture_error_check(GLcontext *ctx, GLint dimensions, +compressed_subtexture_error_check(struct gl_context *ctx, GLint dimensions, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, @@ -3349,7 +3349,7 @@ compressed_subtexture_error_check(GLcontext *ctx, GLint dimensions, * \return GL_TRUE if error found, GL_FALSE otherwise. */ static GLboolean -compressed_subtexture_error_check2(GLcontext *ctx, GLuint dims, +compressed_subtexture_error_check2(struct gl_context *ctx, GLuint dims, GLsizei width, GLsizei height, GLsizei depth, GLenum format, struct gl_texture_image *texImage) diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h index 0dcacab3cd0..d4317c301b7 100644 --- a/src/mesa/main/teximage.h +++ b/src/mesa/main/teximage.h @@ -46,7 +46,7 @@ _mesa_free_texmemory(void *m); /*@{*/ extern GLint -_mesa_base_tex_format( GLcontext *ctx, GLint internalFormat ); +_mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ); extern GLboolean @@ -54,26 +54,26 @@ _mesa_is_proxy_texture(GLenum target); extern struct gl_texture_image * -_mesa_new_texture_image( GLcontext *ctx ); +_mesa_new_texture_image( struct gl_context *ctx ); extern void -_mesa_delete_texture_image( GLcontext *ctx, struct gl_texture_image *teximage ); +_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *teximage ); extern void -_mesa_free_texture_image_data( GLcontext *ctx, +_mesa_free_texture_image_data( struct gl_context *ctx, struct gl_texture_image *texImage ); extern void -_mesa_init_teximage_fields(GLcontext *ctx, GLenum target, +_mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, struct gl_texture_image *img, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum internalFormat); extern void -_mesa_choose_texture_format(GLcontext *ctx, +_mesa_choose_texture_format(struct gl_context *ctx, struct gl_texture_object *texObj, struct gl_texture_image *texImage, GLenum target, GLint level, @@ -81,7 +81,7 @@ _mesa_choose_texture_format(GLcontext *ctx, extern void -_mesa_clear_texture_image(GLcontext *ctx, struct gl_texture_image *texImage); +_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage); extern void @@ -91,33 +91,33 @@ _mesa_set_tex_image(struct gl_texture_object *tObj, extern struct gl_texture_object * -_mesa_select_tex_object(GLcontext *ctx, const struct gl_texture_unit *texUnit, +_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit, GLenum target); extern struct gl_texture_object * -_mesa_get_current_tex_object(GLcontext *ctx, GLenum target); +_mesa_get_current_tex_object(struct gl_context *ctx, GLenum target); extern struct gl_texture_image * -_mesa_select_tex_image(GLcontext *ctx, const struct gl_texture_object *texObj, +_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj, GLenum target, GLint level); extern struct gl_texture_image * -_mesa_get_tex_image(GLcontext *ctx, struct gl_texture_object *texObj, +_mesa_get_tex_image(struct gl_context *ctx, struct gl_texture_object *texObj, GLenum target, GLint level); extern struct gl_texture_image * -_mesa_get_proxy_tex_image(GLcontext *ctx, GLenum target, GLint level); +_mesa_get_proxy_tex_image(struct gl_context *ctx, GLenum target, GLint level); extern GLint -_mesa_max_texture_levels(GLcontext *ctx, GLenum target); +_mesa_max_texture_levels(struct gl_context *ctx, GLenum target); extern GLboolean -_mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level, +_mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLint width, GLint height, GLint depth, GLint border); @@ -130,7 +130,7 @@ _mesa_tex_target_to_face(GLenum target); * Lock a texture for updating. See also _mesa_lock_context_textures(). */ static INLINE void -_mesa_lock_texture(GLcontext *ctx, struct gl_texture_object *texObj) +_mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj) { _glthread_LOCK_MUTEX(ctx->Shared->TexMutex); ctx->Shared->TextureStateStamp++; @@ -138,7 +138,7 @@ _mesa_lock_texture(GLcontext *ctx, struct gl_texture_object *texObj) } static INLINE void -_mesa_unlock_texture(GLcontext *ctx, struct gl_texture_object *texObj) +_mesa_unlock_texture(struct gl_context *ctx, struct gl_texture_object *texObj) { _glthread_UNLOCK_MUTEX(ctx->Shared->TexMutex); } diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 1fedc870285..e08df0f7fed 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -53,7 +53,7 @@ * Return the gl_texture_object for a given ID. */ struct gl_texture_object * -_mesa_lookup_texture(GLcontext *ctx, GLuint id) +_mesa_lookup_texture(struct gl_context *ctx, GLuint id) { return (struct gl_texture_object *) _mesa_HashLookup(ctx->Shared->TexObjects, id); @@ -77,7 +77,7 @@ _mesa_lookup_texture(GLcontext *ctx, GLuint id) * \return pointer to new texture object. */ struct gl_texture_object * -_mesa_new_texture_object( GLcontext *ctx, GLuint name, GLenum target ) +_mesa_new_texture_object( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; (void) ctx; @@ -149,7 +149,7 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, * target it's getting bound to (GL_TEXTURE_1D/2D/etc). */ static void -finish_texture_init(GLcontext *ctx, GLenum target, +finish_texture_init(struct gl_context *ctx, GLenum target, struct gl_texture_object *obj) { assert(obj->Target == 0); @@ -181,7 +181,7 @@ finish_texture_init(GLcontext *ctx, GLenum target, * \param texObj the texture object to delete. */ void -_mesa_delete_texture_object( GLcontext *ctx, struct gl_texture_object *texObj ) +_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *texObj ) { GLuint i, face; @@ -265,7 +265,7 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, * \sa _mesa_clear_texture_image(). */ void -_mesa_clear_texture_object(GLcontext *ctx, struct gl_texture_object *texObj) +_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *texObj) { GLuint i, j; @@ -404,7 +404,7 @@ incomplete(const struct gl_texture_object *t, const char *why) * present and has the expected size. */ void -_mesa_test_texobj_completeness( const GLcontext *ctx, +_mesa_test_texobj_completeness( const struct gl_context *ctx, struct gl_texture_object *t ) { const GLint baseLevel = t->BaseLevel; @@ -696,7 +696,7 @@ _mesa_test_texobj_completeness( const GLcontext *ctx, * \param invalidate_state also invalidate context state. */ void -_mesa_dirty_texobj(GLcontext *ctx, struct gl_texture_object *texObj, +_mesa_dirty_texobj(struct gl_context *ctx, struct gl_texture_object *texObj, GLboolean invalidate_state) { texObj->_Complete = GL_FALSE; @@ -712,7 +712,7 @@ _mesa_dirty_texobj(GLcontext *ctx, struct gl_texture_object *texObj, * incomplete texture. */ struct gl_texture_object * -_mesa_get_fallback_texture(GLcontext *ctx) +_mesa_get_fallback_texture(struct gl_context *ctx) { if (!ctx->Shared->FallbackTex) { /* create fallback texture now */ @@ -830,7 +830,7 @@ _mesa_GenTextures( GLsizei n, GLuint *textures ) * read framebuffer. If so, Unbind it. */ static void -unbind_texobj_from_fbo(GLcontext *ctx, struct gl_texture_object *texObj) +unbind_texobj_from_fbo(struct gl_context *ctx, struct gl_texture_object *texObj) { const GLuint n = (ctx->DrawBuffer == ctx->ReadBuffer) ? 1 : 2; GLuint i; @@ -855,7 +855,7 @@ unbind_texobj_from_fbo(GLcontext *ctx, struct gl_texture_object *texObj) * unbind it if so (revert to default textures). */ static void -unbind_texobj_from_texunits(GLcontext *ctx, struct gl_texture_object *texObj) +unbind_texobj_from_texunits(struct gl_context *ctx, struct gl_texture_object *texObj) { GLuint u, tex; @@ -1214,7 +1214,7 @@ _mesa_IsTexture( GLuint texture ) * See also _mesa_lock/unlock_texture() in teximage.h */ void -_mesa_lock_context_textures( GLcontext *ctx ) +_mesa_lock_context_textures( struct gl_context *ctx ) { _glthread_LOCK_MUTEX(ctx->Shared->TexMutex); @@ -1226,7 +1226,7 @@ _mesa_lock_context_textures( GLcontext *ctx ) void -_mesa_unlock_context_textures( GLcontext *ctx ) +_mesa_unlock_context_textures( struct gl_context *ctx ) { assert(ctx->Shared->TextureStateStamp == ctx->TextureStateTimestamp); _glthread_UNLOCK_MUTEX(ctx->Shared->TexMutex); diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h index 9bfebd45c81..821b35caa36 100644 --- a/src/mesa/main/texobj.h +++ b/src/mesa/main/texobj.h @@ -41,45 +41,45 @@ /*@{*/ extern struct gl_texture_object * -_mesa_lookup_texture(GLcontext *ctx, GLuint id); +_mesa_lookup_texture(struct gl_context *ctx, GLuint id); extern struct gl_texture_object * -_mesa_new_texture_object( GLcontext *ctx, GLuint name, GLenum target ); +_mesa_new_texture_object( struct gl_context *ctx, GLuint name, GLenum target ); extern void _mesa_initialize_texture_object( struct gl_texture_object *obj, GLuint name, GLenum target ); extern void -_mesa_delete_texture_object( GLcontext *ctx, struct gl_texture_object *obj ); +_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *obj ); extern void _mesa_copy_texture_object( struct gl_texture_object *dest, const struct gl_texture_object *src ); extern void -_mesa_clear_texture_object(GLcontext *ctx, struct gl_texture_object *obj); +_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *obj); extern void _mesa_reference_texobj(struct gl_texture_object **ptr, struct gl_texture_object *tex); extern void -_mesa_test_texobj_completeness( const GLcontext *ctx, +_mesa_test_texobj_completeness( const struct gl_context *ctx, struct gl_texture_object *obj ); extern void -_mesa_dirty_texobj(GLcontext *ctx, struct gl_texture_object *texObj, +_mesa_dirty_texobj(struct gl_context *ctx, struct gl_texture_object *texObj, GLboolean invalidate_state); extern struct gl_texture_object * -_mesa_get_fallback_texture(GLcontext *ctx); +_mesa_get_fallback_texture(struct gl_context *ctx); extern void -_mesa_unlock_context_textures( GLcontext *ctx ); +_mesa_unlock_context_textures( struct gl_context *ctx ); extern void -_mesa_lock_context_textures( GLcontext *ctx ); +_mesa_lock_context_textures( struct gl_context *ctx ); /*@}*/ diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index e96ace73403..d5c83de97f7 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -47,7 +47,7 @@ * \return GL_TRUE if legal, GL_FALSE otherwise */ static GLboolean -validate_texture_wrap_mode(GLcontext * ctx, GLenum target, GLenum wrap) +validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) { const struct gl_extensions * const e = & ctx->Extensions; @@ -83,7 +83,7 @@ validate_texture_wrap_mode(GLcontext * ctx, GLenum target, GLenum wrap) * Only the glGetTexLevelParameter() functions accept proxy targets. */ static struct gl_texture_object * -get_texobj(GLcontext *ctx, GLenum target, GLboolean get) +get_texobj(struct gl_context *ctx, GLenum target, GLboolean get) { struct gl_texture_unit *texUnit; @@ -178,7 +178,7 @@ set_swizzle_component(GLuint *swizzle, GLuint comp, GLuint swz) * per-texture derived state gets recomputed. */ static INLINE void -flush(GLcontext *ctx, struct gl_texture_object *texObj) +flush(struct gl_context *ctx, struct gl_texture_object *texObj) { FLUSH_VERTICES(ctx, _NEW_TEXTURE); texObj->_Complete = GL_FALSE; @@ -190,7 +190,7 @@ flush(GLcontext *ctx, struct gl_texture_object *texObj) * \return GL_TRUE if legal AND the value changed, GL_FALSE otherwise */ static GLboolean -set_tex_parameteri(GLcontext *ctx, +set_tex_parameteri(struct gl_context *ctx, struct gl_texture_object *texObj, GLenum pname, const GLint *params) { @@ -430,7 +430,7 @@ set_tex_parameteri(GLcontext *ctx, * \return GL_TRUE if legal AND the value changed, GL_FALSE otherwise */ static GLboolean -set_tex_parameterf(GLcontext *ctx, +set_tex_parameterf(struct gl_context *ctx, struct gl_texture_object *texObj, GLenum pname, const GLfloat *params) { diff --git a/src/mesa/main/texrender.c b/src/mesa/main/texrender.c index c68105b3951..8961b926487 100644 --- a/src/mesa/main/texrender.c +++ b/src/mesa/main/texrender.c @@ -31,7 +31,7 @@ struct texture_renderbuffer * Get row of values from the renderbuffer that wraps a texture image. */ static void -texture_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +texture_get_row(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { const struct texture_renderbuffer *trb @@ -100,7 +100,7 @@ texture_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +texture_get_values(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { const struct texture_renderbuffer *trb @@ -167,7 +167,7 @@ texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, * Put row of values into a renderbuffer that wraps a texture image. */ static void -texture_put_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +texture_put_row(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const struct texture_renderbuffer *trb @@ -229,7 +229,7 @@ texture_put_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, * Put row of RGB values into a renderbuffer that wraps a texture image. */ static void -texture_put_row_rgb(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +texture_put_row_rgb(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const struct texture_renderbuffer *trb @@ -289,7 +289,7 @@ texture_put_row_rgb(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -texture_put_mono_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +texture_put_mono_row(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte *mask) { const struct texture_renderbuffer *trb @@ -348,7 +348,7 @@ texture_put_mono_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, +texture_put_values(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte *mask) { @@ -407,7 +407,7 @@ texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, static void -texture_put_mono_values(GLcontext *ctx, struct gl_renderbuffer *rb, +texture_put_mono_values(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte *mask) { @@ -486,7 +486,7 @@ delete_texture_wrapper(struct gl_renderbuffer *rb) * This allows rendering into the texture as if it were a renderbuffer. */ static void -wrap_texture(GLcontext *ctx, struct gl_renderbuffer_attachment *att) +wrap_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { struct texture_renderbuffer *trb; const GLuint name = 0; @@ -525,7 +525,7 @@ wrap_texture(GLcontext *ctx, struct gl_renderbuffer_attachment *att) * update the internal format info, etc. */ static void -update_wrapper(GLcontext *ctx, const struct gl_renderbuffer_attachment *att) +update_wrapper(struct gl_context *ctx, const struct gl_renderbuffer_attachment *att) { struct texture_renderbuffer *trb = (struct texture_renderbuffer *) att->Renderbuffer; @@ -609,7 +609,7 @@ update_wrapper(GLcontext *ctx, const struct gl_renderbuffer_attachment *att) * \sa _mesa_framebuffer_renderbuffer */ void -_mesa_render_texture(GLcontext *ctx, +_mesa_render_texture(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att) { @@ -623,7 +623,7 @@ _mesa_render_texture(GLcontext *ctx, void -_mesa_finish_render_texture(GLcontext *ctx, +_mesa_finish_render_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { /* do nothing */ diff --git a/src/mesa/main/texrender.h b/src/mesa/main/texrender.h index 1e87d594a28..5e68fb03b57 100644 --- a/src/mesa/main/texrender.h +++ b/src/mesa/main/texrender.h @@ -4,12 +4,12 @@ #include "mtypes.h" extern void -_mesa_render_texture(GLcontext *ctx, +_mesa_render_texture(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att); extern void -_mesa_finish_render_texture(GLcontext *ctx, +_mesa_finish_render_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att); diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 30c978c1cdd..1b0d760fae5 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -63,7 +63,7 @@ static const struct gl_tex_env_combine_state default_combine_state = { * Used by glXCopyContext to copy texture state from one context to another. */ void -_mesa_copy_texture_state( const GLcontext *src, GLcontext *dst ) +_mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst ) { GLuint u, tex; @@ -119,7 +119,7 @@ _mesa_copy_texture_state( const GLcontext *src, GLcontext *dst ) * For debugging */ void -_mesa_print_texunit_state( GLcontext *ctx, GLuint unit ) +_mesa_print_texunit_state( struct gl_context *ctx, GLuint unit ) { const struct gl_texture_unit *texUnit = ctx->Texture.Unit + unit; printf("Texture Unit %d\n", unit); @@ -363,7 +363,7 @@ _mesa_ClientActiveTextureARB(GLenum texture) * \param ctx GL context. */ static void -update_texture_matrices( GLcontext *ctx ) +update_texture_matrices( struct gl_context *ctx ) { GLuint u; @@ -386,7 +386,7 @@ update_texture_matrices( GLcontext *ctx ) * Examine texture unit's combine/env state to update derived state. */ static void -update_tex_combine(GLcontext *ctx, struct gl_texture_unit *texUnit) +update_tex_combine(struct gl_context *ctx, struct gl_texture_unit *texUnit) { struct gl_tex_env_combine_state *combine; @@ -489,7 +489,7 @@ update_tex_combine(GLcontext *ctx, struct gl_texture_unit *texUnit) * \param ctx GL context. */ static void -update_texture_state( GLcontext *ctx ) +update_texture_state( struct gl_context *ctx ) { GLuint unit; struct gl_fragment_program *fprog = NULL; @@ -653,7 +653,7 @@ update_texture_state( GLcontext *ctx ) * Update texture-related derived state. */ void -_mesa_update_texture( GLcontext *ctx, GLuint new_state ) +_mesa_update_texture( struct gl_context *ctx, GLuint new_state ) { if (new_state & _NEW_TEXTURE_MATRIX) update_texture_matrices( ctx ); @@ -678,7 +678,7 @@ _mesa_update_texture( GLcontext *ctx, GLuint new_state ) * GL_FALSE. */ static GLboolean -alloc_proxy_textures( GLcontext *ctx ) +alloc_proxy_textures( struct gl_context *ctx ) { static const GLenum targets[] = { GL_TEXTURE_1D, @@ -716,7 +716,7 @@ alloc_proxy_textures( GLcontext *ctx ) * \param unit texture unit number to be initialized. */ static void -init_texture_unit( GLcontext *ctx, GLuint unit ) +init_texture_unit( struct gl_context *ctx, GLuint unit ) { struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; GLuint tex; @@ -764,7 +764,7 @@ init_texture_unit( GLcontext *ctx, GLuint unit ) * Initialize texture state for the given context. */ GLboolean -_mesa_init_texture(GLcontext *ctx) +_mesa_init_texture(struct gl_context *ctx) { GLuint u; @@ -796,7 +796,7 @@ _mesa_init_texture(GLcontext *ctx) * Free dynamically-allocted texture data attached to the given context. */ void -_mesa_free_texture_data(GLcontext *ctx) +_mesa_free_texture_data(struct gl_context *ctx) { GLuint u, tgt; @@ -825,7 +825,7 @@ _mesa_free_texture_data(GLcontext *ctx) * shared state. */ void -_mesa_update_default_objects_texture(GLcontext *ctx) +_mesa_update_default_objects_texture(struct gl_context *ctx) { GLuint u, tex; diff --git a/src/mesa/main/texstate.h b/src/mesa/main/texstate.h index 912cb677985..987123036a6 100644 --- a/src/mesa/main/texstate.h +++ b/src/mesa/main/texstate.h @@ -41,7 +41,7 @@ * This the texture unit set by glActiveTexture(), not glClientActiveTexture(). */ static INLINE struct gl_texture_unit * -_mesa_get_current_tex_unit(GLcontext *ctx) +_mesa_get_current_tex_unit(struct gl_context *ctx) { ASSERT(ctx->Texture.CurrentUnit < Elements(ctx->Texture.Unit)); return &(ctx->Texture.Unit[ctx->Texture.CurrentUnit]); @@ -49,10 +49,10 @@ _mesa_get_current_tex_unit(GLcontext *ctx) extern void -_mesa_copy_texture_state( const GLcontext *src, GLcontext *dst ); +_mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst ); extern void -_mesa_print_texunit_state( GLcontext *ctx, GLuint unit ); +_mesa_print_texunit_state( struct gl_context *ctx, GLuint unit ); @@ -76,16 +76,16 @@ _mesa_ClientActiveTextureARB( GLenum target ); /*@{*/ extern void -_mesa_update_texture( GLcontext *ctx, GLuint new_state ); +_mesa_update_texture( struct gl_context *ctx, GLuint new_state ); extern GLboolean -_mesa_init_texture( GLcontext *ctx ); +_mesa_init_texture( struct gl_context *ctx ); extern void -_mesa_free_texture_data( GLcontext *ctx ); +_mesa_free_texture_data( struct gl_context *ctx ); extern void -_mesa_update_default_objects_texture(GLcontext *ctx); +_mesa_update_default_objects_texture(struct gl_context *ctx); /*@}*/ diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index cc902bcb1a6..f5f94bbf1a4 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -307,7 +307,7 @@ compute_component_mapping(GLenum inFormat, GLenum outFormat, * \return resulting image with format = textureBaseFormat and type = GLfloat. */ static GLfloat * -make_temp_float_image(GLcontext *ctx, GLuint dims, +make_temp_float_image(struct gl_context *ctx, GLuint dims, GLenum logicalBaseFormat, GLenum textureBaseFormat, GLint srcWidth, GLint srcHeight, GLint srcDepth, @@ -440,7 +440,7 @@ make_temp_float_image(GLcontext *ctx, GLuint dims, * \return resulting image with format = textureBaseFormat and type = GLchan. */ GLchan * -_mesa_make_temp_chan_image(GLcontext *ctx, GLuint dims, +_mesa_make_temp_chan_image(struct gl_context *ctx, GLuint dims, GLenum logicalBaseFormat, GLenum textureBaseFormat, GLint srcWidth, GLint srcHeight, GLint srcDepth, @@ -725,7 +725,7 @@ byteswap_mapping( GLboolean swapBytes, * Transfer a GLubyte texture image with component swizzling. */ static void -_mesa_swizzle_ubyte_image(GLcontext *ctx, +_mesa_swizzle_ubyte_image(struct gl_context *ctx, GLuint dimensions, GLenum srcFormat, GLenum srcType, @@ -812,7 +812,7 @@ _mesa_swizzle_ubyte_image(GLcontext *ctx, * 1D, 2D and 3D images supported. */ static void -memcpy_texture(GLcontext *ctx, +memcpy_texture(struct gl_context *ctx, GLuint dimensions, gl_format dstFormat, GLvoid *dstAddr, @@ -3939,7 +3939,7 @@ _mesa_texstore(TEXSTORE_PARAMS) * The caller _must_ call _mesa_unmap_teximage_pbo() too! */ const GLvoid * -_mesa_validate_pbo_teximage(GLcontext *ctx, GLuint dimensions, +_mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *unpack, @@ -3976,7 +3976,7 @@ _mesa_validate_pbo_teximage(GLcontext *ctx, GLuint dimensions, * The caller _must_ call _mesa_unmap_teximage_pbo() too! */ const GLvoid * -_mesa_validate_pbo_compressed_teximage(GLcontext *ctx, +_mesa_validate_pbo_compressed_teximage(struct gl_context *ctx, GLsizei imageSize, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, const char *funcName) @@ -4010,7 +4010,7 @@ _mesa_validate_pbo_compressed_teximage(GLcontext *ctx, * functions. It unmaps the PBO buffer if it was mapped earlier. */ void -_mesa_unmap_teximage_pbo(GLcontext *ctx, +_mesa_unmap_teximage_pbo(struct gl_context *ctx, const struct gl_pixelstore_attrib *unpack) { if (_mesa_is_bufferobj(unpack->BufferObj)) { @@ -4047,7 +4047,7 @@ texture_row_stride(const struct gl_texture_image *texImage) * \sa _mesa_store_teximage2d() */ void -_mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_teximage1d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -4101,7 +4101,7 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level, * than VRAM. Device driver's can easily plug in their own replacement. */ void -_mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_teximage2d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const void *pixels, @@ -4154,7 +4154,7 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level, * \sa _mesa_store_teximage2d() */ void -_mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_teximage3d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, GLenum format, GLenum type, const void *pixels, @@ -4207,7 +4207,7 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level, * and Driver.CopyTexSubImage1D(). */ void -_mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_texsubimage1d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint width, GLenum format, GLenum type, const void *pixels, const struct gl_pixelstore_attrib *packing, @@ -4245,7 +4245,7 @@ _mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level, * and Driver.CopyTexSubImage2D(). */ void -_mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_texsubimage2d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint width, GLint height, GLenum format, GLenum type, const void *pixels, @@ -4283,7 +4283,7 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level, * and Driver.CopyTexSubImage3D(). */ void -_mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, GLenum format, GLenum type, const void *pixels, @@ -4321,7 +4321,7 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level, * Fallback for Driver.CompressedTexImage1D() */ void -_mesa_store_compressed_teximage1d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLsizei imageSize, const GLvoid *data, @@ -4344,7 +4344,7 @@ _mesa_store_compressed_teximage1d(GLcontext *ctx, GLenum target, GLint level, * Fallback for Driver.CompressedTexImage2D() */ void -_mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -4388,7 +4388,7 @@ _mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level, * Fallback for Driver.CompressedTexImage3D() */ void -_mesa_store_compressed_teximage3d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage3d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, @@ -4413,7 +4413,7 @@ _mesa_store_compressed_teximage3d(GLcontext *ctx, GLenum target, GLint level, * Fallback for Driver.CompressedTexSubImage1D() */ void -_mesa_store_compressed_texsubimage1d(GLcontext *ctx, GLenum target, +_mesa_store_compressed_texsubimage1d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, @@ -4436,7 +4436,7 @@ _mesa_store_compressed_texsubimage1d(GLcontext *ctx, GLenum target, * Fallback for Driver.CompressedTexSubImage2D() */ void -_mesa_store_compressed_texsubimage2d(GLcontext *ctx, GLenum target, +_mesa_store_compressed_texsubimage2d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, @@ -4497,7 +4497,7 @@ _mesa_store_compressed_texsubimage2d(GLcontext *ctx, GLenum target, * Fallback for Driver.CompressedTexSubImage3D() */ void -_mesa_store_compressed_texsubimage3d(GLcontext *ctx, GLenum target, +_mesa_store_compressed_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, diff --git a/src/mesa/main/texstore.h b/src/mesa/main/texstore.h index 3211086dd63..177ede423f5 100644 --- a/src/mesa/main/texstore.h +++ b/src/mesa/main/texstore.h @@ -56,7 +56,7 @@ * \param srcPacking source image packing parameters */ #define TEXSTORE_PARAMS \ - GLcontext *ctx, GLuint dims, \ + struct gl_context *ctx, GLuint dims, \ GLenum baseInternalFormat, \ gl_format dstFormat, \ GLvoid *dstAddr, \ @@ -73,7 +73,7 @@ _mesa_texstore(TEXSTORE_PARAMS); extern GLchan * -_mesa_make_temp_chan_image(GLcontext *ctx, GLuint dims, +_mesa_make_temp_chan_image(struct gl_context *ctx, GLuint dims, GLenum logicalBaseFormat, GLenum textureBaseFormat, GLint srcWidth, GLint srcHeight, GLint srcDepth, @@ -83,7 +83,7 @@ _mesa_make_temp_chan_image(GLcontext *ctx, GLuint dims, extern void -_mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_teximage1d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -93,7 +93,7 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_teximage2d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -103,7 +103,7 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_teximage3d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels, @@ -113,7 +113,7 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_texsubimage1d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, @@ -122,7 +122,7 @@ _mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_texsubimage2d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint width, GLint height, GLenum format, GLenum type, const GLvoid *pixels, @@ -132,7 +132,7 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, GLenum format, GLenum type, const GLvoid *pixels, @@ -142,7 +142,7 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_store_compressed_teximage1d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLsizei imageSize, const GLvoid *data, @@ -150,7 +150,7 @@ _mesa_store_compressed_teximage1d(GLcontext *ctx, GLenum target, GLint level, struct gl_texture_image *texImage); extern void -_mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -158,7 +158,7 @@ _mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level, struct gl_texture_image *texImage); extern void -_mesa_store_compressed_teximage3d(GLcontext *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage3d(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, @@ -168,7 +168,7 @@ _mesa_store_compressed_teximage3d(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_store_compressed_texsubimage1d(GLcontext *ctx, GLenum target, +_mesa_store_compressed_texsubimage1d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, @@ -177,7 +177,7 @@ _mesa_store_compressed_texsubimage1d(GLcontext *ctx, GLenum target, struct gl_texture_image *texImage); extern void -_mesa_store_compressed_texsubimage2d(GLcontext *ctx, GLenum target, +_mesa_store_compressed_texsubimage2d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, @@ -187,7 +187,7 @@ _mesa_store_compressed_texsubimage2d(GLcontext *ctx, GLenum target, struct gl_texture_image *texImage); extern void -_mesa_store_compressed_texsubimage3d(GLcontext *ctx, GLenum target, +_mesa_store_compressed_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, @@ -198,20 +198,20 @@ _mesa_store_compressed_texsubimage3d(GLcontext *ctx, GLenum target, extern const GLvoid * -_mesa_validate_pbo_teximage(GLcontext *ctx, GLuint dimensions, +_mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *unpack, const char *funcName); extern const GLvoid * -_mesa_validate_pbo_compressed_teximage(GLcontext *ctx, +_mesa_validate_pbo_compressed_teximage(struct gl_context *ctx, GLsizei imageSize, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, const char *funcName); extern void -_mesa_unmap_teximage_pbo(GLcontext *ctx, +_mesa_unmap_teximage_pbo(struct gl_context *ctx, const struct gl_pixelstore_attrib *unpack); diff --git a/src/mesa/main/transformfeedback.c b/src/mesa/main/transformfeedback.c index 5c8c1fd225f..d297b5ed712 100644 --- a/src/mesa/main/transformfeedback.c +++ b/src/mesa/main/transformfeedback.c @@ -95,7 +95,7 @@ reference_transform_feedback_object(struct gl_transform_feedback_object **ptr, * \return GL_TRUE if the mode is OK, GL_FALSE otherwise. */ GLboolean -_mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode) +_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode) { if (ctx->TransformFeedback.CurrentObject->Active) { switch (mode) { @@ -120,7 +120,7 @@ _mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode) * \return GL_TRUE for success, GL_FALSE if error */ GLboolean -_mesa_validate_transform_feedback_buffers(GLcontext *ctx) +_mesa_validate_transform_feedback_buffers(struct gl_context *ctx) { /* XXX to do */ return GL_TRUE; @@ -132,7 +132,7 @@ _mesa_validate_transform_feedback_buffers(GLcontext *ctx) * Per-context init for transform feedback. */ void -_mesa_init_transform_feedback(GLcontext *ctx) +_mesa_init_transform_feedback(struct gl_context *ctx) { /* core mesa expects this, even a dummy one, to be available */ ASSERT(ctx->Driver.NewTransformFeedback); @@ -162,7 +162,7 @@ _mesa_init_transform_feedback(GLcontext *ctx) static void delete_cb(GLuint key, void *data, void *userData) { - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; struct gl_transform_feedback_object *obj = (struct gl_transform_feedback_object *) data; @@ -174,7 +174,7 @@ delete_cb(GLuint key, void *data, void *userData) * Per-context free/clean-up for transform feedback. */ void -_mesa_free_transform_feedback(GLcontext *ctx) +_mesa_free_transform_feedback(struct gl_context *ctx) { /* core mesa expects this, even a dummy one, to be available */ ASSERT(ctx->Driver.NewTransformFeedback); @@ -200,15 +200,15 @@ _mesa_free_transform_feedback(GLcontext *ctx) /* forward declarations */ static struct gl_transform_feedback_object * -new_transform_feedback(GLcontext *ctx, GLuint name); +new_transform_feedback(struct gl_context *ctx, GLuint name); static void -delete_transform_feedback(GLcontext *ctx, +delete_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj); /* dummy per-context init/clean-up for transform feedback */ void -_mesa_init_transform_feedback(GLcontext *ctx) +_mesa_init_transform_feedback(struct gl_context *ctx) { ctx->TransformFeedback.DefaultObject = new_transform_feedback(ctx, 0); ctx->TransformFeedback.CurrentObject = ctx->TransformFeedback.DefaultObject; @@ -218,7 +218,7 @@ _mesa_init_transform_feedback(GLcontext *ctx) } void -_mesa_free_transform_feedback(GLcontext *ctx) +_mesa_free_transform_feedback(struct gl_context *ctx) { _mesa_reference_buffer_object(ctx, &ctx->TransformFeedback.CurrentBuffer, @@ -232,7 +232,7 @@ _mesa_free_transform_feedback(GLcontext *ctx) /** Default fallback for ctx->Driver.NewTransformFeedback() */ static struct gl_transform_feedback_object * -new_transform_feedback(GLcontext *ctx, GLuint name) +new_transform_feedback(struct gl_context *ctx, GLuint name) { struct gl_transform_feedback_object *obj; obj = CALLOC_STRUCT(gl_transform_feedback_object); @@ -245,7 +245,7 @@ new_transform_feedback(GLcontext *ctx, GLuint name) /** Default fallback for ctx->Driver.DeleteTransformFeedback() */ static void -delete_transform_feedback(GLcontext *ctx, +delete_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { GLuint i; @@ -263,7 +263,7 @@ delete_transform_feedback(GLcontext *ctx, /** Default fallback for ctx->Driver.BeginTransformFeedback() */ static void -begin_transform_feedback(GLcontext *ctx, GLenum mode, +begin_transform_feedback(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj) { /* nop */ @@ -271,7 +271,7 @@ begin_transform_feedback(GLcontext *ctx, GLenum mode, /** Default fallback for ctx->Driver.EndTransformFeedback() */ static void -end_transform_feedback(GLcontext *ctx, +end_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { /* nop */ @@ -279,7 +279,7 @@ end_transform_feedback(GLcontext *ctx, /** Default fallback for ctx->Driver.PauseTransformFeedback() */ static void -pause_transform_feedback(GLcontext *ctx, +pause_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { /* nop */ @@ -287,7 +287,7 @@ pause_transform_feedback(GLcontext *ctx, /** Default fallback for ctx->Driver.ResumeTransformFeedback() */ static void -resume_transform_feedback(GLcontext *ctx, +resume_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { /* nop */ @@ -295,7 +295,7 @@ resume_transform_feedback(GLcontext *ctx, /** Default fallback for ctx->Driver.DrawTransformFeedback() */ static void -draw_transform_feedback(GLcontext *ctx, GLenum mode, +draw_transform_feedback(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj) { /* XXX to do */ @@ -399,7 +399,7 @@ _mesa_EndTransformFeedback(void) * Helper used by BindBufferRange() and BindBufferBase(). */ static void -bind_buffer_range(GLcontext *ctx, GLuint index, +bind_buffer_range(struct gl_context *ctx, GLuint index, struct gl_buffer_object *bufObj, GLintptr offset, GLsizeiptr size) { @@ -698,7 +698,7 @@ _mesa_GetTransformFeedbackVarying(GLuint program, GLuint index, static struct gl_transform_feedback_object * -lookup_transform_feedback_object(GLcontext *ctx, GLuint name) +lookup_transform_feedback_object(struct gl_context *ctx, GLuint name) { if (name == 0) { return ctx->TransformFeedback.DefaultObject; diff --git a/src/mesa/main/transformfeedback.h b/src/mesa/main/transformfeedback.h index 4d38522d6d9..752cd4e201f 100644 --- a/src/mesa/main/transformfeedback.h +++ b/src/mesa/main/transformfeedback.h @@ -29,18 +29,18 @@ extern void -_mesa_init_transform_feedback(GLcontext *ctx); +_mesa_init_transform_feedback(struct gl_context *ctx); extern void -_mesa_free_transform_feedback(GLcontext *ctx); +_mesa_free_transform_feedback(struct gl_context *ctx); #if FEATURE_EXT_transform_feedback extern GLboolean -_mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode); +_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode); extern GLboolean -_mesa_validate_transform_feedback_buffers(GLcontext *ctx); +_mesa_validate_transform_feedback_buffers(struct gl_context *ctx); extern void @@ -106,13 +106,13 @@ _mesa_DrawTransformFeedback(GLenum mode, GLuint name); #else /* FEATURE_EXT_transform_feedback */ static INLINE GLboolean -_mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode) +_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode) { return GL_TRUE; } static INLINE GLboolean -_mesa_validate_transform_feedback_buffers(GLcontext *ctx) +_mesa_validate_transform_feedback_buffers(struct gl_context *ctx) { return GL_TRUE; } diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index 87ce6e49388..9359db18929 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -384,7 +384,7 @@ get_uniform_parameter(const struct gl_shader_program *shProg, GLuint index) * Called by glGetActiveUniform(). */ static void -_mesa_get_active_uniform(GLcontext *ctx, GLuint program, GLuint index, +_mesa_get_active_uniform(struct gl_context *ctx, GLuint program, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLchar *nameOut) { @@ -527,7 +527,7 @@ get_uniform_rows_cols(const struct gl_program_parameter *p, * to the shader program and return the program parameter position. */ static void -lookup_uniform_parameter(GLcontext *ctx, GLuint program, GLint location, +lookup_uniform_parameter(struct gl_context *ctx, GLuint program, GLint location, struct gl_program **progOut, GLint *paramPosOut) { struct gl_shader_program *shProg @@ -620,7 +620,7 @@ split_location_offset(GLint *location, GLint *offset) * Called via glGetUniformfv(). */ static void -_mesa_get_uniformfv(GLcontext *ctx, GLuint program, GLint location, +_mesa_get_uniformfv(struct gl_context *ctx, GLuint program, GLint location, GLfloat *params) { struct gl_program *prog; @@ -653,7 +653,7 @@ _mesa_get_uniformfv(GLcontext *ctx, GLuint program, GLint location, * \sa _mesa_get_uniformfv, only difference is a cast. */ static void -_mesa_get_uniformiv(GLcontext *ctx, GLuint program, GLint location, +_mesa_get_uniformiv(struct gl_context *ctx, GLuint program, GLint location, GLint *params) { struct gl_program *prog; @@ -688,7 +688,7 @@ _mesa_get_uniformiv(GLcontext *ctx, GLuint program, GLint location, * offset (used for arrays, structs). */ GLint -_mesa_get_uniform_location(GLcontext *ctx, struct gl_shader_program *shProg, +_mesa_get_uniform_location(struct gl_context *ctx, struct gl_shader_program *shProg, const GLchar *name) { GLint offset = 0, location = -1; @@ -837,7 +837,7 @@ compatible_types(GLenum userType, GLenum targetType) * \param values the new values, of datatype 'type' */ static void -set_program_uniform(GLcontext *ctx, struct gl_program *program, +set_program_uniform(struct gl_context *ctx, struct gl_program *program, GLint index, GLint offset, GLenum type, GLsizei count, GLint elems, const void *values) @@ -980,7 +980,7 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program, * Called via glUniform*() functions. */ void -_mesa_uniform(GLcontext *ctx, struct gl_shader_program *shProg, +_mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg, GLint location, GLsizei count, const GLvoid *values, GLenum type) { @@ -1084,7 +1084,7 @@ _mesa_uniform(GLcontext *ctx, struct gl_shader_program *shProg, * Set a matrix-valued program parameter. */ static void -set_program_uniform_matrix(GLcontext *ctx, struct gl_program *program, +set_program_uniform_matrix(struct gl_context *ctx, struct gl_program *program, GLuint index, GLuint offset, GLuint count, GLuint rows, GLuint cols, GLboolean transpose, const GLfloat *values) @@ -1152,7 +1152,7 @@ set_program_uniform_matrix(GLcontext *ctx, struct gl_program *program, * Note: cols=2, rows=4 ==> array[2] of vec4 */ void -_mesa_uniform_matrix(GLcontext *ctx, struct gl_shader_program *shProg, +_mesa_uniform_matrix(struct gl_context *ctx, struct gl_shader_program *shProg, GLint cols, GLint rows, GLint location, GLsizei count, GLboolean transpose, const GLfloat *values) diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h index ac2cf30d97e..64474363051 100644 --- a/src/mesa/main/uniforms.h +++ b/src/mesa/main/uniforms.h @@ -152,16 +152,16 @@ extern GLint GLAPIENTRY _mesa_GetUniformLocationARB(GLhandleARB, const GLcharARB *); GLint -_mesa_get_uniform_location(GLcontext *ctx, struct gl_shader_program *shProg, +_mesa_get_uniform_location(struct gl_context *ctx, struct gl_shader_program *shProg, const GLchar *name); void -_mesa_uniform(GLcontext *ctx, struct gl_shader_program *shader_program, +_mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shader_program, GLint location, GLsizei count, const GLvoid *values, GLenum type); void -_mesa_uniform_matrix(GLcontext *ctx, struct gl_shader_program *shProg, +_mesa_uniform_matrix(struct gl_context *ctx, struct gl_shader_program *shProg, GLint cols, GLint rows, GLint location, GLsizei count, GLboolean transpose, const GLfloat *values); diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index d19de7ff62a..acab9e0e924 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -54,7 +54,7 @@ * \param ptr the address (or offset inside VBO) of the array data */ static void -update_array(GLcontext *ctx, struct gl_client_array *array, +update_array(struct gl_context *ctx, struct gl_client_array *array, GLbitfield dirtyBit, GLsizei elementSize, GLint size, GLenum type, GLenum format, GLsizei stride, GLboolean normalized, const GLvoid *ptr) @@ -778,7 +778,7 @@ _mesa_DisableVertexAttribArrayARB(GLuint index) * not handle the 4-element GL_CURRENT_VERTEX_ATTRIB_ARB query. */ static GLuint -get_vertex_array_attrib(GLcontext *ctx, GLuint index, GLenum pname, +get_vertex_array_attrib(struct gl_context *ctx, GLuint index, GLenum pname, const char *caller) { const struct gl_client_array *array; @@ -1339,7 +1339,7 @@ _mesa_PrimitiveRestartIndex(GLuint index) * Copy one client vertex array to another. */ void -_mesa_copy_client_array(GLcontext *ctx, +_mesa_copy_client_array(struct gl_context *ctx, struct gl_client_array *dst, struct gl_client_array *src) { @@ -1380,7 +1380,7 @@ print_array(const char *name, GLint index, const struct gl_client_array *array) * Print current vertex object/array info. For debug. */ void -_mesa_print_arrays(GLcontext *ctx) +_mesa_print_arrays(struct gl_context *ctx) { struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLuint i; @@ -1408,7 +1408,7 @@ _mesa_print_arrays(GLcontext *ctx) * Initialize vertex array state for given context. */ void -_mesa_init_varray(GLcontext *ctx) +_mesa_init_varray(struct gl_context *ctx) { ctx->Array.DefaultArrayObj = _mesa_new_array_object(ctx, 0); _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, @@ -1426,7 +1426,7 @@ static void delete_arrayobj_cb(GLuint id, void *data, void *userData) { struct gl_array_object *arrayObj = (struct gl_array_object *) data; - GLcontext *ctx = (GLcontext *) userData; + struct gl_context *ctx = (struct gl_context *) userData; _mesa_delete_array_object(ctx, arrayObj); } @@ -1435,7 +1435,7 @@ delete_arrayobj_cb(GLuint id, void *data, void *userData) * Free vertex array state for given context. */ void -_mesa_free_varray_data(GLcontext *ctx) +_mesa_free_varray_data(struct gl_context *ctx) { _mesa_HashDeleteAll(ctx->Array.Objects, delete_arrayobj_cb, ctx); _mesa_DeleteHashTable(ctx->Array.Objects); diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h index c7c3e3ec70c..a5fa33fa00e 100644 --- a/src/mesa/main/varray.h +++ b/src/mesa/main/varray.h @@ -216,19 +216,19 @@ _mesa_PrimitiveRestartIndex(GLuint index); extern void -_mesa_copy_client_array(GLcontext *ctx, +_mesa_copy_client_array(struct gl_context *ctx, struct gl_client_array *dst, struct gl_client_array *src); extern void -_mesa_print_arrays(GLcontext *ctx); +_mesa_print_arrays(struct gl_context *ctx); extern void -_mesa_init_varray( GLcontext * ctx ); +_mesa_init_varray( struct gl_context * ctx ); extern void -_mesa_free_varray_data(GLcontext *ctx); +_mesa_free_varray_data(struct gl_context *ctx); #else diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index 692e8733c60..69a28da84c6 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -32,7 +32,7 @@ * Return major and minor version numbers. */ static void -compute_version(GLcontext *ctx) +compute_version(struct gl_context *ctx) { GLuint major, minor; static const int max = 100; @@ -187,7 +187,7 @@ compute_version(GLcontext *ctx) } static void -compute_version_es1(GLcontext *ctx) +compute_version_es1(struct gl_context *ctx) { static const int max = 100; @@ -223,7 +223,7 @@ compute_version_es1(GLcontext *ctx) } static void -compute_version_es2(GLcontext *ctx) +compute_version_es2(struct gl_context *ctx) { static const int max = 100; @@ -264,7 +264,7 @@ compute_version_es2(GLcontext *ctx) * or to perform version check for GLX_ARB_create_context_profile. */ void -_mesa_compute_version(GLcontext *ctx) +_mesa_compute_version(struct gl_context *ctx) { if (ctx->VersionMajor) return; diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h index 004036de98d..6552a3a7843 100644 --- a/src/mesa/main/version.h +++ b/src/mesa/main/version.h @@ -54,7 +54,7 @@ extern void -_mesa_compute_version(GLcontext *ctx); +_mesa_compute_version(struct gl_context *ctx); #endif /* VERSION_H */ diff --git a/src/mesa/main/viewport.c b/src/mesa/main/viewport.c index 309308c983b..4747022d0b4 100644 --- a/src/mesa/main/viewport.c +++ b/src/mesa/main/viewport.c @@ -60,7 +60,7 @@ _mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height) * \param height height of the viewport rectangle. */ void -_mesa_set_viewport(GLcontext *ctx, GLint x, GLint y, +_mesa_set_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height) { if (MESA_VERBOSE & VERBOSE_API) @@ -151,7 +151,7 @@ _mesa_DepthRange(GLclampd nearval, GLclampd farval) * Initialize the context viewport attribute group. * \param ctx the GL context. */ -void _mesa_init_viewport(GLcontext *ctx) +void _mesa_init_viewport(struct gl_context *ctx) { GLfloat depthMax = 65535.0F; /* sorf of arbitrary */ @@ -173,7 +173,7 @@ void _mesa_init_viewport(GLcontext *ctx) * Free the context viewport attribute group data. * \param ctx the GL context. */ -void _mesa_free_viewport_data(GLcontext *ctx) +void _mesa_free_viewport_data(struct gl_context *ctx) { _math_matrix_dtr(&ctx->Viewport._WindowMap); } diff --git a/src/mesa/main/viewport.h b/src/mesa/main/viewport.h index ec054a7c597..ccfa37588b8 100644 --- a/src/mesa/main/viewport.h +++ b/src/mesa/main/viewport.h @@ -35,7 +35,7 @@ _mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height); extern void -_mesa_set_viewport(GLcontext *ctx, GLint x, GLint y, +_mesa_set_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height); @@ -44,11 +44,11 @@ _mesa_DepthRange(GLclampd nearval, GLclampd farval); extern void -_mesa_init_viewport(GLcontext *ctx); +_mesa_init_viewport(struct gl_context *ctx); extern void -_mesa_free_viewport_data(GLcontext *ctx); +_mesa_free_viewport_data(struct gl_context *ctx); #endif diff --git a/src/mesa/main/vtxfmt.c b/src/mesa/main/vtxfmt.c index ca352e88e6b..284e77798c7 100644 --- a/src/mesa/main/vtxfmt.c +++ b/src/mesa/main/vtxfmt.c @@ -165,27 +165,27 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) } -void _mesa_init_exec_vtxfmt( GLcontext *ctx ) +void _mesa_init_exec_vtxfmt( struct gl_context *ctx ) { install_vtxfmt( ctx->Exec, &neutral_vtxfmt ); ctx->TnlModule.SwapCount = 0; } -void _mesa_install_exec_vtxfmt( GLcontext *ctx, const GLvertexformat *vfmt ) +void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) { ctx->TnlModule.Current = vfmt; _mesa_restore_exec_vtxfmt( ctx ); } -void _mesa_install_save_vtxfmt( GLcontext *ctx, const GLvertexformat *vfmt ) +void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) { install_vtxfmt( ctx->Save, vfmt ); } -void _mesa_restore_exec_vtxfmt( GLcontext *ctx ) +void _mesa_restore_exec_vtxfmt( struct gl_context *ctx ) { struct gl_tnl_module *tnl = &(ctx->TnlModule); GLuint i; diff --git a/src/mesa/main/vtxfmt.h b/src/mesa/main/vtxfmt.h index aad38b87c35..401eb80a0ad 100644 --- a/src/mesa/main/vtxfmt.h +++ b/src/mesa/main/vtxfmt.h @@ -38,32 +38,32 @@ #if FEATURE_beginend -extern void _mesa_init_exec_vtxfmt( GLcontext *ctx ); +extern void _mesa_init_exec_vtxfmt( struct gl_context *ctx ); -extern void _mesa_install_exec_vtxfmt( GLcontext *ctx, const GLvertexformat *vfmt ); -extern void _mesa_install_save_vtxfmt( GLcontext *ctx, const GLvertexformat *vfmt ); +extern void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); +extern void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); -extern void _mesa_restore_exec_vtxfmt( GLcontext *ctx ); +extern void _mesa_restore_exec_vtxfmt( struct gl_context *ctx ); #else /* FEATURE_beginend */ static INLINE void -_mesa_init_exec_vtxfmt( GLcontext *ctx ) +_mesa_init_exec_vtxfmt( struct gl_context *ctx ) { } static INLINE void -_mesa_install_exec_vtxfmt( GLcontext *ctx, const GLvertexformat *vfmt ) +_mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) { } static INLINE void -_mesa_install_save_vtxfmt( GLcontext *ctx, const GLvertexformat *vfmt ) +_mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) { } static INLINE void -_mesa_restore_exec_vtxfmt( GLcontext *ctx ) +_mesa_restore_exec_vtxfmt( struct gl_context *ctx ) { } diff --git a/src/mesa/program/arbprogparse.c b/src/mesa/program/arbprogparse.c index f834aaf5686..ca63e72c085 100644 --- a/src/mesa/program/arbprogparse.c +++ b/src/mesa/program/arbprogparse.c @@ -64,7 +64,7 @@ having three separate program parameter arrays. void -_mesa_parse_arb_fragment_program(GLcontext* ctx, GLenum target, +_mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target, const GLvoid *str, GLsizei len, struct gl_fragment_program *program) { @@ -162,7 +162,7 @@ _mesa_parse_arb_fragment_program(GLcontext* ctx, GLenum target, * object unchanged. */ void -_mesa_parse_arb_vertex_program(GLcontext *ctx, GLenum target, +_mesa_parse_arb_vertex_program(struct gl_context *ctx, GLenum target, const GLvoid *str, GLsizei len, struct gl_vertex_program *program) { diff --git a/src/mesa/program/arbprogparse.h b/src/mesa/program/arbprogparse.h index 980d39fb9fe..08e25a1c168 100644 --- a/src/mesa/program/arbprogparse.h +++ b/src/mesa/program/arbprogparse.h @@ -29,12 +29,12 @@ #include "main/mtypes.h" extern void -_mesa_parse_arb_vertex_program(GLcontext *ctx, GLenum target, +_mesa_parse_arb_vertex_program(struct gl_context *ctx, GLenum target, const GLvoid *str, GLsizei len, struct gl_vertex_program *program); extern void -_mesa_parse_arb_fragment_program(GLcontext *ctx, GLenum target, +_mesa_parse_arb_fragment_program(struct gl_context *ctx, GLenum target, const GLvoid *str, GLsizei len, struct gl_fragment_program *program); diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index da0d8106dff..cd609653fb3 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -183,7 +183,7 @@ public: function_entry *current_function; - GLcontext *ctx; + struct gl_context *ctx; struct gl_program *prog; struct gl_shader_program *shader_program; struct gl_shader_compiler_options *options; @@ -2162,7 +2162,7 @@ add_uniforms_to_parameters_list(struct gl_shader_program *shader_program, } static void -set_uniform_initializer(GLcontext *ctx, void *mem_ctx, +set_uniform_initializer(struct gl_context *ctx, void *mem_ctx, struct gl_shader_program *shader_program, const char *name, const glsl_type *type, ir_constant *val) @@ -2232,7 +2232,7 @@ set_uniform_initializer(GLcontext *ctx, void *mem_ctx, } static void -set_uniform_initializers(GLcontext *ctx, +set_uniform_initializers(struct gl_context *ctx, struct gl_shader_program *shader_program) { void *mem_ctx = NULL; @@ -2262,7 +2262,7 @@ set_uniform_initializers(GLcontext *ctx, * Convert a shader's GLSL IR into a Mesa gl_program. */ struct gl_program * -get_mesa_program(GLcontext *ctx, struct gl_shader_program *shader_program, +get_mesa_program(struct gl_context *ctx, struct gl_shader_program *shader_program, struct gl_shader *shader) { ir_to_mesa_visitor v; @@ -2446,7 +2446,7 @@ extern "C" { * XXX can we remove the ctx->Driver.CompileShader() hook? */ GLboolean -_mesa_ir_compile_shader(GLcontext *ctx, struct gl_shader *shader) +_mesa_ir_compile_shader(struct gl_context *ctx, struct gl_shader *shader) { assert(shader->CompileStatus); (void) ctx; @@ -2462,7 +2462,7 @@ _mesa_ir_compile_shader(GLcontext *ctx, struct gl_shader *shader) * code lowering and other optimizations. */ GLboolean -_mesa_ir_link_shader(GLcontext *ctx, struct gl_shader_program *prog) +_mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) { assert(prog->LinkStatus); @@ -2544,7 +2544,7 @@ _mesa_ir_link_shader(GLcontext *ctx, struct gl_shader_program *prog) * Compile a GLSL shader. Called via glCompileShader(). */ void -_mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *shader) +_mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader) { struct _mesa_glsl_parse_state *state = new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader); @@ -2632,7 +2632,7 @@ _mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *shader) * Link a GLSL shader program. Called via glLinkProgram(). */ void -_mesa_glsl_link_shader(GLcontext *ctx, struct gl_shader_program *prog) +_mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) { unsigned int i; diff --git a/src/mesa/program/ir_to_mesa.h b/src/mesa/program/ir_to_mesa.h index ecaacde4bb0..7197615f949 100644 --- a/src/mesa/program/ir_to_mesa.h +++ b/src/mesa/program/ir_to_mesa.h @@ -28,10 +28,10 @@ extern "C" { #include "main/config.h" #include "main/mtypes.h" -void _mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *sh); -void _mesa_glsl_link_shader(GLcontext *ctx, struct gl_shader_program *prog); -GLboolean _mesa_ir_compile_shader(GLcontext *ctx, struct gl_shader *shader); -GLboolean _mesa_ir_link_shader(GLcontext *ctx, struct gl_shader_program *prog); +void _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *sh); +void _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog); +GLboolean _mesa_ir_compile_shader(struct gl_context *ctx, struct gl_shader *shader); +GLboolean _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog); #ifdef __cplusplus } diff --git a/src/mesa/program/nvfragparse.c b/src/mesa/program/nvfragparse.c index 0de3c5804d2..8516b5fc1ff 100644 --- a/src/mesa/program/nvfragparse.c +++ b/src/mesa/program/nvfragparse.c @@ -141,7 +141,7 @@ static const struct instruction_pattern Instructions[] = { * _successfully_ parsed the program text. */ struct parse_state { - GLcontext *ctx; + struct gl_context *ctx; const GLubyte *start; /* start of program string */ const GLubyte *pos; /* current position */ const GLubyte *curLine; @@ -1463,7 +1463,7 @@ Parse_InstructionSequence(struct parse_state *parseState, * indicates the position of the error in 'str'. */ void -_mesa_parse_nv_fragment_program(GLcontext *ctx, GLenum dstTarget, +_mesa_parse_nv_fragment_program(struct gl_context *ctx, GLenum dstTarget, const GLubyte *str, GLsizei len, struct gl_fragment_program *program) { diff --git a/src/mesa/program/nvfragparse.h b/src/mesa/program/nvfragparse.h index e28a6c49349..3e85dd2c30b 100644 --- a/src/mesa/program/nvfragparse.h +++ b/src/mesa/program/nvfragparse.h @@ -33,7 +33,7 @@ #include "main/mtypes.h" extern void -_mesa_parse_nv_fragment_program(GLcontext *ctx, GLenum target, +_mesa_parse_nv_fragment_program(struct gl_context *ctx, GLenum target, const GLubyte *str, GLsizei len, struct gl_fragment_program *program); diff --git a/src/mesa/program/nvvertparse.c b/src/mesa/program/nvvertparse.c index 1ac83d0e59d..bdd44a45133 100644 --- a/src/mesa/program/nvvertparse.c +++ b/src/mesa/program/nvvertparse.c @@ -54,7 +54,7 @@ * program attributes. */ struct parse_state { - GLcontext *ctx; + struct gl_context *ctx; const GLubyte *start; const GLubyte *pos; const GLubyte *curLine; @@ -1282,7 +1282,7 @@ Parse_Program(struct parse_state *parseState, * indicates the position of the error in 'str'. */ void -_mesa_parse_nv_vertex_program(GLcontext *ctx, GLenum dstTarget, +_mesa_parse_nv_vertex_program(struct gl_context *ctx, GLenum dstTarget, const GLubyte *str, GLsizei len, struct gl_vertex_program *program) { diff --git a/src/mesa/program/nvvertparse.h b/src/mesa/program/nvvertparse.h index 91ef79e6c3c..e98e867320f 100644 --- a/src/mesa/program/nvvertparse.h +++ b/src/mesa/program/nvvertparse.h @@ -32,7 +32,7 @@ #include "main/mtypes.h" extern void -_mesa_parse_nv_vertex_program(GLcontext *ctx, GLenum target, +_mesa_parse_nv_vertex_program(struct gl_context *ctx, GLenum target, const GLubyte *str, GLsizei len, struct gl_vertex_program *program); diff --git a/src/mesa/program/prog_cache.c b/src/mesa/program/prog_cache.c index 8af689754bb..56ca59890de 100644 --- a/src/mesa/program/prog_cache.c +++ b/src/mesa/program/prog_cache.c @@ -104,7 +104,7 @@ rehash(struct gl_program_cache *cache) static void -clear_cache(GLcontext *ctx, struct gl_program_cache *cache) +clear_cache(struct gl_context *ctx, struct gl_program_cache *cache) { struct cache_item *c, *next; GLuint i; @@ -145,7 +145,7 @@ _mesa_new_program_cache(void) void -_mesa_delete_program_cache(GLcontext *ctx, struct gl_program_cache *cache) +_mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *cache) { clear_cache(ctx, cache); free(cache->items); @@ -178,7 +178,7 @@ _mesa_search_program_cache(struct gl_program_cache *cache, void -_mesa_program_cache_insert(GLcontext *ctx, +_mesa_program_cache_insert(struct gl_context *ctx, struct gl_program_cache *cache, const void *key, GLuint keysize, struct gl_program *program) diff --git a/src/mesa/program/prog_cache.h b/src/mesa/program/prog_cache.h index bfe8f99d445..4907ae3030e 100644 --- a/src/mesa/program/prog_cache.h +++ b/src/mesa/program/prog_cache.h @@ -41,7 +41,7 @@ extern struct gl_program_cache * _mesa_new_program_cache(void); extern void -_mesa_delete_program_cache(GLcontext *ctx, struct gl_program_cache *pc); +_mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *pc); extern struct gl_program * @@ -49,7 +49,7 @@ _mesa_search_program_cache(struct gl_program_cache *cache, const void *key, GLuint keysize); extern void -_mesa_program_cache_insert(GLcontext *ctx, +_mesa_program_cache_insert(struct gl_context *ctx, struct gl_program_cache *cache, const void *key, GLuint keysize, struct gl_program *program); diff --git a/src/mesa/program/prog_execute.c b/src/mesa/program/prog_execute.c index 2ae5bc572af..1d97a077f52 100644 --- a/src/mesa/program/prog_execute.c +++ b/src/mesa/program/prog_execute.c @@ -296,7 +296,7 @@ fetch_vector4ui(const struct prog_src_register *source, * XXX this currently only works for fragment program input attribs. */ static void -fetch_vector4_deriv(GLcontext * ctx, +fetch_vector4_deriv(struct gl_context * ctx, const struct prog_src_register *source, const struct gl_program_machine *machine, char xOrY, GLfloat result[4]) @@ -380,7 +380,7 @@ fetch_vector1ui(const struct prog_src_register *source, * Fetch texel from texture. Use partial derivatives when possible. */ static INLINE void -fetch_texel(GLcontext *ctx, +fetch_texel(struct gl_context *ctx, const struct gl_program_machine *machine, const struct prog_instruction *inst, const GLfloat texcoord[4], GLfloat lodBias, @@ -630,7 +630,7 @@ store_vector4ui(const struct prog_instruction *inst, * \return GL_TRUE if program completed or GL_FALSE if program executed KIL. */ GLboolean -_mesa_execute_program(GLcontext * ctx, +_mesa_execute_program(struct gl_context * ctx, const struct gl_program *program, struct gl_program_machine *machine) { diff --git a/src/mesa/program/prog_execute.h b/src/mesa/program/prog_execute.h index f59b65176ff..cefd468c36b 100644 --- a/src/mesa/program/prog_execute.h +++ b/src/mesa/program/prog_execute.h @@ -29,10 +29,10 @@ #include "main/mtypes.h" -typedef void (*FetchTexelLodFunc)(GLcontext *ctx, const GLfloat texcoord[4], +typedef void (*FetchTexelLodFunc)(struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lambda, GLuint unit, GLfloat color[4]); -typedef void (*FetchTexelDerivFunc)(GLcontext *ctx, const GLfloat texcoord[4], +typedef void (*FetchTexelDerivFunc)(struct gl_context *ctx, const GLfloat texcoord[4], const GLfloat texdx[4], const GLfloat texdy[4], GLfloat lodBias, @@ -74,11 +74,11 @@ struct gl_program_machine extern void -_mesa_get_program_register(GLcontext *ctx, gl_register_file file, +_mesa_get_program_register(struct gl_context *ctx, gl_register_file file, GLuint index, GLfloat val[4]); extern GLboolean -_mesa_execute_program(GLcontext *ctx, +_mesa_execute_program(struct gl_context *ctx, const struct gl_program *program, struct gl_program_machine *machine); diff --git a/src/mesa/program/prog_optimize.c b/src/mesa/program/prog_optimize.c index 0dc779073db..96971f2eda4 100644 --- a/src/mesa/program/prog_optimize.c +++ b/src/mesa/program/prog_optimize.c @@ -1216,7 +1216,7 @@ _mesa_reallocate_registers(struct gl_program *prog) #if 0 static void -print_it(GLcontext *ctx, struct gl_program *program, const char *txt) { +print_it(struct gl_context *ctx, struct gl_program *program, const char *txt) { fprintf(stderr, "%s (%u inst):\n", txt, program->NumInstructions); _mesa_print_program(program); _mesa_print_program_parameters(ctx, program); @@ -1230,7 +1230,7 @@ print_it(GLcontext *ctx, struct gl_program *program, const char *txt) { * instructions, temp regs, etc. */ void -_mesa_optimize_program(GLcontext *ctx, struct gl_program *program) +_mesa_optimize_program(struct gl_context *ctx, struct gl_program *program) { GLboolean any_change; diff --git a/src/mesa/program/prog_optimize.h b/src/mesa/program/prog_optimize.h index 06cd9cb2c20..00f1080449b 100644 --- a/src/mesa/program/prog_optimize.h +++ b/src/mesa/program/prog_optimize.h @@ -41,6 +41,6 @@ _mesa_find_temp_intervals(const struct prog_instruction *instructions, GLint intEnd[MAX_PROGRAM_TEMPS]); extern void -_mesa_optimize_program(GLcontext *ctx, struct gl_program *program); +_mesa_optimize_program(struct gl_context *ctx, struct gl_program *program); #endif diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c index 00aa6de963b..79c01020eb2 100644 --- a/src/mesa/program/prog_print.c +++ b/src/mesa/program/prog_print.c @@ -909,7 +909,7 @@ binary(GLbitfield64 val) */ static void _mesa_fprint_program_parameters(FILE *f, - GLcontext *ctx, + struct gl_context *ctx, const struct gl_program *prog) { GLuint i; @@ -951,7 +951,7 @@ _mesa_fprint_program_parameters(FILE *f, * Print all of a program's parameters/fields to stderr. */ void -_mesa_print_program_parameters(GLcontext *ctx, const struct gl_program *prog) +_mesa_print_program_parameters(struct gl_context *ctx, const struct gl_program *prog) { _mesa_fprint_program_parameters(stderr, ctx, prog); } diff --git a/src/mesa/program/prog_print.h b/src/mesa/program/prog_print.h index 78b90aeb4d6..f080b3fd2e6 100644 --- a/src/mesa/program/prog_print.h +++ b/src/mesa/program/prog_print.h @@ -100,7 +100,7 @@ _mesa_fprint_program_opt(FILE *f, GLboolean lineNumbers); extern void -_mesa_print_program_parameters(GLcontext *ctx, const struct gl_program *prog); +_mesa_print_program_parameters(struct gl_context *ctx, const struct gl_program *prog); extern void _mesa_print_parameter_list(const struct gl_program_parameter_list *list); diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index c6fb42b9a69..baac29ff0dd 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -46,7 +46,7 @@ * The program parser will produce the state[] values. */ static void -_mesa_fetch_state(GLcontext *ctx, const gl_state_index state[], +_mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], GLfloat *value) { switch (state[0]) { @@ -1049,7 +1049,7 @@ _mesa_program_state_string(const gl_state_index state[STATE_LENGTH]) * This would be called at glBegin time when using a fragment program. */ void -_mesa_load_state_parameters(GLcontext *ctx, +_mesa_load_state_parameters(struct gl_context *ctx, struct gl_program_parameter_list *paramList) { GLuint i; @@ -1103,7 +1103,7 @@ load_transpose_matrix(GLfloat registers[][4], GLuint pos, * glBegin/glEnd, not per-vertex. */ void -_mesa_load_tracked_matrices(GLcontext *ctx) +_mesa_load_tracked_matrices(struct gl_context *ctx) { GLuint i; diff --git a/src/mesa/program/prog_statevars.h b/src/mesa/program/prog_statevars.h index cfce226fb49..6e5be53630c 100644 --- a/src/mesa/program/prog_statevars.h +++ b/src/mesa/program/prog_statevars.h @@ -125,7 +125,7 @@ typedef enum gl_state_index_ { extern void -_mesa_load_state_parameters(GLcontext *ctx, +_mesa_load_state_parameters(struct gl_context *ctx, struct gl_program_parameter_list *paramList); @@ -138,7 +138,7 @@ _mesa_program_state_string(const gl_state_index state[STATE_LENGTH]); extern void -_mesa_load_tracked_matrices(GLcontext *ctx); +_mesa_load_tracked_matrices(struct gl_context *ctx); #endif /* PROG_STATEVARS_H */ diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c index 06b9539bda6..cdcf4ec2652 100644 --- a/src/mesa/program/program.c +++ b/src/mesa/program/program.c @@ -49,7 +49,7 @@ struct gl_program _mesa_DummyProgram; * Init context's vertex/fragment program state */ void -_mesa_init_program(GLcontext *ctx) +_mesa_init_program(struct gl_context *ctx) { GLuint i; @@ -128,7 +128,7 @@ _mesa_init_program(GLcontext *ctx) * Free a context's vertex/fragment program state */ void -_mesa_free_program_data(GLcontext *ctx) +_mesa_free_program_data(struct gl_context *ctx) { #if FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program _mesa_reference_vertprog(ctx, &ctx->VertexProgram.Current, NULL); @@ -161,7 +161,7 @@ _mesa_free_program_data(GLcontext *ctx) * shared state. */ void -_mesa_update_default_objects_program(GLcontext *ctx) +_mesa_update_default_objects_program(struct gl_context *ctx) { #if FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program _mesa_reference_vertprog(ctx, &ctx->VertexProgram.Current, @@ -203,7 +203,7 @@ _mesa_update_default_objects_program(GLcontext *ctx) * This is generally called from within the parsers. */ void -_mesa_set_program_error(GLcontext *ctx, GLint pos, const char *string) +_mesa_set_program_error(struct gl_context *ctx, GLint pos, const char *string) { ctx->Program.ErrorPos = pos; free((void *) ctx->Program.ErrorString); @@ -260,7 +260,7 @@ _mesa_find_line_column(const GLubyte *string, const GLubyte *pos, * Initialize a new vertex/fragment program object. */ static struct gl_program * -_mesa_init_program_struct( GLcontext *ctx, struct gl_program *prog, +_mesa_init_program_struct( struct gl_context *ctx, struct gl_program *prog, GLenum target, GLuint id) { (void) ctx; @@ -286,7 +286,7 @@ _mesa_init_program_struct( GLcontext *ctx, struct gl_program *prog, * Initialize a new fragment program object. */ struct gl_program * -_mesa_init_fragment_program( GLcontext *ctx, struct gl_fragment_program *prog, +_mesa_init_fragment_program( struct gl_context *ctx, struct gl_fragment_program *prog, GLenum target, GLuint id) { if (prog) @@ -300,7 +300,7 @@ _mesa_init_fragment_program( GLcontext *ctx, struct gl_fragment_program *prog, * Initialize a new vertex program object. */ struct gl_program * -_mesa_init_vertex_program( GLcontext *ctx, struct gl_vertex_program *prog, +_mesa_init_vertex_program( struct gl_context *ctx, struct gl_vertex_program *prog, GLenum target, GLuint id) { if (prog) @@ -314,7 +314,7 @@ _mesa_init_vertex_program( GLcontext *ctx, struct gl_vertex_program *prog, * Initialize a new geometry program object. */ struct gl_program * -_mesa_init_geometry_program( GLcontext *ctx, struct gl_geometry_program *prog, +_mesa_init_geometry_program( struct gl_context *ctx, struct gl_geometry_program *prog, GLenum target, GLuint id) { if (prog) @@ -337,7 +337,7 @@ _mesa_init_geometry_program( GLcontext *ctx, struct gl_geometry_program *prog, * \return pointer to new program object */ struct gl_program * -_mesa_new_program(GLcontext *ctx, GLenum target, GLuint id) +_mesa_new_program(struct gl_context *ctx, GLenum target, GLuint id) { struct gl_program *prog; switch (target) { @@ -372,7 +372,7 @@ _mesa_new_program(GLcontext *ctx, GLenum target, GLuint id) * by a device driver function. */ void -_mesa_delete_program(GLcontext *ctx, struct gl_program *prog) +_mesa_delete_program(struct gl_context *ctx, struct gl_program *prog) { (void) ctx; ASSERT(prog); @@ -406,7 +406,7 @@ _mesa_delete_program(GLcontext *ctx, struct gl_program *prog) * casts elsewhere. */ struct gl_program * -_mesa_lookup_program(GLcontext *ctx, GLuint id) +_mesa_lookup_program(struct gl_context *ctx, GLuint id) { if (id) return (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id); @@ -419,7 +419,7 @@ _mesa_lookup_program(GLcontext *ctx, GLuint id) * Reference counting for vertex/fragment programs */ void -_mesa_reference_program(GLcontext *ctx, +_mesa_reference_program(struct gl_context *ctx, struct gl_program **ptr, struct gl_program *prog) { @@ -486,7 +486,7 @@ _mesa_reference_program(GLcontext *ctx, * made by a device driver. */ struct gl_program * -_mesa_clone_program(GLcontext *ctx, const struct gl_program *prog) +_mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog) { struct gl_program *clone; @@ -729,7 +729,7 @@ adjust_param_indexes(struct prog_instruction *inst, GLuint numInst, * the first program go to the inputs of the second program. */ struct gl_program * -_mesa_combine_programs(GLcontext *ctx, +_mesa_combine_programs(struct gl_context *ctx, const struct gl_program *progA, const struct gl_program *progB) { @@ -923,7 +923,7 @@ _mesa_find_free_register(const GLboolean used[], * behaviour. */ void -_mesa_postprocess_program(GLcontext *ctx, struct gl_program *prog) +_mesa_postprocess_program(struct gl_context *ctx, struct gl_program *prog) { static const GLfloat white[4] = { 0.5, 0.5, 0.5, 0.5 }; GLuint i; diff --git a/src/mesa/program/program.h b/src/mesa/program/program.h index 03b1066f326..70cc2c3aaed 100644 --- a/src/mesa/program/program.h +++ b/src/mesa/program/program.h @@ -48,16 +48,16 @@ extern struct gl_program _mesa_DummyProgram; extern void -_mesa_init_program(GLcontext *ctx); +_mesa_init_program(struct gl_context *ctx); extern void -_mesa_free_program_data(GLcontext *ctx); +_mesa_free_program_data(struct gl_context *ctx); extern void -_mesa_update_default_objects_program(GLcontext *ctx); +_mesa_update_default_objects_program(struct gl_context *ctx); extern void -_mesa_set_program_error(GLcontext *ctx, GLint pos, const char *string); +_mesa_set_program_error(struct gl_context *ctx, GLint pos, const char *string); extern const GLubyte * _mesa_find_line_column(const GLubyte *string, const GLubyte *pos, @@ -65,36 +65,36 @@ _mesa_find_line_column(const GLubyte *string, const GLubyte *pos, extern struct gl_program * -_mesa_init_vertex_program(GLcontext *ctx, +_mesa_init_vertex_program(struct gl_context *ctx, struct gl_vertex_program *prog, GLenum target, GLuint id); extern struct gl_program * -_mesa_init_fragment_program(GLcontext *ctx, +_mesa_init_fragment_program(struct gl_context *ctx, struct gl_fragment_program *prog, GLenum target, GLuint id); extern struct gl_program * -_mesa_init_geometry_program(GLcontext *ctx, +_mesa_init_geometry_program(struct gl_context *ctx, struct gl_geometry_program *prog, GLenum target, GLuint id); extern struct gl_program * -_mesa_new_program(GLcontext *ctx, GLenum target, GLuint id); +_mesa_new_program(struct gl_context *ctx, GLenum target, GLuint id); extern void -_mesa_delete_program(GLcontext *ctx, struct gl_program *prog); +_mesa_delete_program(struct gl_context *ctx, struct gl_program *prog); extern struct gl_program * -_mesa_lookup_program(GLcontext *ctx, GLuint id); +_mesa_lookup_program(struct gl_context *ctx, GLuint id); extern void -_mesa_reference_program(GLcontext *ctx, +_mesa_reference_program(struct gl_context *ctx, struct gl_program **ptr, struct gl_program *prog); static INLINE void -_mesa_reference_vertprog(GLcontext *ctx, +_mesa_reference_vertprog(struct gl_context *ctx, struct gl_vertex_program **ptr, struct gl_vertex_program *prog) { @@ -103,7 +103,7 @@ _mesa_reference_vertprog(GLcontext *ctx, } static INLINE void -_mesa_reference_fragprog(GLcontext *ctx, +_mesa_reference_fragprog(struct gl_context *ctx, struct gl_fragment_program **ptr, struct gl_fragment_program *prog) { @@ -112,7 +112,7 @@ _mesa_reference_fragprog(GLcontext *ctx, } static INLINE void -_mesa_reference_geomprog(GLcontext *ctx, +_mesa_reference_geomprog(struct gl_context *ctx, struct gl_geometry_program **ptr, struct gl_geometry_program *prog) { @@ -121,24 +121,24 @@ _mesa_reference_geomprog(GLcontext *ctx, } extern struct gl_program * -_mesa_clone_program(GLcontext *ctx, const struct gl_program *prog); +_mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog); static INLINE struct gl_vertex_program * -_mesa_clone_vertex_program(GLcontext *ctx, +_mesa_clone_vertex_program(struct gl_context *ctx, const struct gl_vertex_program *prog) { return (struct gl_vertex_program *) _mesa_clone_program(ctx, &prog->Base); } static INLINE struct gl_geometry_program * -_mesa_clone_geometry_program(GLcontext *ctx, +_mesa_clone_geometry_program(struct gl_context *ctx, const struct gl_geometry_program *prog) { return (struct gl_geometry_program *) _mesa_clone_program(ctx, &prog->Base); } static INLINE struct gl_fragment_program * -_mesa_clone_fragment_program(GLcontext *ctx, +_mesa_clone_fragment_program(struct gl_context *ctx, const struct gl_fragment_program *prog) { return (struct gl_fragment_program *) _mesa_clone_program(ctx, &prog->Base); @@ -152,7 +152,7 @@ extern GLboolean _mesa_delete_instructions(struct gl_program *prog, GLuint start, GLuint count); extern struct gl_program * -_mesa_combine_programs(GLcontext *ctx, +_mesa_combine_programs(struct gl_context *ctx, const struct gl_program *progA, const struct gl_program *progB); @@ -166,7 +166,7 @@ _mesa_find_free_register(const GLboolean used[], GLuint maxRegs, GLuint firstReg); extern void -_mesa_postprocess_program(GLcontext *ctx, struct gl_program *prog); +_mesa_postprocess_program(struct gl_context *ctx, struct gl_program *prog); /* keep these in the same order as TGSI_PROCESSOR_* */ diff --git a/src/mesa/program/program_parse.tab.c b/src/mesa/program/program_parse.tab.c index 08ead30defe..baef311d0c1 100644 --- a/src/mesa/program/program_parse.tab.c +++ b/src/mesa/program/program_parse.tab.c @@ -5604,7 +5604,7 @@ yyerror(YYLTYPE *locp, struct asm_parser_state *state, const char *s) GLboolean -_mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, +_mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *str, GLsizei len, struct asm_parser_state *state) { struct asm_instruction *inst; diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y index cf621ae4244..784ea28c17a 100644 --- a/src/mesa/program/program_parse.y +++ b/src/mesa/program/program_parse.y @@ -2643,7 +2643,7 @@ yyerror(YYLTYPE *locp, struct asm_parser_state *state, const char *s) GLboolean -_mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, +_mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *str, GLsizei len, struct asm_parser_state *state) { struct asm_instruction *inst; diff --git a/src/mesa/program/program_parser.h b/src/mesa/program/program_parser.h index be952d4b9c8..d689eef7958 100644 --- a/src/mesa/program/program_parser.h +++ b/src/mesa/program/program_parser.h @@ -24,10 +24,7 @@ #include "main/config.h" -#ifndef MTYPES_H -struct __GLcontextRec; -typedef struct __GLcontextRec GLcontext; -#endif +struct gl_context; enum asm_type { at_none, @@ -131,7 +128,7 @@ struct asm_instruction { struct asm_parser_state { - GLcontext *ctx; + struct gl_context *ctx; struct gl_program *prog; /** @@ -237,7 +234,7 @@ typedef struct YYLTYPE { #define YYLTYPE_IS_TRIVIAL 1 -extern GLboolean _mesa_parse_arb_program(GLcontext *ctx, GLenum target, +extern GLboolean _mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *str, GLsizei len, struct asm_parser_state *state); diff --git a/src/mesa/program/programopt.c b/src/mesa/program/programopt.c index fb2ebe6338f..f92881f8337 100644 --- a/src/mesa/program/programopt.c +++ b/src/mesa/program/programopt.c @@ -46,7 +46,7 @@ * May be used to implement the position_invariant option. */ static void -_mesa_insert_mvp_dp4_code(GLcontext *ctx, struct gl_vertex_program *vprog) +_mesa_insert_mvp_dp4_code(struct gl_context *ctx, struct gl_vertex_program *vprog) { struct prog_instruction *newInst; const GLuint origLen = vprog->Base.NumInstructions; @@ -114,7 +114,7 @@ _mesa_insert_mvp_dp4_code(GLcontext *ctx, struct gl_vertex_program *vprog) static void -_mesa_insert_mvp_mad_code(GLcontext *ctx, struct gl_vertex_program *vprog) +_mesa_insert_mvp_mad_code(struct gl_context *ctx, struct gl_vertex_program *vprog) { struct prog_instruction *newInst; const GLuint origLen = vprog->Base.NumInstructions; @@ -216,7 +216,7 @@ _mesa_insert_mvp_mad_code(GLcontext *ctx, struct gl_vertex_program *vprog) void -_mesa_insert_mvp_code(GLcontext *ctx, struct gl_vertex_program *vprog) +_mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog) { if (ctx->mvp_with_dp4) _mesa_insert_mvp_dp4_code( ctx, vprog ); @@ -238,7 +238,7 @@ _mesa_insert_mvp_code(GLcontext *ctx, struct gl_vertex_program *vprog) * to vertex programs too. */ void -_mesa_append_fog_code(GLcontext *ctx, struct gl_fragment_program *fprog) +_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) { static const gl_state_index fogPStateOpt[STATE_LENGTH] = { STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0 }; @@ -585,7 +585,7 @@ _mesa_remove_output_reads(struct gl_program *prog, gl_register_file type) * This is for debug/test purposes. */ void -_mesa_nop_fragment_program(GLcontext *ctx, struct gl_fragment_program *prog) +_mesa_nop_fragment_program(struct gl_context *ctx, struct gl_fragment_program *prog) { struct prog_instruction *inst; GLuint inputAttr; @@ -626,7 +626,7 @@ _mesa_nop_fragment_program(GLcontext *ctx, struct gl_fragment_program *prog) * transforms vertex position and emits color. */ void -_mesa_nop_vertex_program(GLcontext *ctx, struct gl_vertex_program *prog) +_mesa_nop_vertex_program(struct gl_context *ctx, struct gl_vertex_program *prog) { struct prog_instruction *inst; GLuint inputAttr; diff --git a/src/mesa/program/programopt.h b/src/mesa/program/programopt.h index 4af6357f976..ef6f1bd0794 100644 --- a/src/mesa/program/programopt.h +++ b/src/mesa/program/programopt.h @@ -29,10 +29,10 @@ #include "main/mtypes.h" extern void -_mesa_insert_mvp_code(GLcontext *ctx, struct gl_vertex_program *vprog); +_mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog); extern void -_mesa_append_fog_code(GLcontext *ctx, struct gl_fragment_program *fprog); +_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog); extern void _mesa_count_texture_indirections(struct gl_program *prog); @@ -44,10 +44,10 @@ extern void _mesa_remove_output_reads(struct gl_program *prog, gl_register_file type); extern void -_mesa_nop_fragment_program(GLcontext *ctx, struct gl_fragment_program *prog); +_mesa_nop_fragment_program(struct gl_context *ctx, struct gl_fragment_program *prog); extern void -_mesa_nop_vertex_program(GLcontext *ctx, struct gl_vertex_program *prog); +_mesa_nop_vertex_program(struct gl_context *ctx, struct gl_vertex_program *prog); #endif /* PROGRAMOPT_H */ diff --git a/src/mesa/state_tracker/st_atom.c b/src/mesa/state_tracker/st_atom.c index e389e57346b..e29ab46ef99 100644 --- a/src/mesa/state_tracker/st_atom.c +++ b/src/mesa/state_tracker/st_atom.c @@ -109,7 +109,7 @@ static void xor_states( struct st_state_flags *result, */ static void check_program_state( struct st_context *st ) { - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; if (ctx->VertexProgram._Current != &st->vp->Base) st->dirty.st |= ST_NEW_VERTEX_PROGRAM; diff --git a/src/mesa/state_tracker/st_atom_blend.c b/src/mesa/state_tracker/st_atom_blend.c index 21403605805..a8ec4adce77 100644 --- a/src/mesa/state_tracker/st_atom_blend.c +++ b/src/mesa/state_tracker/st_atom_blend.c @@ -156,7 +156,7 @@ translate_logicop(GLenum logicop) * Figure out if colormasks are different per rt. */ static GLboolean -colormask_per_rt(GLcontext *ctx) +colormask_per_rt(struct gl_context *ctx) { /* a bit suboptimal have to compare lots of values */ unsigned i; @@ -172,7 +172,7 @@ colormask_per_rt(GLcontext *ctx) * Figure out if blend enables are different per rt. */ static GLboolean -blend_per_rt(GLcontext *ctx) +blend_per_rt(struct gl_context *ctx) { if (ctx->Color.BlendEnabled && (ctx->Color.BlendEnabled != ((1 << ctx->Const.MaxDrawBuffers) - 1))) { diff --git a/src/mesa/state_tracker/st_atom_depth.c b/src/mesa/state_tracker/st_atom_depth.c index 1616e945fea..aaee432a216 100644 --- a/src/mesa/state_tracker/st_atom_depth.c +++ b/src/mesa/state_tracker/st_atom_depth.c @@ -97,7 +97,7 @@ update_depth_stencil_alpha(struct st_context *st) { struct pipe_depth_stencil_alpha_state *dsa = &st->state.depth_stencil; struct pipe_stencil_ref sr; - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; memset(dsa, 0, sizeof(*dsa)); memset(&sr, 0, sizeof(sr)); diff --git a/src/mesa/state_tracker/st_atom_pixeltransfer.c b/src/mesa/state_tracker/st_atom_pixeltransfer.c index 081b6b3e233..6be03376d01 100644 --- a/src/mesa/state_tracker/st_atom_pixeltransfer.c +++ b/src/mesa/state_tracker/st_atom_pixeltransfer.c @@ -69,7 +69,7 @@ struct state_key }; static void -make_state_key(GLcontext *ctx, struct state_key *key) +make_state_key(struct gl_context *ctx, struct state_key *key) { memset(key, 0, sizeof(*key)); @@ -85,7 +85,7 @@ make_state_key(GLcontext *ctx, struct state_key *key) static struct pipe_resource * -create_color_map_texture(GLcontext *ctx) +create_color_map_texture(struct gl_context *ctx) { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; @@ -108,7 +108,7 @@ create_color_map_texture(GLcontext *ctx) * Update the pixelmap texture with the contents of the R/G/B/A pixel maps. */ static void -load_color_map_texture(GLcontext *ctx, struct pipe_resource *pt) +load_color_map_texture(struct gl_context *ctx, struct pipe_resource *pt) { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; @@ -157,7 +157,7 @@ load_color_map_texture(GLcontext *ctx, struct pipe_resource *pt) * Returns a fragment program which implements the current pixel transfer ops. */ static struct gl_fragment_program * -get_pixel_transfer_program(GLcontext *ctx, const struct state_key *key) +get_pixel_transfer_program(struct gl_context *ctx, const struct state_key *key) { struct st_context *st = st_context(ctx); struct prog_instruction inst[MAX_INST]; @@ -320,7 +320,7 @@ get_pixel_transfer_program(GLcontext *ctx, const struct state_key *key) static void update_pixel_transfer(struct st_context *st) { - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; struct state_key key; struct gl_fragment_program *fp; diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c index 0fe333ae8aa..451299cef0c 100644 --- a/src/mesa/state_tracker/st_atom_rasterizer.c +++ b/src/mesa/state_tracker/st_atom_rasterizer.c @@ -57,7 +57,7 @@ static GLuint translate_fill( GLenum mode ) static void update_raster_state( struct st_context *st ) { - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; struct pipe_rasterizer_state *raster = &st->state.rasterizer; const struct gl_vertex_program *vertProg = ctx->VertexProgram._Current; const struct gl_fragment_program *fragProg = ctx->FragmentProgram._Current; diff --git a/src/mesa/state_tracker/st_atom_viewport.c b/src/mesa/state_tracker/st_atom_viewport.c index 0b6c34ca2cb..d10f1840df6 100644 --- a/src/mesa/state_tracker/st_atom_viewport.c +++ b/src/mesa/state_tracker/st_atom_viewport.c @@ -41,7 +41,7 @@ static void update_viewport( struct st_context *st ) { - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; GLfloat yScale, yBias; /* _NEW_BUFFERS diff --git a/src/mesa/state_tracker/st_cb_accum.c b/src/mesa/state_tracker/st_cb_accum.c index 425e7987d33..6c5caf42e35 100644 --- a/src/mesa/state_tracker/st_cb_accum.c +++ b/src/mesa/state_tracker/st_cb_accum.c @@ -55,7 +55,7 @@ void -st_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb) +st_clear_accum_buffer(struct gl_context *ctx, struct gl_renderbuffer *rb) { struct st_renderbuffer *acc_strb = st_renderbuffer(rb); const GLint xpos = ctx->DrawBuffer->_Xmin; @@ -96,7 +96,7 @@ st_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb) /** For ADD/MULT */ static void -accum_mad(GLcontext *ctx, GLfloat scale, GLfloat bias, +accum_mad(struct gl_context *ctx, GLfloat scale, GLfloat bias, GLint xpos, GLint ypos, GLint width, GLint height, struct st_renderbuffer *acc_strb) { @@ -219,7 +219,7 @@ accum_load(struct st_context *st, GLfloat value, static void -accum_return(GLcontext *ctx, GLfloat value, +accum_return(struct gl_context *ctx, GLfloat value, GLint xpos, GLint ypos, GLint width, GLint height, struct st_renderbuffer *acc_strb, struct st_renderbuffer *color_strb) @@ -286,7 +286,7 @@ accum_return(GLcontext *ctx, GLfloat value, static void -st_Accum(GLcontext *ctx, GLenum op, GLfloat value) +st_Accum(struct gl_context *ctx, GLenum op, GLfloat value) { struct st_context *st = st_context(ctx); struct st_renderbuffer *acc_strb diff --git a/src/mesa/state_tracker/st_cb_accum.h b/src/mesa/state_tracker/st_cb_accum.h index 06425dc8a35..b8c9c350031 100644 --- a/src/mesa/state_tracker/st_cb_accum.h +++ b/src/mesa/state_tracker/st_cb_accum.h @@ -35,7 +35,7 @@ #if FEATURE_accum extern void -st_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb); +st_clear_accum_buffer(struct gl_context *ctx, struct gl_renderbuffer *rb); extern void st_init_accum_functions(struct dd_function_table *functions); @@ -44,7 +44,7 @@ extern void st_init_accum_functions(struct dd_function_table *functions); #include "main/compiler.h" static INLINE void -st_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb) +st_clear_accum_buffer(struct gl_context *ctx, struct gl_renderbuffer *rb) { ASSERT_NO_FEATURE(); } diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c index 8da5cbb5e68..3c0ee6c2883 100644 --- a/src/mesa/state_tracker/st_cb_bitmap.c +++ b/src/mesa/state_tracker/st_cb_bitmap.c @@ -113,7 +113,7 @@ struct bitmap_cache * This program will be combined with the user's fragment program. */ static struct st_fragment_program * -make_bitmap_fragment_program(GLcontext *ctx, GLuint samplerIndex) +make_bitmap_fragment_program(struct gl_context *ctx, GLuint samplerIndex) { struct st_context *st = st_context(ctx); struct st_fragment_program *stfp; @@ -187,7 +187,7 @@ find_free_bit(uint bitfield) * Combine basic bitmap fragment program with the user-defined program. */ static struct st_fragment_program * -combined_bitmap_fragment_program(GLcontext *ctx) +combined_bitmap_fragment_program(struct gl_context *ctx) { struct st_context *st = st_context(ctx); struct st_fragment_program *stfp = st->fp; @@ -256,7 +256,7 @@ unpack_bitmap(struct st_context *st, * Create a texture which represents a bitmap image. */ static struct pipe_resource * -make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height, +make_bitmap_texture(struct gl_context *ctx, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap) { @@ -403,7 +403,7 @@ setup_bitmap_vertex_data(struct st_context *st, bool normalized, * Render a glBitmap by drawing a textured quad */ static void -draw_bitmap_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z, +draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, GLsizei width, GLsizei height, struct pipe_sampler_view *sv, const GLfloat *color) @@ -737,7 +737,7 @@ accum_bitmap(struct st_context *st, * Called via ctx->Driver.Bitmap() */ static void -st_Bitmap(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, +st_Bitmap(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ) { struct st_context *st = st_context(ctx); diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c index 536748402f4..af41835326a 100644 --- a/src/mesa/state_tracker/st_cb_blit.c +++ b/src/mesa/state_tracker/st_cb_blit.c @@ -61,7 +61,7 @@ st_destroy_blit(struct st_context *st) #if FEATURE_EXT_framebuffer_blit static void -st_BlitFramebuffer(GLcontext *ctx, +st_BlitFramebuffer(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c index 7991a93a1e6..27540c36ce7 100644 --- a/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -51,7 +51,7 @@ * internal structure where somehow shared. */ static struct gl_buffer_object * -st_bufferobj_alloc(GLcontext *ctx, GLuint name, GLenum target) +st_bufferobj_alloc(struct gl_context *ctx, GLuint name, GLenum target) { struct st_buffer_object *st_obj = ST_CALLOC_STRUCT(st_buffer_object); @@ -70,7 +70,7 @@ st_bufferobj_alloc(GLcontext *ctx, GLuint name, GLenum target) * Called via glDeleteBuffersARB(). */ static void -st_bufferobj_free(GLcontext *ctx, struct gl_buffer_object *obj) +st_bufferobj_free(struct gl_context *ctx, struct gl_buffer_object *obj) { struct st_buffer_object *st_obj = st_buffer_object(obj); @@ -92,7 +92,7 @@ st_bufferobj_free(GLcontext *ctx, struct gl_buffer_object *obj) * Called via glBufferSubDataARB(). */ static void -st_bufferobj_subdata(GLcontext *ctx, +st_bufferobj_subdata(struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, @@ -132,7 +132,7 @@ st_bufferobj_subdata(GLcontext *ctx, * Called via glGetBufferSubDataARB(). */ static void -st_bufferobj_get_subdata(GLcontext *ctx, +st_bufferobj_get_subdata(struct gl_context *ctx, GLenum target, GLintptrARB offset, GLsizeiptrARB size, @@ -161,7 +161,7 @@ st_bufferobj_get_subdata(GLcontext *ctx, * \return GL_TRUE for success, GL_FALSE if out of memory */ static GLboolean -st_bufferobj_data(GLcontext *ctx, +st_bufferobj_data(struct gl_context *ctx, GLenum target, GLsizeiptrARB size, const GLvoid * data, @@ -214,7 +214,7 @@ st_bufferobj_data(GLcontext *ctx, * Called via glMapBufferARB(). */ static void * -st_bufferobj_map(GLcontext *ctx, GLenum target, GLenum access, +st_bufferobj_map(struct gl_context *ctx, GLenum target, GLenum access, struct gl_buffer_object *obj) { struct st_buffer_object *st_obj = st_buffer_object(obj); @@ -257,7 +257,7 @@ st_bufferobj_zero_length_range = 0; * Called via glMapBufferRange(). */ static void * -st_bufferobj_map_range(GLcontext *ctx, GLenum target, +st_bufferobj_map_range(struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, struct gl_buffer_object *obj) { @@ -317,7 +317,7 @@ st_bufferobj_map_range(GLcontext *ctx, GLenum target, static void -st_bufferobj_flush_mapped_range(GLcontext *ctx, GLenum target, +st_bufferobj_flush_mapped_range(struct gl_context *ctx, GLenum target, GLintptr offset, GLsizeiptr length, struct gl_buffer_object *obj) { @@ -342,7 +342,7 @@ st_bufferobj_flush_mapped_range(GLcontext *ctx, GLenum target, * Called via glUnmapBufferARB(). */ static GLboolean -st_bufferobj_unmap(GLcontext *ctx, GLenum target, struct gl_buffer_object *obj) +st_bufferobj_unmap(struct gl_context *ctx, GLenum target, struct gl_buffer_object *obj) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_buffer_object *st_obj = st_buffer_object(obj); @@ -362,7 +362,7 @@ st_bufferobj_unmap(GLcontext *ctx, GLenum target, struct gl_buffer_object *obj) * Called via glCopyBufferSubData(). */ static void -st_copy_buffer_subdata(GLcontext *ctx, +st_copy_buffer_subdata(struct gl_context *ctx, struct gl_buffer_object *src, struct gl_buffer_object *dst, GLintptr readOffset, GLintptr writeOffset, diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 246ab2e9579..bd1dd78b23c 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -191,7 +191,7 @@ draw_quad(struct st_context *st, * ctx->DrawBuffer->_X/Ymin/max fields. */ static void -clear_with_quad(GLcontext *ctx, +clear_with_quad(struct gl_context *ctx, GLboolean color, GLboolean depth, GLboolean stencil) { struct st_context *st = st_context(ctx); @@ -316,7 +316,7 @@ clear_with_quad(GLcontext *ctx, * Determine if we need to clear the depth buffer by drawing a quad. */ static INLINE GLboolean -check_clear_color_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) +check_clear_color_with_quad(struct gl_context *ctx, struct gl_renderbuffer *rb) { if (ctx->Scissor.Enabled && (ctx->Scissor.X != 0 || @@ -340,7 +340,7 @@ check_clear_color_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) * drawing a quad. */ static INLINE GLboolean -check_clear_depth_stencil_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) +check_clear_depth_stencil_with_quad(struct gl_context *ctx, struct gl_renderbuffer *rb) { const GLuint stencilMax = 0xff; GLboolean maskStencil @@ -368,7 +368,7 @@ check_clear_depth_stencil_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) * Determine if we need to clear the depth buffer by drawing a quad. */ static INLINE GLboolean -check_clear_depth_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb, +check_clear_depth_with_quad(struct gl_context *ctx, struct gl_renderbuffer *rb, boolean ds_separate) { const struct st_renderbuffer *strb = st_renderbuffer(rb); @@ -392,7 +392,7 @@ check_clear_depth_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb, * Determine if we need to clear the stencil buffer by drawing a quad. */ static INLINE GLboolean -check_clear_stencil_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb, +check_clear_stencil_with_quad(struct gl_context *ctx, struct gl_renderbuffer *rb, boolean ds_separate) { const struct st_renderbuffer *strb = st_renderbuffer(rb); @@ -447,7 +447,7 @@ st_flush_clear(struct st_context *st) * Called via ctx->Driver.Clear() */ static void -st_Clear(GLcontext *ctx, GLbitfield mask) +st_Clear(struct gl_context *ctx, GLbitfield mask) { static const GLbitfield BUFFER_BITS_DS = (BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL); diff --git a/src/mesa/state_tracker/st_cb_condrender.c b/src/mesa/state_tracker/st_cb_condrender.c index b509d43b7c6..7766ead48b5 100644 --- a/src/mesa/state_tracker/st_cb_condrender.c +++ b/src/mesa/state_tracker/st_cb_condrender.c @@ -47,7 +47,7 @@ * Called via ctx->Driver.BeginConditionalRender() */ static void -st_BeginConditionalRender(GLcontext *ctx, struct gl_query_object *q, +st_BeginConditionalRender(struct gl_context *ctx, struct gl_query_object *q, GLenum mode) { struct st_query_object *stq = st_query_object(q); @@ -80,7 +80,7 @@ st_BeginConditionalRender(GLcontext *ctx, struct gl_query_object *q, * Called via ctx->Driver.BeginConditionalRender() */ static void -st_EndConditionalRender(GLcontext *ctx, struct gl_query_object *q) +st_EndConditionalRender(struct gl_context *ctx, struct gl_query_object *q) { struct pipe_context *pipe = st_context(ctx)->pipe; (void) q; diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 74a95b92bd1..6deb01949f2 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -96,7 +96,7 @@ is_passthrough_program(const struct gl_fragment_program *prog) * \return pointer to Gallium driver fragment shader */ static void * -combined_drawpix_fragment_program(GLcontext *ctx) +combined_drawpix_fragment_program(struct gl_context *ctx) { struct st_context *st = st_context(ctx); struct st_fragment_program *stfp; @@ -170,7 +170,7 @@ combined_drawpix_fragment_program(GLcontext *ctx) static void * make_fragment_shader_z(struct st_context *st, GLboolean write_depth, GLboolean write_stencil) { - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; struct gl_program *p; GLuint ic = 0; @@ -333,7 +333,7 @@ make_texture(struct st_context *st, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels) { - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; struct pipe_context *pipe = st->pipe; gl_format mformat; struct pipe_resource *pt; @@ -418,7 +418,7 @@ make_texture(struct st_context *st, * \param invertTex if true, flip texcoords vertically */ static void -draw_quad(GLcontext *ctx, GLfloat x0, GLfloat y0, GLfloat z, +draw_quad(struct gl_context *ctx, GLfloat x0, GLfloat y0, GLfloat z, GLfloat x1, GLfloat y1, const GLfloat *color, GLboolean invertTex, GLfloat maxXcoord, GLfloat maxYcoord) { @@ -508,7 +508,7 @@ draw_quad(GLcontext *ctx, GLfloat x0, GLfloat y0, GLfloat z, static void -draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z, +draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, GLsizei width, GLsizei height, GLfloat zoomX, GLfloat zoomY, struct pipe_sampler_view **sv, @@ -650,7 +650,7 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z, static void -draw_stencil_pixels(GLcontext *ctx, GLint x, GLint y, +draw_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels) @@ -799,7 +799,7 @@ draw_stencil_pixels(GLcontext *ctx, GLint x, GLint y, * Called via ctx->Driver.DrawPixels() */ static void -st_DrawPixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, +st_DrawPixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels) { @@ -893,7 +893,7 @@ stencil_fallback: static void -copy_stencil_pixels(GLcontext *ctx, GLint srcx, GLint srcy, +copy_stencil_pixels(struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty) { @@ -1000,7 +1000,7 @@ copy_stencil_pixels(GLcontext *ctx, GLint srcx, GLint srcy, static void -st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy, +st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type) { diff --git a/src/mesa/state_tracker/st_cb_drawtex.c b/src/mesa/state_tracker/st_cb_drawtex.c index c99a8d792ed..6cad7d3216e 100644 --- a/src/mesa/state_tracker/st_cb_drawtex.c +++ b/src/mesa/state_tracker/st_cb_drawtex.c @@ -100,7 +100,7 @@ lookup_shader(struct pipe_context *pipe, } static void -st_DrawTex(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, +st_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) { struct st_context *st = ctx->st; diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c index 3145416383b..298f8a5b12b 100644 --- a/src/mesa/state_tracker/st_cb_eglimage.c +++ b/src/mesa/state_tracker/st_cb_eglimage.c @@ -71,7 +71,7 @@ st_pipe_format_to_base_format(enum pipe_format format) } static void -st_egl_image_target_renderbuffer_storage(GLcontext *ctx, +st_egl_image_target_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, GLeglImageOES image_handle) { @@ -98,7 +98,7 @@ st_egl_image_target_renderbuffer_storage(GLcontext *ctx, } static void -st_bind_surface(GLcontext *ctx, GLenum target, +st_bind_surface(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, struct gl_texture_image *texImage, struct pipe_surface *ps) @@ -139,7 +139,7 @@ st_bind_surface(GLcontext *ctx, GLenum target, } static void -st_egl_image_target_texture_2d(GLcontext *ctx, GLenum target, +st_egl_image_target_texture_2d(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, struct gl_texture_image *texImage, GLeglImageOES image_handle) diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index dd4e92e3c0e..9425f07aee6 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -60,7 +60,7 @@ * during window resize. */ static GLboolean -st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb, +st_renderbuffer_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { @@ -164,7 +164,7 @@ st_renderbuffer_delete(struct gl_renderbuffer *rb) * gl_renderbuffer::GetPointer() */ static void * -null_get_pointer(GLcontext * ctx, struct gl_renderbuffer *rb, +null_get_pointer(struct gl_context * ctx, struct gl_renderbuffer *rb, GLint x, GLint y) { /* By returning NULL we force all software rendering to go through @@ -181,7 +181,7 @@ null_get_pointer(GLcontext * ctx, struct gl_renderbuffer *rb, * Called via ctx->Driver.NewFramebuffer() */ static struct gl_framebuffer * -st_new_framebuffer(GLcontext *ctx, GLuint name) +st_new_framebuffer(struct gl_context *ctx, GLuint name) { /* XXX not sure we need to subclass gl_framebuffer for pipe */ return _mesa_new_framebuffer(ctx, name); @@ -192,7 +192,7 @@ st_new_framebuffer(GLcontext *ctx, GLuint name) * Called via ctx->Driver.NewRenderbuffer() */ static struct gl_renderbuffer * -st_new_renderbuffer(GLcontext *ctx, GLuint name) +st_new_renderbuffer(struct gl_context *ctx, GLuint name) { struct st_renderbuffer *strb = ST_CALLOC_STRUCT(st_renderbuffer); if (strb) { @@ -297,7 +297,7 @@ st_new_renderbuffer_fb(enum pipe_format format, int samples, boolean sw) * Called via ctx->Driver.BindFramebufferEXT(). */ static void -st_bind_framebuffer(GLcontext *ctx, GLenum target, +st_bind_framebuffer(struct gl_context *ctx, GLenum target, struct gl_framebuffer *fb, struct gl_framebuffer *fbread) { @@ -307,7 +307,7 @@ st_bind_framebuffer(GLcontext *ctx, GLenum target, * Called by ctx->Driver.FramebufferRenderbuffer */ static void -st_framebuffer_renderbuffer(GLcontext *ctx, +st_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb) @@ -321,7 +321,7 @@ st_framebuffer_renderbuffer(GLcontext *ctx, * Called by ctx->Driver.RenderTexture */ static void -st_render_texture(GLcontext *ctx, +st_render_texture(struct gl_context *ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att) { @@ -411,7 +411,7 @@ st_render_texture(GLcontext *ctx, * Called via ctx->Driver.FinishRenderTexture. */ static void -st_finish_render_texture(GLcontext *ctx, +st_finish_render_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { struct st_context *st = st_context(ctx); @@ -490,7 +490,7 @@ st_is_depth_stencil_combined(const struct gl_renderbuffer_attachment *depth, * For Gallium we only supports combined Z+stencil, not separate buffers. */ static void -st_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb) +st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) { struct st_context *st = st_context(ctx); struct pipe_screen *screen = st->pipe->screen; @@ -544,7 +544,7 @@ st_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb) * Called via glDrawBuffer. */ static void -st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers) +st_DrawBuffers(struct gl_context *ctx, GLsizei count, const GLenum *buffers) { struct st_context *st = st_context(ctx); struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -565,7 +565,7 @@ st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers) * Called via glReadBuffer. */ static void -st_ReadBuffer(GLcontext *ctx, GLenum buffer) +st_ReadBuffer(struct gl_context *ctx, GLenum buffer) { struct st_context *st = st_context(ctx); struct gl_framebuffer *fb = ctx->ReadBuffer; diff --git a/src/mesa/state_tracker/st_cb_feedback.c b/src/mesa/state_tracker/st_cb_feedback.c index e57730b5ecd..5c01856f033 100644 --- a/src/mesa/state_tracker/st_cb_feedback.c +++ b/src/mesa/state_tracker/st_cb_feedback.c @@ -62,7 +62,7 @@ struct feedback_stage { struct draw_stage stage; /**< Base class */ - GLcontext *ctx; /**< Rendering context */ + struct gl_context *ctx; /**< Rendering context */ GLboolean reset_stipple_counter; }; @@ -79,7 +79,7 @@ feedback_stage( struct draw_stage *stage ) static void -feedback_vertex(GLcontext *ctx, const struct draw_context *draw, +feedback_vertex(struct gl_context *ctx, const struct draw_context *draw, const struct vertex_header *v) { const struct st_context *st = st_context(ctx); @@ -179,7 +179,7 @@ feedback_destroy( struct draw_stage *stage ) * Create GL feedback drawing stage. */ static struct draw_stage * -draw_glfeedback_stage(GLcontext *ctx, struct draw_context *draw) +draw_glfeedback_stage(struct gl_context *ctx, struct draw_context *draw) { struct feedback_stage *fs = ST_CALLOC_STRUCT(feedback_stage); @@ -252,7 +252,7 @@ select_destroy( struct draw_stage *stage ) * Create GL selection mode drawing stage. */ static struct draw_stage * -draw_glselect_stage(GLcontext *ctx, struct draw_context *draw) +draw_glselect_stage(struct gl_context *ctx, struct draw_context *draw) { struct feedback_stage *fs = ST_CALLOC_STRUCT(feedback_stage); @@ -271,7 +271,7 @@ draw_glselect_stage(GLcontext *ctx, struct draw_context *draw) static void -st_RenderMode(GLcontext *ctx, GLenum newMode ) +st_RenderMode(struct gl_context *ctx, GLenum newMode ) { struct st_context *st = st_context(ctx); struct draw_context *draw = st->draw; diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c index 7b247e0a32b..5a2343d3aec 100644 --- a/src/mesa/state_tracker/st_cb_flush.c +++ b/src/mesa/state_tracker/st_cb_flush.c @@ -113,7 +113,7 @@ void st_finish( struct st_context *st ) /** * Called via ctx->Driver.Flush() */ -static void st_glFlush(GLcontext *ctx) +static void st_glFlush(struct gl_context *ctx) { struct st_context *st = st_context(ctx); @@ -133,7 +133,7 @@ static void st_glFlush(GLcontext *ctx) /** * Called via ctx->Driver.Finish() */ -static void st_glFinish(GLcontext *ctx) +static void st_glFinish(struct gl_context *ctx) { struct st_context *st = st_context(ctx); diff --git a/src/mesa/state_tracker/st_cb_program.c b/src/mesa/state_tracker/st_cb_program.c index 6aa7e79af95..4d83fcc6ccb 100644 --- a/src/mesa/state_tracker/st_cb_program.c +++ b/src/mesa/state_tracker/st_cb_program.c @@ -53,7 +53,7 @@ static GLuint SerialNo = 1; * Called via ctx->Driver.BindProgram() to bind an ARB vertex or * fragment program. */ -static void st_bind_program( GLcontext *ctx, +static void st_bind_program( struct gl_context *ctx, GLenum target, struct gl_program *prog ) { @@ -77,7 +77,7 @@ static void st_bind_program( GLcontext *ctx, * Called via ctx->Driver.UseProgram() to bind a linked GLSL program * (vertex shader + fragment shader). */ -static void st_use_program( GLcontext *ctx, struct gl_shader_program *shProg) +static void st_use_program( struct gl_context *ctx, struct gl_shader_program *shProg) { struct st_context *st = st_context(ctx); @@ -92,7 +92,7 @@ static void st_use_program( GLcontext *ctx, struct gl_shader_program *shProg) * Called via ctx->Driver.NewProgram() to allocate a new vertex or * fragment program. */ -static struct gl_program *st_new_program( GLcontext *ctx, +static struct gl_program *st_new_program( struct gl_context *ctx, GLenum target, GLuint id ) { @@ -139,7 +139,7 @@ static struct gl_program *st_new_program( GLcontext *ctx, void -st_delete_program(GLcontext *ctx, struct gl_program *prog) +st_delete_program(struct gl_context *ctx, struct gl_program *prog) { struct st_context *st = st_context(ctx); @@ -195,7 +195,7 @@ st_delete_program(GLcontext *ctx, struct gl_program *prog) } -static GLboolean st_is_program_native( GLcontext *ctx, +static GLboolean st_is_program_native( struct gl_context *ctx, GLenum target, struct gl_program *prog ) { @@ -203,7 +203,7 @@ static GLboolean st_is_program_native( GLcontext *ctx, } -static GLboolean st_program_string_notify( GLcontext *ctx, +static GLboolean st_program_string_notify( struct gl_context *ctx, GLenum target, struct gl_program *prog ) { diff --git a/src/mesa/state_tracker/st_cb_program.h b/src/mesa/state_tracker/st_cb_program.h index 0fd179ef3df..004afb6d812 100644 --- a/src/mesa/state_tracker/st_cb_program.h +++ b/src/mesa/state_tracker/st_cb_program.h @@ -37,7 +37,7 @@ extern void st_init_program_functions(struct dd_function_table *functions); extern void -st_delete_program(GLcontext *ctx, struct gl_program *prog); +st_delete_program(struct gl_context *ctx, struct gl_program *prog); #endif diff --git a/src/mesa/state_tracker/st_cb_queryobj.c b/src/mesa/state_tracker/st_cb_queryobj.c index e423d9d8a51..724464a33ff 100644 --- a/src/mesa/state_tracker/st_cb_queryobj.c +++ b/src/mesa/state_tracker/st_cb_queryobj.c @@ -46,7 +46,7 @@ #if FEATURE_queryobj static struct gl_query_object * -st_NewQueryObject(GLcontext *ctx, GLuint id) +st_NewQueryObject(struct gl_context *ctx, GLuint id) { struct st_query_object *stq = ST_CALLOC_STRUCT(st_query_object); if (stq) { @@ -62,7 +62,7 @@ st_NewQueryObject(GLcontext *ctx, GLuint id) static void -st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q) +st_DeleteQuery(struct gl_context *ctx, struct gl_query_object *q) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_query_object *stq = st_query_object(q); @@ -77,7 +77,7 @@ st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q) static void -st_BeginQuery(GLcontext *ctx, struct gl_query_object *q) +st_BeginQuery(struct gl_context *ctx, struct gl_query_object *q) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_query_object *stq = st_query_object(q); @@ -121,7 +121,7 @@ st_BeginQuery(GLcontext *ctx, struct gl_query_object *q) static void -st_EndQuery(GLcontext *ctx, struct gl_query_object *q) +st_EndQuery(struct gl_context *ctx, struct gl_query_object *q) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_query_object *stq = st_query_object(q); @@ -131,7 +131,7 @@ st_EndQuery(GLcontext *ctx, struct gl_query_object *q) static void -st_WaitQuery(GLcontext *ctx, struct gl_query_object *q) +st_WaitQuery(struct gl_context *ctx, struct gl_query_object *q) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_query_object *stq = st_query_object(q); @@ -153,7 +153,7 @@ st_WaitQuery(GLcontext *ctx, struct gl_query_object *q) static void -st_CheckQuery(GLcontext *ctx, struct gl_query_object *q) +st_CheckQuery(struct gl_context *ctx, struct gl_query_object *q) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_query_object *stq = st_query_object(q); diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c index e5f7b6f91e2..15a4f602d1d 100644 --- a/src/mesa/state_tracker/st_cb_rasterpos.c +++ b/src/mesa/state_tracker/st_cb_rasterpos.c @@ -57,7 +57,7 @@ struct rastpos_stage { struct draw_stage stage; /**< Base class */ - GLcontext *ctx; /**< Rendering context */ + struct gl_context *ctx; /**< Rendering context */ /* vertex attrib info we can setup once and re-use */ struct gl_client_array array[VERT_ATTRIB_MAX]; @@ -110,7 +110,7 @@ rastpos_destroy(struct draw_stage *stage) * else copy the current attrib. */ static void -update_attrib(GLcontext *ctx, const GLuint *outputMapping, +update_attrib(struct gl_context *ctx, const GLuint *outputMapping, const struct vertex_header *vert, GLfloat *dest, GLuint result, GLuint defaultAttrib) @@ -132,7 +132,7 @@ static void rastpos_point(struct draw_stage *stage, struct prim_header *prim) { struct rastpos_stage *rs = rastpos_stage(stage); - GLcontext *ctx = rs->ctx; + struct gl_context *ctx = rs->ctx; struct st_context *st = st_context(ctx); const GLfloat height = (GLfloat) ctx->DrawBuffer->Height; const GLuint *outputMapping = st->vertex_result_to_slot; @@ -177,7 +177,7 @@ rastpos_point(struct draw_stage *stage, struct prim_header *prim) * Create rasterpos "drawing" stage. */ static struct rastpos_stage * -new_draw_rastpos_stage(GLcontext *ctx, struct draw_context *draw) +new_draw_rastpos_stage(struct gl_context *ctx, struct draw_context *draw) { struct rastpos_stage *rs = ST_CALLOC_STRUCT(rastpos_stage); GLuint i; @@ -219,7 +219,7 @@ new_draw_rastpos_stage(GLcontext *ctx, struct draw_context *draw) static void -st_RasterPos(GLcontext *ctx, const GLfloat v[4]) +st_RasterPos(struct gl_context *ctx, const GLfloat v[4]) { struct st_context *st = st_context(ctx); struct draw_context *draw = st->draw; diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c index d9e9a527f63..0aad733e34a 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.c +++ b/src/mesa/state_tracker/st_cb_readpixels.c @@ -55,7 +55,7 @@ * For color/depth we use get_tile(). For stencil, map the stencil buffer. */ void -st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y, +st_read_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, @@ -174,7 +174,7 @@ st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y, * commands. */ struct st_renderbuffer * -st_get_color_read_renderbuffer(GLcontext *ctx) +st_get_color_read_renderbuffer(struct gl_context *ctx) { struct gl_framebuffer *fb = ctx->ReadBuffer; struct st_renderbuffer *strb = @@ -189,7 +189,7 @@ st_get_color_read_renderbuffer(GLcontext *ctx) * \return GL_TRUE for success, GL_FALSE for failure */ static GLboolean -st_fast_readpixels(GLcontext *ctx, struct st_renderbuffer *strb, +st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, @@ -320,7 +320,7 @@ st_fast_readpixels(GLcontext *ctx, struct st_renderbuffer *strb, * Image transfer ops are done in software too. */ static void -st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, +st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *pack, GLvoid *dest) diff --git a/src/mesa/state_tracker/st_cb_readpixels.h b/src/mesa/state_tracker/st_cb_readpixels.h index 9e1f7b4925e..83c9b659e3d 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.h +++ b/src/mesa/state_tracker/st_cb_readpixels.h @@ -34,10 +34,10 @@ struct dd_function_table; extern struct st_renderbuffer * -st_get_color_read_renderbuffer(GLcontext *ctx); +st_get_color_read_renderbuffer(struct gl_context *ctx); extern void -st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y, +st_read_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, diff --git a/src/mesa/state_tracker/st_cb_strings.c b/src/mesa/state_tracker/st_cb_strings.c index 0fcb427f30a..21323798fd0 100644 --- a/src/mesa/state_tracker/st_cb_strings.c +++ b/src/mesa/state_tracker/st_cb_strings.c @@ -42,7 +42,7 @@ #define ST_VERSION_STRING "0.4" static const GLubyte * -st_get_string(GLcontext * ctx, GLenum name) +st_get_string(struct gl_context * ctx, GLenum name) { struct st_context *st = st_context(ctx); struct pipe_screen *screen = st->pipe->screen; diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 9d232d417e4..062dd348659 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -94,7 +94,7 @@ gl_target_to_pipe(GLenum target) /** called via ctx->Driver.NewTextureImage() */ static struct gl_texture_image * -st_NewTextureImage(GLcontext * ctx) +st_NewTextureImage(struct gl_context * ctx) { DBG("%s\n", __FUNCTION__); (void) ctx; @@ -104,7 +104,7 @@ st_NewTextureImage(GLcontext * ctx) /** called via ctx->Driver.NewTextureObject() */ static struct gl_texture_object * -st_NewTextureObject(GLcontext * ctx, GLuint name, GLenum target) +st_NewTextureObject(struct gl_context * ctx, GLuint name, GLenum target) { struct st_texture_object *obj = ST_CALLOC_STRUCT(st_texture_object); @@ -116,7 +116,7 @@ st_NewTextureObject(GLcontext * ctx, GLuint name, GLenum target) /** called via ctx->Driver.DeleteTextureObject() */ static void -st_DeleteTextureObject(GLcontext *ctx, +st_DeleteTextureObject(struct gl_context *ctx, struct gl_texture_object *texObj) { struct st_context *st = st_context(ctx); @@ -140,7 +140,7 @@ st_DeleteTextureObject(GLcontext *ctx, /** called via ctx->Driver.FreeTexImageData() */ static void -st_FreeTextureImageData(GLcontext * ctx, struct gl_texture_image *texImage) +st_FreeTextureImageData(struct gl_context * ctx, struct gl_texture_image *texImage) { struct st_texture_image *stImage = st_texture_image(texImage); @@ -411,7 +411,7 @@ strip_texture_border(GLint border, * \return GL_TRUE for success, GL_FALSE for failure */ static GLboolean -compress_with_blit(GLcontext * ctx, +compress_with_blit(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, @@ -522,7 +522,7 @@ compress_with_blit(GLcontext * ctx, * Do glTexImage1/2/3D(). */ static void -st_TexImage(GLcontext * ctx, +st_TexImage(struct gl_context * ctx, GLint dims, GLenum target, GLint level, GLint internalFormat, @@ -779,7 +779,7 @@ done: static void -st_TexImage3D(GLcontext * ctx, +st_TexImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, @@ -796,7 +796,7 @@ st_TexImage3D(GLcontext * ctx, static void -st_TexImage2D(GLcontext * ctx, +st_TexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, @@ -811,7 +811,7 @@ st_TexImage2D(GLcontext * ctx, static void -st_TexImage1D(GLcontext * ctx, +st_TexImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, @@ -826,7 +826,7 @@ st_TexImage1D(GLcontext * ctx, static void -st_CompressedTexImage2D(GLcontext *ctx, GLenum target, GLint level, +st_CompressedTexImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -844,7 +844,7 @@ st_CompressedTexImage2D(GLcontext *ctx, GLenum target, GLint level, * a textured quad. Store the results in the user's buffer. */ static void -decompress_with_blit(GLcontext * ctx, GLenum target, GLint level, +decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -940,7 +940,7 @@ decompress_with_blit(GLcontext * ctx, GLenum target, GLint level, * then unmap it. */ static void -st_get_tex_image(GLcontext * ctx, GLenum target, GLint level, +st_get_tex_image(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage, GLboolean compressed_dst) @@ -1031,7 +1031,7 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level, static void -st_GetTexImage(GLcontext * ctx, GLenum target, GLint level, +st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -1042,7 +1042,7 @@ st_GetTexImage(GLcontext * ctx, GLenum target, GLint level, static void -st_GetCompressedTexImage(GLcontext *ctx, GLenum target, GLint level, +st_GetCompressedTexImage(struct gl_context *ctx, GLenum target, GLint level, GLvoid *pixels, struct gl_texture_object *texObj, struct gl_texture_image *texImage) @@ -1054,7 +1054,7 @@ st_GetCompressedTexImage(GLcontext *ctx, GLenum target, GLint level, static void -st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level, +st_TexSubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, GLenum format, GLenum type, const void *pixels, @@ -1160,7 +1160,7 @@ done: static void -st_TexSubImage3D(GLcontext *ctx, GLenum target, GLint level, +st_TexSubImage3D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels, @@ -1175,7 +1175,7 @@ st_TexSubImage3D(GLcontext *ctx, GLenum target, GLint level, static void -st_TexSubImage2D(GLcontext *ctx, GLenum target, GLint level, +st_TexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels, @@ -1190,7 +1190,7 @@ st_TexSubImage2D(GLcontext *ctx, GLenum target, GLint level, static void -st_TexSubImage1D(GLcontext *ctx, GLenum target, GLint level, +st_TexSubImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *packing, @@ -1203,7 +1203,7 @@ st_TexSubImage1D(GLcontext *ctx, GLenum target, GLint level, static void -st_CompressedTexSubImage1D(GLcontext *ctx, GLenum target, GLint level, +st_CompressedTexSubImage1D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data, @@ -1215,7 +1215,7 @@ st_CompressedTexSubImage1D(GLcontext *ctx, GLenum target, GLint level, static void -st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, +st_CompressedTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLint height, GLenum format, @@ -1270,7 +1270,7 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, static void -st_CompressedTexSubImage3D(GLcontext *ctx, GLenum target, GLint level, +st_CompressedTexSubImage3D(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLint height, GLint depth, GLenum format, @@ -1291,7 +1291,7 @@ st_CompressedTexSubImage3D(GLcontext *ctx, GLenum target, GLint level, * Note: srcY=0=TOP of renderbuffer */ static void -fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level, +fallback_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level, struct st_renderbuffer *strb, struct st_texture_image *stImage, GLenum baseFormat, @@ -1416,7 +1416,7 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level, * If the src/dest are incompatible, return 0. */ static unsigned -compatible_src_dst_formats(GLcontext *ctx, +compatible_src_dst_formats(struct gl_context *ctx, const struct gl_renderbuffer *src, const struct gl_texture_image *dst) { @@ -1483,7 +1483,7 @@ compatible_src_dst_formats(GLcontext *ctx, * Note: srcY=0=Bottom of renderbuffer (GL convention) */ static void -st_copy_texsubimage(GLcontext *ctx, +st_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level, GLint destX, GLint destY, GLint destZ, GLint srcX, GLint srcY, @@ -1670,7 +1670,7 @@ st_copy_texsubimage(GLcontext *ctx, static void -st_CopyTexImage1D(GLcontext * ctx, GLenum target, GLint level, +st_CopyTexImage1D(struct gl_context * ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border) { @@ -1696,7 +1696,7 @@ st_CopyTexImage1D(GLcontext * ctx, GLenum target, GLint level, static void -st_CopyTexImage2D(GLcontext * ctx, GLenum target, GLint level, +st_CopyTexImage2D(struct gl_context * ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) @@ -1723,7 +1723,7 @@ st_CopyTexImage2D(GLcontext * ctx, GLenum target, GLint level, static void -st_CopyTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, +st_CopyTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { const GLint yoffset = 0, zoffset = 0; @@ -1735,7 +1735,7 @@ st_CopyTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, static void -st_CopyTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, +st_CopyTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { @@ -1747,7 +1747,7 @@ st_CopyTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, static void -st_CopyTexSubImage3D(GLcontext * ctx, GLenum target, GLint level, +st_CopyTexSubImage3D(struct gl_context * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { @@ -1812,7 +1812,7 @@ copy_image_data_to_texture(struct st_context *st, * \return GL_TRUE for success, GL_FALSE for failure (out of mem) */ GLboolean -st_finalize_texture(GLcontext *ctx, +st_finalize_texture(struct gl_context *ctx, struct pipe_context *pipe, struct gl_texture_object *tObj) { diff --git a/src/mesa/state_tracker/st_cb_texture.h b/src/mesa/state_tracker/st_cb_texture.h index 6942478e815..60987055eb1 100644 --- a/src/mesa/state_tracker/st_cb_texture.h +++ b/src/mesa/state_tracker/st_cb_texture.h @@ -38,7 +38,7 @@ struct pipe_context; struct st_context; extern GLboolean -st_finalize_texture(GLcontext *ctx, +st_finalize_texture(struct gl_context *ctx, struct pipe_context *pipe, struct gl_texture_object *tObj); diff --git a/src/mesa/state_tracker/st_cb_viewport.c b/src/mesa/state_tracker/st_cb_viewport.c index c4076b665cc..049755e45c0 100644 --- a/src/mesa/state_tracker/st_cb_viewport.c +++ b/src/mesa/state_tracker/st_cb_viewport.c @@ -46,7 +46,7 @@ st_ws_framebuffer(struct gl_framebuffer *fb) return (struct st_framebuffer *) ((fb && !fb->Name) ? fb : NULL); } -static void st_viewport(GLcontext * ctx, GLint x, GLint y, +static void st_viewport(struct gl_context * ctx, GLint x, GLint y, GLsizei width, GLsizei height) { struct st_context *st = ctx->st; diff --git a/src/mesa/state_tracker/st_cb_xformfb.c b/src/mesa/state_tracker/st_cb_xformfb.c index 749e88e8dbc..838a0a4a934 100644 --- a/src/mesa/state_tracker/st_cb_xformfb.c +++ b/src/mesa/state_tracker/st_cb_xformfb.c @@ -44,7 +44,7 @@ #if 0 static struct gl_transform_feedback_object * -st_new_transform_feedback(GLcontext *ctx, GLuint name) +st_new_transform_feedback(struct gl_context *ctx, GLuint name) { struct gl_transform_feedback_object *obj; obj = CALLOC_STRUCT(gl_transform_feedback_object); @@ -58,7 +58,7 @@ st_new_transform_feedback(GLcontext *ctx, GLuint name) #if 0 static void -st_delete_transform_feedback(GLcontext *ctx, +st_delete_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { GLuint i; @@ -73,7 +73,7 @@ st_delete_transform_feedback(GLcontext *ctx, static void -st_begin_transform_feedback(GLcontext *ctx, GLenum mode, +st_begin_transform_feedback(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj) { /* to-do */ @@ -81,7 +81,7 @@ st_begin_transform_feedback(GLcontext *ctx, GLenum mode, static void -st_end_transform_feedback(GLcontext *ctx, +st_end_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { /* to-do */ @@ -89,7 +89,7 @@ st_end_transform_feedback(GLcontext *ctx, static void -st_pause_transform_feedback(GLcontext *ctx, +st_pause_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { /* to-do */ @@ -97,7 +97,7 @@ st_pause_transform_feedback(GLcontext *ctx, static void -st_resume_transform_feedback(GLcontext *ctx, +st_resume_transform_feedback(struct gl_context *ctx, struct gl_transform_feedback_object *obj) { /* to-do */ @@ -105,7 +105,7 @@ st_resume_transform_feedback(GLcontext *ctx, static void -st_draw_transform_feedback(GLcontext *ctx, GLenum mode, +st_draw_transform_feedback(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj) { /* XXX to do */ diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index b0ec198e240..75fd69540f3 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -69,7 +69,7 @@ DEBUG_GET_ONCE_BOOL_OPTION(mesa_mvp_dp4, "MESA_MVP_DP4", FALSE) /** * Called via ctx->Driver.UpdateState() */ -void st_invalidate_state(GLcontext * ctx, GLuint new_state) +void st_invalidate_state(struct gl_context * ctx, GLuint new_state) { struct st_context *st = st_context(ctx); @@ -97,7 +97,7 @@ st_get_msaa(void) static struct st_context * -st_create_context_priv( GLcontext *ctx, struct pipe_context *pipe ) +st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe ) { uint i; struct st_context *st = ST_CALLOC_STRUCT( st_context ); @@ -166,8 +166,8 @@ struct st_context *st_create_context(gl_api api, struct pipe_context *pipe, const struct gl_config *visual, struct st_context *share) { - GLcontext *ctx; - GLcontext *shareCtx = share ? share->ctx : NULL; + struct gl_context *ctx; + struct gl_context *shareCtx = share ? share->ctx : NULL; struct dd_function_table funcs; memset(&funcs, 0, sizeof(funcs)); @@ -221,7 +221,7 @@ void st_destroy_context( struct st_context *st ) { struct pipe_context *pipe = st->pipe; struct cso_context *cso = st->cso_context; - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; GLuint i; /* need to unbind and destroy CSO objects before anything else */ diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index ef75c2c4b15..89483ac04c8 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -68,7 +68,7 @@ struct st_context { struct st_context_iface iface; - GLcontext *ctx; + struct gl_context *ctx; struct pipe_context *pipe; @@ -195,7 +195,7 @@ struct st_context /* Need this so that we can implement Mesa callbacks in this module. */ -static INLINE struct st_context *st_context(GLcontext *ctx) +static INLINE struct st_context *st_context(struct gl_context *ctx) { return ctx->st; } @@ -219,7 +219,7 @@ struct st_framebuffer extern void st_init_driver_functions(struct dd_function_table *functions); -void st_invalidate_state(GLcontext * ctx, GLuint new_state); +void st_invalidate_state(struct gl_context * ctx, GLuint new_state); diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 318e08886c7..f6f5bb17938 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -341,7 +341,7 @@ get_arrays_bounds(const struct st_vertex_program *vp, * \param velements returns vertex element info */ static void -setup_interleaved_attribs(GLcontext *ctx, +setup_interleaved_attribs(struct gl_context *ctx, const struct st_vertex_program *vp, const struct st_vp_varient *vpv, const struct gl_client_array **arrays, @@ -407,7 +407,7 @@ setup_interleaved_attribs(GLcontext *ctx, * \param velements returns vertex element info */ static void -setup_non_interleaved_attribs(GLcontext *ctx, +setup_non_interleaved_attribs(struct gl_context *ctx, const struct st_vertex_program *vp, const struct st_vp_varient *vpv, const struct gl_client_array **arrays, @@ -496,7 +496,7 @@ setup_non_interleaved_attribs(GLcontext *ctx, static void -setup_index_buffer(GLcontext *ctx, +setup_index_buffer(struct gl_context *ctx, const struct _mesa_index_buffer *ib, struct pipe_index_buffer *ibuffer) { @@ -545,7 +545,7 @@ setup_index_buffer(GLcontext *ctx, * issue a warning. */ static void -check_uniforms(GLcontext *ctx) +check_uniforms(struct gl_context *ctx) { const struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; if (shProg && shProg->LinkStatus) { @@ -567,7 +567,7 @@ check_uniforms(GLcontext *ctx) * the corresponding Gallium type. */ static unsigned -translate_prim(const GLcontext *ctx, unsigned prim) +translate_prim(const struct gl_context *ctx, unsigned prim) { /* GL prims should match Gallium prims, spot-check a few */ assert(GL_POINTS == PIPE_PRIM_POINTS); @@ -595,7 +595,7 @@ translate_prim(const GLcontext *ctx, unsigned prim) * Basically, translate the information into the format expected by gallium. */ void -st_draw_vbo(GLcontext *ctx, +st_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, @@ -736,7 +736,7 @@ st_draw_vbo(GLcontext *ctx, void st_init_draw( struct st_context *st ) { - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; vbo_set_draw_func(ctx, st_draw_vbo); diff --git a/src/mesa/state_tracker/st_draw.h b/src/mesa/state_tracker/st_draw.h index f36184487a6..2e4c468cff5 100644 --- a/src/mesa/state_tracker/st_draw.h +++ b/src/mesa/state_tracker/st_draw.h @@ -47,7 +47,7 @@ void st_init_draw( struct st_context *st ); void st_destroy_draw( struct st_context *st ); extern void -st_draw_vbo(GLcontext *ctx, +st_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, @@ -57,7 +57,7 @@ st_draw_vbo(GLcontext *ctx, GLuint max_index); extern void -st_feedback_draw_vbo(GLcontext *ctx, +st_feedback_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index df05c7f70df..7f392fc4916 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -52,7 +52,7 @@ * GL_SELECT or GL_FEEDBACK mode or for glRasterPos. */ static void -set_feedback_vertex_format(GLcontext *ctx) +set_feedback_vertex_format(struct gl_context *ctx) { #if 0 struct st_context *st = st_context(ctx); @@ -90,7 +90,7 @@ set_feedback_vertex_format(GLcontext *ctx) * Might move this into the failover module some day. */ void -st_feedback_draw_vbo(GLcontext *ctx, +st_feedback_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 0a9614f7541..96e4efcafad 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -204,7 +204,7 @@ void st_init_limits(struct st_context *st) void st_init_extensions(struct st_context *st) { struct pipe_screen *screen = st->pipe->screen; - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; /* * Extensions that are supported by all Gallium drivers: diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index cc585f9ce2e..4e90bd01a30 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -781,7 +781,7 @@ st_choose_renderbuffer_format(struct pipe_screen *screen, * Called via ctx->Driver.chooseTextureFormat(). */ gl_format -st_ChooseTextureFormat_renderable(GLcontext *ctx, GLint internalFormat, +st_ChooseTextureFormat_renderable(struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type, GLboolean renderable) { struct pipe_screen *screen = st_context(ctx)->pipe->screen; @@ -821,7 +821,7 @@ st_ChooseTextureFormat_renderable(GLcontext *ctx, GLint internalFormat, } gl_format -st_ChooseTextureFormat(GLcontext *ctx, GLint internalFormat, +st_ChooseTextureFormat(struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type) { return st_ChooseTextureFormat_renderable(ctx, internalFormat, diff --git a/src/mesa/state_tracker/st_format.h b/src/mesa/state_tracker/st_format.h index 4e3a9b1d83e..43fa59b1006 100644 --- a/src/mesa/state_tracker/st_format.h +++ b/src/mesa/state_tracker/st_format.h @@ -60,11 +60,11 @@ st_choose_renderbuffer_format(struct pipe_screen *screen, gl_format -st_ChooseTextureFormat_renderable(GLcontext *ctx, GLint internalFormat, +st_ChooseTextureFormat_renderable(struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type, GLboolean renderable); extern gl_format -st_ChooseTextureFormat(GLcontext * ctx, GLint internalFormat, +st_ChooseTextureFormat(struct gl_context * ctx, GLint internalFormat, GLenum format, GLenum type); diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c index 2d587df6055..fe31418ddd1 100644 --- a/src/mesa/state_tracker/st_gen_mipmap.c +++ b/src/mesa/state_tracker/st_gen_mipmap.c @@ -155,7 +155,7 @@ compress_image(enum pipe_format format, * Software fallback for generate mipmap levels. */ static void -fallback_generate_mipmap(GLcontext *ctx, GLenum target, +fallback_generate_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { struct pipe_context *pipe = st_context(ctx)->pipe; @@ -276,7 +276,7 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target, * levels should be generated. */ static GLuint -compute_num_levels(GLcontext *ctx, +compute_num_levels(struct gl_context *ctx, struct gl_texture_object *texObj, GLenum target) { @@ -311,7 +311,7 @@ compute_num_levels(GLcontext *ctx, * Called via ctx->Driver.GenerateMipmap(). */ void -st_generate_mipmap(GLcontext *ctx, GLenum target, +st_generate_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { struct st_context *st = st_context(ctx); diff --git a/src/mesa/state_tracker/st_gen_mipmap.h b/src/mesa/state_tracker/st_gen_mipmap.h index 016bf3f4bba..3ba091da151 100644 --- a/src/mesa/state_tracker/st_gen_mipmap.h +++ b/src/mesa/state_tracker/st_gen_mipmap.h @@ -43,7 +43,7 @@ st_destroy_generate_mipmap(struct st_context *st); extern void -st_generate_mipmap(GLcontext *ctx, GLenum target, +st_generate_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj); diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index a307bb9dc16..183477a3f31 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -516,7 +516,7 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target struct pipe_resource *tex, boolean mipmap) { struct st_context *st = (struct st_context *) stctxi; - GLcontext *ctx = st->ctx; + struct gl_context *ctx = st->ctx; struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); struct gl_texture_object *texObj; struct gl_texture_image *texImage; diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c index 582ca6f1733..c5c239b2c95 100644 --- a/src/mesa/state_tracker/st_mesa_to_tgsi.c +++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c @@ -924,7 +924,7 @@ emit_edgeflags( struct st_translate *t, */ enum pipe_error st_translate_mesa_program( - GLcontext *ctx, + struct gl_context *ctx, uint procType, struct ureg_program *ureg, const struct gl_program *program, diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.h b/src/mesa/state_tracker/st_mesa_to_tgsi.h index ca076ce3622..9bfd4960b60 100644 --- a/src/mesa/state_tracker/st_mesa_to_tgsi.h +++ b/src/mesa/state_tracker/st_mesa_to_tgsi.h @@ -44,7 +44,7 @@ struct gl_program; enum pipe_error st_translate_mesa_program( - GLcontext *ctx, + struct gl_context *ctx, uint procType, struct ureg_program *ureg, const struct gl_program *program, diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 733cdd0ac97..95e6bd7dac2 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -716,7 +716,7 @@ st_translate_geometry_program(struct st_context *st, * Debug- print current shader text */ void -st_print_shaders(GLcontext *ctx) +st_print_shaders(struct gl_context *ctx) { struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; if (shProg) { diff --git a/src/mesa/state_tracker/st_program.h b/src/mesa/state_tracker/st_program.h index 3805b9a725e..72dbc715fe1 100644 --- a/src/mesa/state_tracker/st_program.h +++ b/src/mesa/state_tracker/st_program.h @@ -223,7 +223,7 @@ st_vp_release_varients( struct st_context *st, struct st_vertex_program *stvp ); extern void -st_print_shaders(GLcontext *ctx); +st_print_shaders(struct gl_context *ctx); #endif diff --git a/src/mesa/swrast/NOTES b/src/mesa/swrast/NOTES index f906e41b955..ea373aa1272 100644 --- a/src/mesa/swrast/NOTES +++ b/src/mesa/swrast/NOTES @@ -21,24 +21,24 @@ STATE To create and destroy the module: - GLboolean _swrast_CreateContext( GLcontext *ctx ); - void _swrast_DestroyContext( GLcontext *ctx ); + GLboolean _swrast_CreateContext( struct gl_context *ctx ); + void _swrast_DestroyContext( struct gl_context *ctx ); This module tracks state changes internally and maintains derived values based on the current state. For this to work, the driver ensure the following funciton is called whenever the state changes and the swsetup module is 'awake': - void _swrast_InvalidateState( GLcontext *ctx, GLuint new_state ); + void _swrast_InvalidateState( struct gl_context *ctx, GLuint new_state ); There is no explicit call to put the swrast module to sleep. CUSTOMIZATION - void (*choose_point)( GLcontext * ); - void (*choose_line)( GLcontext * ); - void (*choose_triangle)( GLcontext * ); + void (*choose_point)( struct gl_context * ); + void (*choose_line)( struct gl_context * ); + void (*choose_triangle)( struct gl_context * ); Drivers may add additional triangle/line/point functions to swrast by overriding these functions. It is necessary for the driver to be very diff --git a/src/mesa/swrast/s_aaline.c b/src/mesa/swrast/s_aaline.c index 6ba4604e690..65b9af06aff 100644 --- a/src/mesa/swrast/s_aaline.c +++ b/src/mesa/swrast/s_aaline.c @@ -323,7 +323,7 @@ compute_coveragef(const struct LineInfo *info, } -typedef void (*plot_func)(GLcontext *ctx, struct LineInfo *line, +typedef void (*plot_func)(struct gl_context *ctx, struct LineInfo *line, int ix, int iy); @@ -332,7 +332,7 @@ typedef void (*plot_func)(GLcontext *ctx, struct LineInfo *line, * Draw an AA line segment (called many times per line when stippling) */ static void -segment(GLcontext *ctx, +segment(struct gl_context *ctx, struct LineInfo *line, plot_func plot, GLfloat t0, GLfloat t1) @@ -472,7 +472,7 @@ segment(GLcontext *ctx, void -_swrast_choose_aa_line_function(GLcontext *ctx) +_swrast_choose_aa_line_function(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); diff --git a/src/mesa/swrast/s_aaline.h b/src/mesa/swrast/s_aaline.h index 922eb230e51..f7d92c52412 100644 --- a/src/mesa/swrast/s_aaline.h +++ b/src/mesa/swrast/s_aaline.h @@ -32,7 +32,7 @@ extern void -_swrast_choose_aa_line_function(GLcontext *ctx); +_swrast_choose_aa_line_function(struct gl_context *ctx); #endif diff --git a/src/mesa/swrast/s_aalinetemp.h b/src/mesa/swrast/s_aalinetemp.h index c28d47a671d..d99d9d3d904 100644 --- a/src/mesa/swrast/s_aalinetemp.h +++ b/src/mesa/swrast/s_aalinetemp.h @@ -34,7 +34,7 @@ * \param iy - integer fragment window Y coordiante */ static void -NAME(plot)(GLcontext *ctx, struct LineInfo *line, int ix, int iy) +NAME(plot)(struct gl_context *ctx, struct LineInfo *line, int ix, int iy) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLfloat fx = (GLfloat) ix; @@ -103,7 +103,7 @@ NAME(plot)(GLcontext *ctx, struct LineInfo *line, int ix, int iy) * Line setup */ static void -NAME(line)(GLcontext *ctx, const SWvertex *v0, const SWvertex *v1) +NAME(line)(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLfloat tStart, tEnd; /* segment start, end along line length */ diff --git a/src/mesa/swrast/s_aatriangle.c b/src/mesa/swrast/s_aatriangle.c index 175316790d7..c597808e40e 100644 --- a/src/mesa/swrast/s_aatriangle.c +++ b/src/mesa/swrast/s_aatriangle.c @@ -268,7 +268,7 @@ compute_coveragef(const GLfloat v0[3], const GLfloat v1[3], static void -rgba_aa_tri(GLcontext *ctx, +rgba_aa_tri(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2) @@ -279,7 +279,7 @@ rgba_aa_tri(GLcontext *ctx, static void -general_aa_tri(GLcontext *ctx, +general_aa_tri(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2) @@ -296,7 +296,7 @@ general_aa_tri(GLcontext *ctx, * appropriate antialiased triangle rasterizer function. */ void -_swrast_set_aa_triangle_function(GLcontext *ctx) +_swrast_set_aa_triangle_function(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); diff --git a/src/mesa/swrast/s_aatriangle.h b/src/mesa/swrast/s_aatriangle.h index 9aed41a1915..746e456f5f4 100644 --- a/src/mesa/swrast/s_aatriangle.h +++ b/src/mesa/swrast/s_aatriangle.h @@ -32,7 +32,7 @@ extern void -_swrast_set_aa_triangle_function(GLcontext *ctx); +_swrast_set_aa_triangle_function(struct gl_context *ctx); #endif diff --git a/src/mesa/swrast/s_aatritemp.h b/src/mesa/swrast/s_aatritemp.h index 5c1c6d9044b..91d4f7a10ab 100644 --- a/src/mesa/swrast/s_aatritemp.h +++ b/src/mesa/swrast/s_aatritemp.h @@ -36,7 +36,7 @@ * DO_ATTRIBS - if defined, compute texcoords, varying, etc. */ -/*void triangle( GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint pv )*/ +/*void triangle( struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint pv )*/ { const SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLfloat *p0 = v0->attrib[FRAG_ATTRIB_WPOS]; diff --git a/src/mesa/swrast/s_accum.c b/src/mesa/swrast/s_accum.c index 854e106b7f0..88d107a17da 100644 --- a/src/mesa/swrast/s_accum.c +++ b/src/mesa/swrast/s_accum.c @@ -78,7 +78,7 @@ * representing the range[-1, 1]. */ static void -rescale_accum( GLcontext *ctx ) +rescale_accum( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); struct gl_renderbuffer *rb @@ -125,7 +125,7 @@ rescale_accum( GLcontext *ctx ) * Clear the accumulation Buffer. */ void -_swrast_clear_accum_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ) +_swrast_clear_accum_buffer( struct gl_context *ctx, struct gl_renderbuffer *rb ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLuint x, y, width, height; @@ -179,7 +179,7 @@ _swrast_clear_accum_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ) static void -accum_add(GLcontext *ctx, GLfloat value, +accum_add(struct gl_context *ctx, GLfloat value, GLint xpos, GLint ypos, GLint width, GLint height ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -222,7 +222,7 @@ accum_add(GLcontext *ctx, GLfloat value, static void -accum_mult(GLcontext *ctx, GLfloat mult, +accum_mult(struct gl_context *ctx, GLfloat mult, GLint xpos, GLint ypos, GLint width, GLint height ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -265,7 +265,7 @@ accum_mult(GLcontext *ctx, GLfloat mult, static void -accum_accum(GLcontext *ctx, GLfloat value, +accum_accum(struct gl_context *ctx, GLfloat value, GLint xpos, GLint ypos, GLint width, GLint height ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -341,7 +341,7 @@ accum_accum(GLcontext *ctx, GLfloat value, static void -accum_load(GLcontext *ctx, GLfloat value, +accum_load(struct gl_context *ctx, GLfloat value, GLint xpos, GLint ypos, GLint width, GLint height ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -423,7 +423,7 @@ accum_load(GLcontext *ctx, GLfloat value, static void -accum_return(GLcontext *ctx, GLfloat value, +accum_return(struct gl_context *ctx, GLfloat value, GLint xpos, GLint ypos, GLint width, GLint height ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -540,7 +540,7 @@ accum_return(GLcontext *ctx, GLfloat value, * Software fallback for glAccum. */ void -_swrast_Accum(GLcontext *ctx, GLenum op, GLfloat value) +_swrast_Accum(struct gl_context *ctx, GLenum op, GLfloat value) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLint xpos, ypos, width, height; diff --git a/src/mesa/swrast/s_accum.h b/src/mesa/swrast/s_accum.h index 42e38cf02b3..071644b64fa 100644 --- a/src/mesa/swrast/s_accum.h +++ b/src/mesa/swrast/s_accum.h @@ -31,7 +31,7 @@ extern void -_swrast_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb); +_swrast_clear_accum_buffer(struct gl_context *ctx, struct gl_renderbuffer *rb); #endif diff --git a/src/mesa/swrast/s_alpha.c b/src/mesa/swrast/s_alpha.c index 509477433a5..df2181ba968 100644 --- a/src/mesa/swrast/s_alpha.c +++ b/src/mesa/swrast/s_alpha.c @@ -90,7 +90,7 @@ do { \ * 1 if one or more pixels passed the alpha test. */ GLint -_swrast_alpha_test(const GLcontext *ctx, SWspan *span) +_swrast_alpha_test(const struct gl_context *ctx, SWspan *span) { const GLuint n = span->end; GLubyte *mask = span->array->mask; diff --git a/src/mesa/swrast/s_alpha.h b/src/mesa/swrast/s_alpha.h index 239484a9743..7cd6d800b29 100644 --- a/src/mesa/swrast/s_alpha.h +++ b/src/mesa/swrast/s_alpha.h @@ -33,7 +33,7 @@ extern GLint -_swrast_alpha_test( const GLcontext *ctx, SWspan *span ); +_swrast_alpha_test( const struct gl_context *ctx, SWspan *span ); #endif diff --git a/src/mesa/swrast/s_atifragshader.c b/src/mesa/swrast/s_atifragshader.c index 1338b6802d4..1eb026e0092 100644 --- a/src/mesa/swrast/s_atifragshader.c +++ b/src/mesa/swrast/s_atifragshader.c @@ -43,7 +43,7 @@ struct atifs_machine * Fetch a texel. */ static void -fetch_texel(GLcontext * ctx, const GLfloat texcoord[4], GLfloat lambda, +fetch_texel(struct gl_context * ctx, const GLfloat texcoord[4], GLfloat lambda, GLuint unit, GLfloat color[4]) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -272,7 +272,7 @@ handle_pass_op(struct atifs_machine *machine, struct atifs_setupinst *texinst, } static void -handle_sample_op(GLcontext * ctx, struct atifs_machine *machine, +handle_sample_op(struct gl_context * ctx, struct atifs_machine *machine, struct atifs_setupinst *texinst, const SWspan *span, GLuint column, GLuint idx) { @@ -311,7 +311,7 @@ do { \ * \param column - which pixel [i] we're operating on in the span */ static void -execute_shader(GLcontext *ctx, const struct ati_fragment_shader *shader, +execute_shader(struct gl_context *ctx, const struct ati_fragment_shader *shader, struct atifs_machine *machine, const SWspan *span, GLuint column) { @@ -555,7 +555,7 @@ execute_shader(GLcontext *ctx, const struct ati_fragment_shader *shader, * Init fragment shader virtual machine state. */ static void -init_machine(GLcontext * ctx, struct atifs_machine *machine, +init_machine(struct gl_context * ctx, struct atifs_machine *machine, const struct ati_fragment_shader *shader, const SWspan *span, GLuint col) { @@ -577,7 +577,7 @@ init_machine(GLcontext * ctx, struct atifs_machine *machine, * Execute the current ATI shader program, operating on the given span. */ void -_swrast_exec_fragment_shader(GLcontext * ctx, SWspan *span) +_swrast_exec_fragment_shader(struct gl_context * ctx, SWspan *span) { const struct ati_fragment_shader *shader = ctx->ATIFragmentShader.Current; struct atifs_machine machine; diff --git a/src/mesa/swrast/s_atifragshader.h b/src/mesa/swrast/s_atifragshader.h index cce455a0465..39a6e64ed92 100644 --- a/src/mesa/swrast/s_atifragshader.h +++ b/src/mesa/swrast/s_atifragshader.h @@ -32,7 +32,7 @@ extern void -_swrast_exec_fragment_shader( GLcontext *ctx, SWspan *span ); +_swrast_exec_fragment_shader( struct gl_context *ctx, SWspan *span ); #endif diff --git a/src/mesa/swrast/s_bitmap.c b/src/mesa/swrast/s_bitmap.c index da730213aca..21488d3ba3e 100644 --- a/src/mesa/swrast/s_bitmap.c +++ b/src/mesa/swrast/s_bitmap.c @@ -45,7 +45,7 @@ * All parameter error checking will have been done before this is called. */ void -_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py, +_swrast_Bitmap( struct gl_context *ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ) @@ -144,7 +144,7 @@ _swrast_Bitmap( GLcontext *ctx, GLint px, GLint py, * draw or skip. */ void -_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py, +_swrast_Bitmap( struct gl_context *ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ) diff --git a/src/mesa/swrast/s_blend.c b/src/mesa/swrast/s_blend.c index 5b090c72c79..1a550c445d3 100644 --- a/src/mesa/swrast/s_blend.c +++ b/src/mesa/swrast/s_blend.c @@ -70,7 +70,7 @@ * Any chanType ok. */ static void _BLENDAPI -blend_noop(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_noop(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLint bytes; @@ -98,7 +98,7 @@ blend_noop(GLcontext *ctx, GLuint n, const GLubyte mask[], * Any chanType ok. */ static void _BLENDAPI -blend_replace(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_replace(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { ASSERT(ctx->Color.BlendEquationRGB == GL_FUNC_ADD); @@ -118,7 +118,7 @@ blend_replace(GLcontext *ctx, GLuint n, const GLubyte mask[], * glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). */ static void _BLENDAPI -blend_transparency_ubyte(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_transparency_ubyte(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLubyte (*rgba)[4] = (GLubyte (*)[4]) src; @@ -163,7 +163,7 @@ blend_transparency_ubyte(GLcontext *ctx, GLuint n, const GLubyte mask[], static void _BLENDAPI -blend_transparency_ushort(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_transparency_ushort(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLushort (*rgba)[4] = (GLushort (*)[4]) src; @@ -201,7 +201,7 @@ blend_transparency_ushort(GLcontext *ctx, GLuint n, const GLubyte mask[], static void _BLENDAPI -blend_transparency_float(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_transparency_float(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLfloat (*rgba)[4] = (GLfloat (*)[4]) src; @@ -243,7 +243,7 @@ blend_transparency_float(GLcontext *ctx, GLuint n, const GLubyte mask[], * Any chanType ok. */ static void _BLENDAPI -blend_add(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_add(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLuint i; @@ -309,7 +309,7 @@ blend_add(GLcontext *ctx, GLuint n, const GLubyte mask[], * Any chanType ok. */ static void _BLENDAPI -blend_min(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_min(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLuint i; @@ -362,7 +362,7 @@ blend_min(GLcontext *ctx, GLuint n, const GLubyte mask[], * Any chanType ok. */ static void _BLENDAPI -blend_max(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_max(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLuint i; @@ -416,7 +416,7 @@ blend_max(GLcontext *ctx, GLuint n, const GLubyte mask[], * Any chanType ok. */ static void _BLENDAPI -blend_modulate(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_modulate(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) { GLuint i; @@ -471,7 +471,7 @@ blend_modulate(GLcontext *ctx, GLuint n, const GLubyte mask[], * \param dest array of pixels from the dest color buffer */ static void -blend_general_float(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_general_float(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLfloat rgba[][4], GLfloat dest[][4], GLenum chanType) { @@ -816,7 +816,7 @@ blend_general_float(GLcontext *ctx, GLuint n, const GLubyte mask[], * Do any blending operation, any chanType. */ static void -blend_general(GLcontext *ctx, GLuint n, const GLubyte mask[], +blend_general(struct gl_context *ctx, GLuint n, const GLubyte mask[], void *src, const void *dst, GLenum chanType) { GLfloat rgbaF[MAX_WIDTH][4], destF[MAX_WIDTH][4]; @@ -892,7 +892,7 @@ blend_general(GLcontext *ctx, GLuint n, const GLubyte mask[], * Result: the ctx->Color.BlendFunc pointer is updated. */ void -_swrast_choose_blend_func(GLcontext *ctx, GLenum chanType) +_swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType) { SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLenum eq = ctx->Color.BlendEquationRGB; @@ -985,7 +985,7 @@ _swrast_choose_blend_func(GLcontext *ctx, GLenum chanType) * pixel coordinates. */ void -_swrast_blend_span(GLcontext *ctx, struct gl_renderbuffer *rb, SWspan *span) +_swrast_blend_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span) { SWcontext *swrast = SWRAST_CONTEXT(ctx); void *rbPixels; diff --git a/src/mesa/swrast/s_blend.h b/src/mesa/swrast/s_blend.h index 9cedde3bf20..8b06dd5031e 100644 --- a/src/mesa/swrast/s_blend.h +++ b/src/mesa/swrast/s_blend.h @@ -32,11 +32,11 @@ extern void -_swrast_blend_span(GLcontext *ctx, struct gl_renderbuffer *rb, SWspan *span); +_swrast_blend_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span); extern void -_swrast_choose_blend_func(GLcontext *ctx, GLenum chanType); +_swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType); #endif diff --git a/src/mesa/swrast/s_blit.c b/src/mesa/swrast/s_blit.c index 753f3136f55..d943e09b29f 100644 --- a/src/mesa/swrast/s_blit.c +++ b/src/mesa/swrast/s_blit.c @@ -103,7 +103,7 @@ RESAMPLE(resample_row_16, GLuint, 4) * Blit color, depth or stencil with GL_NEAREST filtering. */ static void -blit_nearest(GLcontext *ctx, +blit_nearest(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield buffer) @@ -316,7 +316,7 @@ resample_linear_row_ub(GLint srcWidth, GLint dstWidth, * Bilinear filtered blit (color only). */ static void -blit_linear(GLcontext *ctx, +blit_linear(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1) { @@ -455,7 +455,7 @@ blit_linear(GLcontext *ctx, * XXX we could easily support vertical flipping here. */ static void -simple_blit(GLcontext *ctx, +simple_blit(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield buffer) @@ -556,7 +556,7 @@ simple_blit(GLcontext *ctx, * Software fallback for glBlitFramebufferEXT(). */ void -_swrast_BlitFramebuffer(GLcontext *ctx, +_swrast_BlitFramebuffer(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) diff --git a/src/mesa/swrast/s_clear.c b/src/mesa/swrast/s_clear.c index efe500ae2b1..75805f9605d 100644 --- a/src/mesa/swrast/s_clear.c +++ b/src/mesa/swrast/s_clear.c @@ -40,7 +40,7 @@ * Clear the color buffer when glColorMask is in effect. */ static void -clear_rgba_buffer_with_masking(GLcontext *ctx, struct gl_renderbuffer *rb, +clear_rgba_buffer_with_masking(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint buf) { const GLint x = ctx->DrawBuffer->_Xmin; @@ -106,7 +106,7 @@ clear_rgba_buffer_with_masking(GLcontext *ctx, struct gl_renderbuffer *rb, * Clear an rgba color buffer without channel masking. */ static void -clear_rgba_buffer(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint buf) +clear_rgba_buffer(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint buf) { const GLint x = ctx->DrawBuffer->_Xmin; const GLint y = ctx->DrawBuffer->_Ymin; @@ -159,7 +159,7 @@ clear_rgba_buffer(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint buf) * clear its own color buffers for some reason (such as with masking). */ static void -clear_color_buffers(GLcontext *ctx) +clear_color_buffers(struct gl_context *ctx) { GLuint buf; @@ -186,7 +186,7 @@ clear_color_buffers(GLcontext *ctx) * \param all if GL_TRUE, clear whole buffer, else clear specified region. */ void -_swrast_Clear(GLcontext *ctx, GLbitfield buffers) +_swrast_Clear(struct gl_context *ctx, GLbitfield buffers) { #ifdef DEBUG_FOO { diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index f76a2b68ecd..491fcfcdbbf 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -50,7 +50,7 @@ * stenciling, logic-op, fog, etc?). */ static void -_swrast_update_rasterflags( GLcontext *ctx ) +_swrast_update_rasterflags( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLbitfield rasterMask = 0; @@ -129,7 +129,7 @@ _swrast_update_rasterflags( GLcontext *ctx ) * factors in. */ static void -_swrast_update_polygon( GLcontext *ctx ) +_swrast_update_polygon( struct gl_context *ctx ) { GLfloat backface_sign; @@ -165,7 +165,7 @@ _swrast_update_polygon( GLcontext *ctx ) * fog blend factors (from the fog coords) per-fragment. */ static void -_swrast_update_fog_hint( GLcontext *ctx ) +_swrast_update_fog_hint( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); swrast->_PreferPixelFog = (!swrast->AllowVertexFog || @@ -180,7 +180,7 @@ _swrast_update_fog_hint( GLcontext *ctx ) * Update the swrast->_TextureCombinePrimary flag. */ static void -_swrast_update_texture_env( GLcontext *ctx ) +_swrast_update_texture_env( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLuint i; @@ -211,7 +211,7 @@ _swrast_update_texture_env( GLcontext *ctx ) * lots of fragments. */ static void -_swrast_update_deferred_texture(GLcontext *ctx) +_swrast_update_deferred_texture(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); if (ctx->Color.AlphaEnabled) { @@ -243,7 +243,7 @@ _swrast_update_deferred_texture(GLcontext *ctx) * Update swrast->_FogColor and swrast->_FogEnable values. */ static void -_swrast_update_fog_state( GLcontext *ctx ) +_swrast_update_fog_state( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); const struct gl_fragment_program *fp = ctx->FragmentProgram._Current; @@ -268,7 +268,7 @@ _swrast_update_fog_state( GLcontext *ctx ) * program parameters with current state values. */ static void -_swrast_update_fragment_program(GLcontext *ctx, GLbitfield newState) +_swrast_update_fragment_program(struct gl_context *ctx, GLbitfield newState) { const struct gl_fragment_program *fp = ctx->FragmentProgram._Current; if (fp) { @@ -282,7 +282,7 @@ _swrast_update_fragment_program(GLcontext *ctx, GLbitfield newState) * add per vertex instead of per-fragment. */ static void -_swrast_update_specular_vertex_add(GLcontext *ctx) +_swrast_update_specular_vertex_add(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLboolean separateSpecular = ctx->Fog.ColorSumEnabled || @@ -346,7 +346,7 @@ _swrast_update_specular_vertex_add(GLcontext *ctx) * after a state change. */ static void -_swrast_validate_triangle( GLcontext *ctx, +_swrast_validate_triangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ) @@ -371,7 +371,7 @@ _swrast_validate_triangle( GLcontext *ctx, * line routine. Then call it. */ static void -_swrast_validate_line( GLcontext *ctx, const SWvertex *v0, const SWvertex *v1 ) +_swrast_validate_line( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1 ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -392,7 +392,7 @@ _swrast_validate_line( GLcontext *ctx, const SWvertex *v0, const SWvertex *v1 ) * point routine. Then call it. */ static void -_swrast_validate_point( GLcontext *ctx, const SWvertex *v0 ) +_swrast_validate_point( struct gl_context *ctx, const SWvertex *v0 ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -413,7 +413,7 @@ _swrast_validate_point( GLcontext *ctx, const SWvertex *v0 ) * function, then call it. */ static void _ASMAPI -_swrast_validate_blend_func(GLcontext *ctx, GLuint n, const GLubyte mask[], +_swrast_validate_blend_func(struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType ) { @@ -431,7 +431,7 @@ _swrast_validate_blend_func(GLcontext *ctx, GLuint n, const GLubyte mask[], * for subsequent rendering. */ static void -_swrast_validate_texture_images(GLcontext *ctx) +_swrast_validate_texture_images(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLuint u; @@ -470,7 +470,7 @@ _swrast_validate_texture_images(GLcontext *ctx) * from software to hardware rendering. */ void -_swrast_eject_texture_images(GLcontext *ctx) +_swrast_eject_texture_images(struct gl_context *ctx) { GLuint u; @@ -504,14 +504,14 @@ _swrast_eject_texture_images(GLcontext *ctx) static void -_swrast_sleep( GLcontext *ctx, GLbitfield new_state ) +_swrast_sleep( struct gl_context *ctx, GLbitfield new_state ) { (void) ctx; (void) new_state; } static void -_swrast_invalidate_state( GLcontext *ctx, GLbitfield new_state ) +_swrast_invalidate_state( struct gl_context *ctx, GLbitfield new_state ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLuint i; @@ -546,7 +546,7 @@ _swrast_invalidate_state( GLcontext *ctx, GLbitfield new_state ) void -_swrast_update_texture_samplers(GLcontext *ctx) +_swrast_update_texture_samplers(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLuint u; @@ -569,7 +569,7 @@ _swrast_update_texture_samplers(GLcontext *ctx) * swrast->_ActiveAtttribMask. */ static void -_swrast_update_active_attribs(GLcontext *ctx) +_swrast_update_active_attribs(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLuint attribsMask; @@ -626,7 +626,7 @@ _swrast_update_active_attribs(GLcontext *ctx) void -_swrast_validate_derived( GLcontext *ctx ) +_swrast_validate_derived( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -681,7 +681,7 @@ _swrast_validate_derived( GLcontext *ctx ) /* Public entrypoints: See also s_accum.c, s_bitmap.c, etc. */ void -_swrast_Quad( GLcontext *ctx, +_swrast_Quad( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2, const SWvertex *v3 ) { @@ -697,7 +697,7 @@ _swrast_Quad( GLcontext *ctx, } void -_swrast_Triangle( GLcontext *ctx, const SWvertex *v0, +_swrast_Triangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ) { if (SWRAST_DEBUG) { @@ -710,7 +710,7 @@ _swrast_Triangle( GLcontext *ctx, const SWvertex *v0, } void -_swrast_Line( GLcontext *ctx, const SWvertex *v0, const SWvertex *v1 ) +_swrast_Line( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1 ) { if (SWRAST_DEBUG) { _mesa_debug(ctx, "_swrast_Line\n"); @@ -721,7 +721,7 @@ _swrast_Line( GLcontext *ctx, const SWvertex *v0, const SWvertex *v1 ) } void -_swrast_Point( GLcontext *ctx, const SWvertex *v0 ) +_swrast_Point( struct gl_context *ctx, const SWvertex *v0 ) { if (SWRAST_DEBUG) { _mesa_debug(ctx, "_swrast_Point\n"); @@ -731,7 +731,7 @@ _swrast_Point( GLcontext *ctx, const SWvertex *v0 ) } void -_swrast_InvalidateState( GLcontext *ctx, GLbitfield new_state ) +_swrast_InvalidateState( struct gl_context *ctx, GLbitfield new_state ) { if (SWRAST_DEBUG) { _mesa_debug(ctx, "_swrast_InvalidateState\n"); @@ -740,7 +740,7 @@ _swrast_InvalidateState( GLcontext *ctx, GLbitfield new_state ) } void -_swrast_ResetLineStipple( GLcontext *ctx ) +_swrast_ResetLineStipple( struct gl_context *ctx ) { if (SWRAST_DEBUG) { _mesa_debug(ctx, "_swrast_ResetLineStipple\n"); @@ -749,13 +749,13 @@ _swrast_ResetLineStipple( GLcontext *ctx ) } void -_swrast_SetFacing(GLcontext *ctx, GLuint facing) +_swrast_SetFacing(struct gl_context *ctx, GLuint facing) { SWRAST_CONTEXT(ctx)->PointLineFacing = facing; } void -_swrast_allow_vertex_fog( GLcontext *ctx, GLboolean value ) +_swrast_allow_vertex_fog( struct gl_context *ctx, GLboolean value ) { if (SWRAST_DEBUG) { _mesa_debug(ctx, "_swrast_allow_vertex_fog %d\n", value); @@ -765,7 +765,7 @@ _swrast_allow_vertex_fog( GLcontext *ctx, GLboolean value ) } void -_swrast_allow_pixel_fog( GLcontext *ctx, GLboolean value ) +_swrast_allow_pixel_fog( struct gl_context *ctx, GLboolean value ) { if (SWRAST_DEBUG) { _mesa_debug(ctx, "_swrast_allow_pixel_fog %d\n", value); @@ -776,7 +776,7 @@ _swrast_allow_pixel_fog( GLcontext *ctx, GLboolean value ) GLboolean -_swrast_CreateContext( GLcontext *ctx ) +_swrast_CreateContext( struct gl_context *ctx ) { GLuint i; SWcontext *swrast = (SWcontext *)CALLOC(sizeof(SWcontext)); @@ -848,7 +848,7 @@ _swrast_CreateContext( GLcontext *ctx ) } void -_swrast_DestroyContext( GLcontext *ctx ) +_swrast_DestroyContext( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -867,14 +867,14 @@ _swrast_DestroyContext( GLcontext *ctx ) struct swrast_device_driver * -_swrast_GetDeviceDriverReference( GLcontext *ctx ) +_swrast_GetDeviceDriverReference( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); return &swrast->Driver; } void -_swrast_flush( GLcontext *ctx ) +_swrast_flush( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); /* flush any pending fragments from rendering points */ @@ -885,7 +885,7 @@ _swrast_flush( GLcontext *ctx ) } void -_swrast_render_primitive( GLcontext *ctx, GLenum prim ) +_swrast_render_primitive( struct gl_context *ctx, GLenum prim ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); if (swrast->Primitive == GL_POINTS && prim != GL_POINTS) { @@ -896,7 +896,7 @@ _swrast_render_primitive( GLcontext *ctx, GLenum prim ) void -_swrast_render_start( GLcontext *ctx ) +_swrast_render_start( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); if (swrast->Driver.SpanRenderStart) @@ -905,7 +905,7 @@ _swrast_render_start( GLcontext *ctx ) } void -_swrast_render_finish( GLcontext *ctx ) +_swrast_render_finish( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); if (swrast->Driver.SpanRenderFinish) @@ -918,7 +918,7 @@ _swrast_render_finish( GLcontext *ctx ) #define SWRAST_DEBUG_VERTICES 0 void -_swrast_print_vertex( GLcontext *ctx, const SWvertex *v ) +_swrast_print_vertex( struct gl_context *ctx, const SWvertex *v ) { GLuint i; diff --git a/src/mesa/swrast/s_context.h b/src/mesa/swrast/s_context.h index 6d81f74768f..5dbdd609adb 100644 --- a/src/mesa/swrast/s_context.h +++ b/src/mesa/swrast/s_context.h @@ -50,26 +50,26 @@ #include "s_span.h" -typedef void (*texture_sample_func)(GLcontext *ctx, +typedef void (*texture_sample_func)(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]); -typedef void (_ASMAPIP blend_func)( GLcontext *ctx, GLuint n, +typedef void (_ASMAPIP blend_func)( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType); -typedef void (*swrast_point_func)( GLcontext *ctx, const SWvertex *); +typedef void (*swrast_point_func)( struct gl_context *ctx, const SWvertex *); -typedef void (*swrast_line_func)( GLcontext *ctx, +typedef void (*swrast_line_func)( struct gl_context *ctx, const SWvertex *, const SWvertex *); -typedef void (*swrast_tri_func)( GLcontext *ctx, const SWvertex *, +typedef void (*swrast_tri_func)( struct gl_context *ctx, const SWvertex *, const SWvertex *, const SWvertex *); -typedef void (*validate_texture_image_func)(GLcontext *ctx, +typedef void (*validate_texture_image_func)(struct gl_context *ctx, struct gl_texture_object *texObj, GLuint face, GLuint level); @@ -160,7 +160,7 @@ typedef struct GLenum Primitive; /* current primitive being drawn (ala glBegin) */ GLboolean SpecularVertexAdd; /**< Add specular/secondary color per vertex */ - void (*InvalidateState)( GLcontext *ctx, GLbitfield new_state ); + void (*InvalidateState)( struct gl_context *ctx, GLbitfield new_state ); /** * When the NewState mask intersects these masks, we invalidate the @@ -177,9 +177,9 @@ typedef struct * Will be called when the GL state change mask intersects the above masks. */ /*@{*/ - void (*choose_point)( GLcontext * ); - void (*choose_line)( GLcontext * ); - void (*choose_triangle)( GLcontext * ); + void (*choose_point)( struct gl_context * ); + void (*choose_line)( struct gl_context * ); + void (*choose_triangle)( struct gl_context * ); /*@}*/ /** @@ -234,22 +234,22 @@ typedef struct extern void -_swrast_validate_derived( GLcontext *ctx ); +_swrast_validate_derived( struct gl_context *ctx ); extern void -_swrast_update_texture_samplers(GLcontext *ctx); +_swrast_update_texture_samplers(struct gl_context *ctx); -/** Return SWcontext for the given GLcontext */ +/** Return SWcontext for the given struct gl_context */ static INLINE SWcontext * -SWRAST_CONTEXT(GLcontext *ctx) +SWRAST_CONTEXT(struct gl_context *ctx) { return (SWcontext *) ctx->swrast_context; } /** const version of above */ static INLINE const SWcontext * -CONST_SWRAST_CONTEXT(const GLcontext *ctx) +CONST_SWRAST_CONTEXT(const struct gl_context *ctx) { return (const SWcontext *) ctx->swrast_context; } @@ -261,7 +261,7 @@ CONST_SWRAST_CONTEXT(const GLcontext *ctx) * driver's opportunity to map renderbuffers and textures. */ static INLINE void -swrast_render_start(GLcontext *ctx) +swrast_render_start(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); if (swrast->Driver.SpanRenderStart) @@ -271,7 +271,7 @@ swrast_render_start(GLcontext *ctx) /** Called after framebuffer reading/writing */ static INLINE void -swrast_render_finish(GLcontext *ctx) +swrast_render_finish(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); if (swrast->Driver.SpanRenderFinish) diff --git a/src/mesa/swrast/s_copypix.c b/src/mesa/swrast/s_copypix.c index c35494e3857..86fe3e0a891 100644 --- a/src/mesa/swrast/s_copypix.c +++ b/src/mesa/swrast/s_copypix.c @@ -96,7 +96,7 @@ regions_overlap(GLint srcx, GLint srcy, * RGBA copypixels */ static void -copy_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy, +copy_rgba_pixels(struct gl_context *ctx, GLint srcx, GLint srcy, GLint width, GLint height, GLint destx, GLint desty) { GLfloat *tmpImage, *p; @@ -205,7 +205,7 @@ copy_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy, * Z scale and bias. */ static void -scale_and_bias_z(GLcontext *ctx, GLuint width, +scale_and_bias_z(struct gl_context *ctx, GLuint width, const GLfloat depth[], GLuint z[]) { const GLuint depthMax = ctx->DrawBuffer->_DepthMax; @@ -240,7 +240,7 @@ scale_and_bias_z(GLcontext *ctx, GLuint width, * TODO: Optimize!!!! */ static void -copy_depth_pixels( GLcontext *ctx, GLint srcx, GLint srcy, +copy_depth_pixels( struct gl_context *ctx, GLint srcx, GLint srcy, GLint width, GLint height, GLint destx, GLint desty ) { @@ -334,7 +334,7 @@ copy_depth_pixels( GLcontext *ctx, GLint srcx, GLint srcy, static void -copy_stencil_pixels( GLcontext *ctx, GLint srcx, GLint srcy, +copy_stencil_pixels( struct gl_context *ctx, GLint srcx, GLint srcy, GLint width, GLint height, GLint destx, GLint desty ) { @@ -427,7 +427,7 @@ copy_stencil_pixels( GLcontext *ctx, GLint srcx, GLint srcy, * CopyPixels function. */ static void -copy_depth_stencil_pixels(GLcontext *ctx, +copy_depth_stencil_pixels(struct gl_context *ctx, const GLint srcX, const GLint srcY, const GLint width, const GLint height, const GLint destX, const GLint destY) @@ -602,7 +602,7 @@ copy_depth_stencil_pixels(GLcontext *ctx, * Try to do a fast copy pixels. */ static GLboolean -fast_copy_pixels(GLcontext *ctx, +fast_copy_pixels(struct gl_context *ctx, GLint srcX, GLint srcY, GLsizei width, GLsizei height, GLint dstX, GLint dstY, GLenum type) { @@ -684,7 +684,7 @@ fast_copy_pixels(GLcontext *ctx, * By time we get here, all parameters will have been error-checked. */ void -_swrast_CopyPixels( GLcontext *ctx, +_swrast_CopyPixels( struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint destx, GLint desty, GLenum type ) { diff --git a/src/mesa/swrast/s_depth.c b/src/mesa/swrast/s_depth.c index f952fd6baa7..58440cb97bd 100644 --- a/src/mesa/swrast/s_depth.c +++ b/src/mesa/swrast/s_depth.c @@ -40,7 +40,7 @@ * Return: number of fragments which pass the test. */ static GLuint -depth_test_span16( GLcontext *ctx, GLuint n, +depth_test_span16( struct gl_context *ctx, GLuint n, GLushort zbuffer[], const GLuint z[], GLubyte mask[] ) { GLuint passed = 0; @@ -269,7 +269,7 @@ depth_test_span16( GLcontext *ctx, GLuint n, static GLuint -depth_test_span32( GLcontext *ctx, GLuint n, +depth_test_span32( struct gl_context *ctx, GLuint n, GLuint zbuffer[], const GLuint z[], GLubyte mask[] ) { GLuint passed = 0; @@ -506,7 +506,7 @@ depth_test_span32( GLcontext *ctx, GLuint n, * [0,1] range. */ void -_swrast_depth_clamp_span( GLcontext *ctx, SWspan *span ) +_swrast_depth_clamp_span( struct gl_context *ctx, SWspan *span ) { struct gl_framebuffer *fb = ctx->DrawBuffer; const GLuint count = span->end; @@ -552,7 +552,7 @@ _swrast_depth_clamp_span( GLcontext *ctx, SWspan *span ) * Apply depth test to span of fragments. */ static GLuint -depth_test_span( GLcontext *ctx, SWspan *span) +depth_test_span( struct gl_context *ctx, SWspan *span) { struct gl_framebuffer *fb = ctx->DrawBuffer; struct gl_renderbuffer *rb = fb->_DepthBuffer; @@ -610,7 +610,7 @@ depth_test_span( GLcontext *ctx, SWspan *span) * Do depth testing for an array of fragments at assorted locations. */ static void -direct_depth_test_pixels16(GLcontext *ctx, GLushort *zStart, GLuint stride, +direct_depth_test_pixels16(struct gl_context *ctx, GLushort *zStart, GLuint stride, GLuint n, const GLint x[], const GLint y[], const GLuint z[], GLubyte mask[] ) { @@ -856,7 +856,7 @@ direct_depth_test_pixels16(GLcontext *ctx, GLushort *zStart, GLuint stride, * Do depth testing for an array of fragments with direct access to zbuffer. */ static void -direct_depth_test_pixels32(GLcontext *ctx, GLuint *zStart, GLuint stride, +direct_depth_test_pixels32(struct gl_context *ctx, GLuint *zStart, GLuint stride, GLuint n, const GLint x[], const GLint y[], const GLuint z[], GLubyte mask[] ) { @@ -1100,7 +1100,7 @@ direct_depth_test_pixels32(GLcontext *ctx, GLuint *zStart, GLuint stride, static GLuint -depth_test_pixels( GLcontext *ctx, SWspan *span ) +depth_test_pixels( struct gl_context *ctx, SWspan *span ) { struct gl_framebuffer *fb = ctx->DrawBuffer; struct gl_renderbuffer *rb = fb->_DepthBuffer; @@ -1150,7 +1150,7 @@ depth_test_pixels( GLcontext *ctx, SWspan *span ) * \return approx number of pixels that passed (only zero is reliable) */ GLuint -_swrast_depth_test_span( GLcontext *ctx, SWspan *span) +_swrast_depth_test_span( struct gl_context *ctx, SWspan *span) { if (span->arrayMask & SPAN_XY) return depth_test_pixels(ctx, span); @@ -1167,7 +1167,7 @@ _swrast_depth_test_span( GLcontext *ctx, SWspan *span) * \return GL_TRUE if any fragments pass, GL_FALSE if no fragments pass */ GLboolean -_swrast_depth_bounds_test( GLcontext *ctx, SWspan *span ) +_swrast_depth_bounds_test( struct gl_context *ctx, SWspan *span ) { struct gl_framebuffer *fb = ctx->DrawBuffer; struct gl_renderbuffer *rb = fb->_DepthBuffer; @@ -1252,7 +1252,7 @@ _swrast_depth_bounds_test( GLcontext *ctx, SWspan *span ) * _swrast_ReadPixels. */ void -_swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_depth_span_float( struct gl_context *ctx, struct gl_renderbuffer *rb, GLint n, GLint x, GLint y, GLfloat depth[] ) { const GLfloat scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; @@ -1318,7 +1318,7 @@ _swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb, * As above, but return 32-bit GLuint values. */ void -_swrast_read_depth_span_uint( GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_depth_span_uint( struct gl_context *ctx, struct gl_renderbuffer *rb, GLint n, GLint x, GLint y, GLuint depth[] ) { GLuint depthBits; @@ -1400,7 +1400,7 @@ _swrast_read_depth_span_uint( GLcontext *ctx, struct gl_renderbuffer *rb, * Clear the given z/depth renderbuffer. */ void -_swrast_clear_depth_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ) +_swrast_clear_depth_buffer( struct gl_context *ctx, struct gl_renderbuffer *rb ) { GLuint clearValue; GLint x, y, width, height; diff --git a/src/mesa/swrast/s_depth.h b/src/mesa/swrast/s_depth.h index 878d242f5e5..e5dae7ef865 100644 --- a/src/mesa/swrast/s_depth.h +++ b/src/mesa/swrast/s_depth.h @@ -32,27 +32,27 @@ extern GLuint -_swrast_depth_test_span( GLcontext *ctx, SWspan *span); +_swrast_depth_test_span( struct gl_context *ctx, SWspan *span); extern void -_swrast_depth_clamp_span( GLcontext *ctx, SWspan *span ); +_swrast_depth_clamp_span( struct gl_context *ctx, SWspan *span ); extern GLboolean -_swrast_depth_bounds_test( GLcontext *ctx, SWspan *span ); +_swrast_depth_bounds_test( struct gl_context *ctx, SWspan *span ); extern void -_swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_depth_span_float( struct gl_context *ctx, struct gl_renderbuffer *rb, GLint n, GLint x, GLint y, GLfloat depth[] ); extern void -_swrast_read_depth_span_uint( GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_depth_span_uint( struct gl_context *ctx, struct gl_renderbuffer *rb, GLint n, GLint x, GLint y, GLuint depth[] ); extern void -_swrast_clear_depth_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ); +_swrast_clear_depth_buffer( struct gl_context *ctx, struct gl_renderbuffer *rb ); #endif diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c index 7778820c5cd..4e7cd9414fd 100644 --- a/src/mesa/swrast/s_drawpix.c +++ b/src/mesa/swrast/s_drawpix.c @@ -44,7 +44,7 @@ * Return: GL_TRUE if success, GL_FALSE if slow path must be used instead */ static GLboolean -fast_draw_rgba_pixels(GLcontext *ctx, GLint x, GLint y, +fast_draw_rgba_pixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *userUnpack, @@ -310,7 +310,7 @@ fast_draw_rgba_pixels(GLcontext *ctx, GLint x, GLint y, * Draw stencil image. */ static void -draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y, +draw_stencil_pixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -354,7 +354,7 @@ draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y, * Draw depth image. */ static void -draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, +draw_depth_pixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -460,7 +460,7 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, * Draw RGBA image. */ static void -draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y, +draw_rgba_pixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, @@ -557,7 +557,7 @@ draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y, * color buffer(s). */ static void -draw_depth_stencil_pixels(GLcontext *ctx, GLint x, GLint y, +draw_depth_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels) @@ -687,7 +687,7 @@ draw_depth_stencil_pixels(GLcontext *ctx, GLint x, GLint y, * By time we get here, all error checking will have been done. */ void -_swrast_DrawPixels( GLcontext *ctx, +_swrast_DrawPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, diff --git a/src/mesa/swrast/s_feedback.c b/src/mesa/swrast/s_feedback.c index 6ac8ac73b0b..00f92d463c3 100644 --- a/src/mesa/swrast/s_feedback.c +++ b/src/mesa/swrast/s_feedback.c @@ -34,7 +34,7 @@ static void -feedback_vertex(GLcontext * ctx, const SWvertex * v, const SWvertex * pv) +feedback_vertex(struct gl_context * ctx, const SWvertex * v, const SWvertex * pv) { GLfloat win[4]; const GLfloat *vtc = v->attrib[FRAG_ATTRIB_TEX0]; @@ -53,7 +53,7 @@ feedback_vertex(GLcontext * ctx, const SWvertex * v, const SWvertex * pv) * Put triangle in feedback buffer. */ void -_swrast_feedback_triangle(GLcontext *ctx, const SWvertex *v0, +_swrast_feedback_triangle(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2) { if (!_swrast_culltriangle(ctx, v0, v1, v2)) { @@ -75,7 +75,7 @@ _swrast_feedback_triangle(GLcontext *ctx, const SWvertex *v0, void -_swrast_feedback_line(GLcontext *ctx, const SWvertex *v0, +_swrast_feedback_line(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1) { GLenum token = GL_LINE_TOKEN; @@ -100,7 +100,7 @@ _swrast_feedback_line(GLcontext *ctx, const SWvertex *v0, void -_swrast_feedback_point(GLcontext *ctx, const SWvertex *v) +_swrast_feedback_point(struct gl_context *ctx, const SWvertex *v) { _mesa_feedback_token(ctx, (GLfloat) (GLint) GL_POINT_TOKEN); feedback_vertex(ctx, v, v); @@ -108,7 +108,7 @@ _swrast_feedback_point(GLcontext *ctx, const SWvertex *v) void -_swrast_select_triangle(GLcontext *ctx, const SWvertex *v0, +_swrast_select_triangle(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2) { if (!_swrast_culltriangle(ctx, v0, v1, v2)) { @@ -122,7 +122,7 @@ _swrast_select_triangle(GLcontext *ctx, const SWvertex *v0, void -_swrast_select_line(GLcontext *ctx, const SWvertex *v0, const SWvertex *v1) +_swrast_select_line(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1) { const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF; _mesa_update_hitflag( ctx, v0->attrib[FRAG_ATTRIB_WPOS][2] * zs ); @@ -131,7 +131,7 @@ _swrast_select_line(GLcontext *ctx, const SWvertex *v0, const SWvertex *v1) void -_swrast_select_point(GLcontext *ctx, const SWvertex *v) +_swrast_select_point(struct gl_context *ctx, const SWvertex *v) { const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF; _mesa_update_hitflag( ctx, v->attrib[FRAG_ATTRIB_WPOS][2] * zs ); diff --git a/src/mesa/swrast/s_feedback.h b/src/mesa/swrast/s_feedback.h index 9feab75dbb0..6bfd49735cc 100644 --- a/src/mesa/swrast/s_feedback.h +++ b/src/mesa/swrast/s_feedback.h @@ -31,20 +31,20 @@ #include "swrast.h" -extern void _swrast_feedback_point( GLcontext *ctx, const SWvertex *v ); +extern void _swrast_feedback_point( struct gl_context *ctx, const SWvertex *v ); -extern void _swrast_feedback_line( GLcontext *ctx, +extern void _swrast_feedback_line( struct gl_context *ctx, const SWvertex *v1, const SWvertex *v2 ); -extern void _swrast_feedback_triangle( GLcontext *ctx, const SWvertex *v0, +extern void _swrast_feedback_triangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ); -extern void _swrast_select_point( GLcontext *ctx, const SWvertex *v ); +extern void _swrast_select_point( struct gl_context *ctx, const SWvertex *v ); -extern void _swrast_select_line( GLcontext *ctx, +extern void _swrast_select_line( struct gl_context *ctx, const SWvertex *v1, const SWvertex *v2 ); -extern void _swrast_select_triangle( GLcontext *ctx, const SWvertex *v0, +extern void _swrast_select_triangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ); #endif diff --git a/src/mesa/swrast/s_fog.c b/src/mesa/swrast/s_fog.c index 689500a613a..d808e2b2a2b 100644 --- a/src/mesa/swrast/s_fog.c +++ b/src/mesa/swrast/s_fog.c @@ -35,7 +35,7 @@ * Used to convert current raster distance to a fog factor in [0,1]. */ GLfloat -_swrast_z_to_fogfactor(GLcontext *ctx, GLfloat z) +_swrast_z_to_fogfactor(struct gl_context *ctx, GLfloat z) { GLfloat d, f; @@ -129,7 +129,7 @@ else { \ * _PreferPixelFog should be in sync with that state! */ void -_swrast_fog_rgba_span( const GLcontext *ctx, SWspan *span ) +_swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span ) { const SWcontext *swrast = CONST_SWRAST_CONTEXT(ctx); GLfloat rFog, gFog, bFog; diff --git a/src/mesa/swrast/s_fog.h b/src/mesa/swrast/s_fog.h index a496746d106..ebc3513f496 100644 --- a/src/mesa/swrast/s_fog.h +++ b/src/mesa/swrast/s_fog.h @@ -33,9 +33,9 @@ extern GLfloat -_swrast_z_to_fogfactor(GLcontext *ctx, GLfloat z); +_swrast_z_to_fogfactor(struct gl_context *ctx, GLfloat z); extern void -_swrast_fog_rgba_span( const GLcontext *ctx, SWspan *span ); +_swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span ); #endif diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c index 9facb44d9bf..e421d218d79 100644 --- a/src/mesa/swrast/s_fragprog.c +++ b/src/mesa/swrast/s_fragprog.c @@ -62,7 +62,7 @@ swizzle_texel(const GLfloat texel[4], GLfloat colorOut[4], GLuint swizzle) * Called via machine->FetchTexelLod() */ static void -fetch_texel_lod( GLcontext *ctx, const GLfloat texcoord[4], GLfloat lambda, +fetch_texel_lod( struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lambda, GLuint unit, GLfloat color[4] ) { const struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current; @@ -92,7 +92,7 @@ fetch_texel_lod( GLcontext *ctx, const GLfloat texcoord[4], GLfloat lambda, * otherwise zero. */ static void -fetch_texel_deriv( GLcontext *ctx, const GLfloat texcoord[4], +fetch_texel_deriv( struct gl_context *ctx, const GLfloat texcoord[4], const GLfloat texdx[4], const GLfloat texdy[4], GLfloat lodBias, GLuint unit, GLfloat color[4] ) { @@ -140,7 +140,7 @@ fetch_texel_deriv( GLcontext *ctx, const GLfloat texcoord[4], * \param col which element (column) of the span we'll operate on */ static void -init_machine(GLcontext *ctx, struct gl_program_machine *machine, +init_machine(struct gl_context *ctx, struct gl_program_machine *machine, const struct gl_fragment_program *program, const SWspan *span, GLuint col) { @@ -194,7 +194,7 @@ init_machine(GLcontext *ctx, struct gl_program_machine *machine, * Run fragment program on the pixels in span from 'start' to 'end' - 1. */ static void -run_program(GLcontext *ctx, SWspan *span, GLuint start, GLuint end) +run_program(struct gl_context *ctx, SWspan *span, GLuint start, GLuint end) { SWcontext *swrast = SWRAST_CONTEXT(ctx); const struct gl_fragment_program *program = ctx->FragmentProgram._Current; @@ -253,7 +253,7 @@ run_program(GLcontext *ctx, SWspan *span, GLuint start, GLuint end) * in the given span. */ void -_swrast_exec_fragment_program( GLcontext *ctx, SWspan *span ) +_swrast_exec_fragment_program( struct gl_context *ctx, SWspan *span ) { const struct gl_fragment_program *program = ctx->FragmentProgram._Current; diff --git a/src/mesa/swrast/s_fragprog.h b/src/mesa/swrast/s_fragprog.h index 92b9d01e173..689d3fc82e4 100644 --- a/src/mesa/swrast/s_fragprog.h +++ b/src/mesa/swrast/s_fragprog.h @@ -32,7 +32,7 @@ extern void -_swrast_exec_fragment_program(GLcontext *ctx, SWspan *span); +_swrast_exec_fragment_program(struct gl_context *ctx, SWspan *span); #endif /* S_FRAGPROG_H */ diff --git a/src/mesa/swrast/s_lines.c b/src/mesa/swrast/s_lines.c index 7db5af4ae1c..95a2a5d96fc 100644 --- a/src/mesa/swrast/s_lines.c +++ b/src/mesa/swrast/s_lines.c @@ -38,7 +38,7 @@ * Init the mask[] array to implement a line stipple. */ static void -compute_stipple_mask( GLcontext *ctx, GLuint len, GLubyte mask[] ) +compute_stipple_mask( struct gl_context *ctx, GLuint len, GLubyte mask[] ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLuint i; @@ -60,7 +60,7 @@ compute_stipple_mask( GLcontext *ctx, GLuint len, GLubyte mask[] ) * To draw a wide line we can simply redraw the span N times, side by side. */ static void -draw_wide_line( GLcontext *ctx, SWspan *span, GLboolean xMajor ) +draw_wide_line( struct gl_context *ctx, SWspan *span, GLboolean xMajor ) { const GLint width = (GLint) CLAMP(ctx->Line.Width, ctx->Const.MinLineWidth, @@ -160,7 +160,7 @@ draw_wide_line( GLcontext *ctx, SWspan *span, GLboolean xMajor ) void -_swrast_add_spec_terms_line(GLcontext *ctx, +_swrast_add_spec_terms_line(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1) { SWvertex *ncv0 = (SWvertex *)v0; @@ -222,7 +222,7 @@ do { \ * tests to this code. */ void -_swrast_choose_line( GLcontext *ctx ) +_swrast_choose_line( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLboolean specular = (ctx->Fog.ColorSumEnabled || diff --git a/src/mesa/swrast/s_lines.h b/src/mesa/swrast/s_lines.h index 22979a02b60..a4c98a8558b 100644 --- a/src/mesa/swrast/s_lines.h +++ b/src/mesa/swrast/s_lines.h @@ -30,10 +30,10 @@ #include "swrast.h" void -_swrast_choose_line( GLcontext *ctx ); +_swrast_choose_line( struct gl_context *ctx ); void -_swrast_add_spec_terms_line( GLcontext *ctx, +_swrast_add_spec_terms_line( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1 ); diff --git a/src/mesa/swrast/s_linetemp.h b/src/mesa/swrast/s_linetemp.h index 033431df232..f9f2d293412 100644 --- a/src/mesa/swrast/s_linetemp.h +++ b/src/mesa/swrast/s_linetemp.h @@ -63,7 +63,7 @@ static void -NAME( GLcontext *ctx, const SWvertex *vert0, const SWvertex *vert1 ) +NAME( struct gl_context *ctx, const SWvertex *vert0, const SWvertex *vert1 ) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); SWspan span; diff --git a/src/mesa/swrast/s_logic.c b/src/mesa/swrast/s_logic.c index c36a16e665c..b93b4b7af30 100644 --- a/src/mesa/swrast/s_logic.c +++ b/src/mesa/swrast/s_logic.c @@ -158,7 +158,7 @@ do { \ static INLINE void -logicop_uint1(GLcontext *ctx, GLuint n, GLuint src[], const GLuint dest[], +logicop_uint1(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], const GLubyte mask[]) { LOGIC_OP_LOOP(ctx->Color.LogicOp, 1); @@ -166,7 +166,7 @@ logicop_uint1(GLcontext *ctx, GLuint n, GLuint src[], const GLuint dest[], static INLINE void -logicop_uint2(GLcontext *ctx, GLuint n, GLuint src[], const GLuint dest[], +logicop_uint2(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], const GLubyte mask[]) { LOGIC_OP_LOOP(ctx->Color.LogicOp, 2); @@ -174,7 +174,7 @@ logicop_uint2(GLcontext *ctx, GLuint n, GLuint src[], const GLuint dest[], static INLINE void -logicop_uint4(GLcontext *ctx, GLuint n, GLuint src[], const GLuint dest[], +logicop_uint4(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], const GLubyte mask[]) { LOGIC_OP_LOOP(ctx->Color.LogicOp, 4); @@ -188,7 +188,7 @@ logicop_uint4(GLcontext *ctx, GLuint n, GLuint src[], const GLuint dest[], * pixel coordinates. */ void -_swrast_logicop_rgba_span(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span) { void *rbPixels; diff --git a/src/mesa/swrast/s_logic.h b/src/mesa/swrast/s_logic.h index d609513348d..95c7fe3e150 100644 --- a/src/mesa/swrast/s_logic.h +++ b/src/mesa/swrast/s_logic.h @@ -31,7 +31,7 @@ #include "s_span.h" extern void -_swrast_logicop_rgba_span(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span); diff --git a/src/mesa/swrast/s_masking.c b/src/mesa/swrast/s_masking.c index e38d90f199e..2e68f8c4bd7 100644 --- a/src/mesa/swrast/s_masking.c +++ b/src/mesa/swrast/s_masking.c @@ -40,7 +40,7 @@ * Apply the color mask to a span of rgba values. */ void -_swrast_mask_rgba_span(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_mask_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span, GLuint buf) { const GLuint n = span->end; diff --git a/src/mesa/swrast/s_masking.h b/src/mesa/swrast/s_masking.h index cb000da0fd8..3712c82163b 100644 --- a/src/mesa/swrast/s_masking.h +++ b/src/mesa/swrast/s_masking.h @@ -32,7 +32,7 @@ extern void -_swrast_mask_rgba_span(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_mask_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span, GLuint buf); #endif diff --git a/src/mesa/swrast/s_points.c b/src/mesa/swrast/s_points.c index 12431662c47..06c6ef4ef7a 100644 --- a/src/mesa/swrast/s_points.c +++ b/src/mesa/swrast/s_points.c @@ -52,7 +52,7 @@ * Must also clamp to user-defined range and implmentation limits. */ static INLINE GLfloat -get_size(const GLcontext *ctx, const SWvertex *vert, GLboolean smoothed) +get_size(const struct gl_context *ctx, const SWvertex *vert, GLboolean smoothed) { GLfloat size; @@ -80,7 +80,7 @@ get_size(const GLcontext *ctx, const SWvertex *vert, GLboolean smoothed) * Draw a point sprite */ static void -sprite_point(GLcontext *ctx, const SWvertex *vert) +sprite_point(struct gl_context *ctx, const SWvertex *vert) { SWcontext *swrast = SWRAST_CONTEXT(ctx); SWspan span; @@ -240,7 +240,7 @@ sprite_point(GLcontext *ctx, const SWvertex *vert) * Draw smooth/antialiased point. RGB or CI mode. */ static void -smooth_point(GLcontext *ctx, const SWvertex *vert) +smooth_point(struct gl_context *ctx, const SWvertex *vert) { SWcontext *swrast = SWRAST_CONTEXT(ctx); SWspan span; @@ -360,7 +360,7 @@ smooth_point(GLcontext *ctx, const SWvertex *vert) * Draw large (size >= 1) non-AA point. RGB or CI mode. */ static void -large_point(GLcontext *ctx, const SWvertex *vert) +large_point(struct gl_context *ctx, const SWvertex *vert) { SWcontext *swrast = SWRAST_CONTEXT(ctx); SWspan span; @@ -449,7 +449,7 @@ large_point(GLcontext *ctx, const SWvertex *vert) * Draw size=1, single-pixel point */ static void -pixel_point(GLcontext *ctx, const SWvertex *vert) +pixel_point(struct gl_context *ctx, const SWvertex *vert) { SWcontext *swrast = SWRAST_CONTEXT(ctx); /* @@ -513,7 +513,7 @@ pixel_point(GLcontext *ctx, const SWvertex *vert) * primary color. */ void -_swrast_add_spec_terms_point(GLcontext *ctx, const SWvertex *v0) +_swrast_add_spec_terms_point(struct gl_context *ctx, const SWvertex *v0) { SWvertex *ncv0 = (SWvertex *) v0; /* cast away const */ GLfloat rSum, gSum, bSum; @@ -539,7 +539,7 @@ _swrast_add_spec_terms_point(GLcontext *ctx, const SWvertex *v0) * Examine current state to determine which point drawing function to use. */ void -_swrast_choose_point(GLcontext *ctx) +_swrast_choose_point(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLfloat size = CLAMP(ctx->Point.Size, diff --git a/src/mesa/swrast/s_points.h b/src/mesa/swrast/s_points.h index 9e39c601efb..0b6550e8018 100644 --- a/src/mesa/swrast/s_points.h +++ b/src/mesa/swrast/s_points.h @@ -30,10 +30,10 @@ #include "swrast.h" extern void -_swrast_choose_point( GLcontext *ctx ); +_swrast_choose_point( struct gl_context *ctx ); extern void -_swrast_add_spec_terms_point( GLcontext *ctx, +_swrast_add_spec_terms_point( struct gl_context *ctx, const SWvertex *v0 ); #endif diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index b0a3d36420a..55fa60749e8 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -43,7 +43,7 @@ * Read pixels for format=GL_DEPTH_COMPONENT. */ static void -read_depth_pixels( GLcontext *ctx, +read_depth_pixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum type, GLvoid *pixels, @@ -139,7 +139,7 @@ read_depth_pixels( GLcontext *ctx, * Read pixels for format=GL_STENCIL_INDEX. */ static void -read_stencil_pixels( GLcontext *ctx, +read_stencil_pixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum type, GLvoid *pixels, @@ -177,7 +177,7 @@ read_stencil_pixels( GLcontext *ctx, * \return GL_TRUE if success, GL_FALSE if unable to do the readpixels */ static GLboolean -fast_read_rgba_pixels( GLcontext *ctx, +fast_read_rgba_pixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -297,7 +297,7 @@ adjust_colors(const struct gl_framebuffer *fb, GLuint n, GLfloat rgba[][4]) * Read R, G, B, A, RGB, L, or LA pixels. */ static void -read_rgba_pixels( GLcontext *ctx, +read_rgba_pixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels, @@ -362,7 +362,7 @@ read_rgba_pixels( GLcontext *ctx, * depth and stencil buffers really exist. */ static void -read_depth_stencil_pixels(GLcontext *ctx, +read_depth_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum type, GLvoid *pixels, @@ -453,7 +453,7 @@ read_depth_stencil_pixels(GLcontext *ctx, * By time we get here, all error checking will have been done. */ void -_swrast_ReadPixels( GLcontext *ctx, +_swrast_ReadPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *packing, diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c index 28c82990e08..3240b135774 100644 --- a/src/mesa/swrast/s_span.c +++ b/src/mesa/swrast/s_span.c @@ -57,7 +57,7 @@ * and glBitmap. */ void -_swrast_span_default_attribs(GLcontext *ctx, SWspan *span) +_swrast_span_default_attribs(struct gl_context *ctx, SWspan *span) { GLchan r, g, b, a; /* Z*/ @@ -163,7 +163,7 @@ _swrast_span_default_attribs(GLcontext *ctx, SWspan *span) * should have computed attrStart/Step values for FRAG_ATTRIB_WPOS[3]! */ static INLINE void -interpolate_active_attribs(GLcontext *ctx, SWspan *span, GLbitfield attrMask) +interpolate_active_attribs(struct gl_context *ctx, SWspan *span, GLbitfield attrMask) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -210,7 +210,7 @@ interpolate_active_attribs(GLcontext *ctx, SWspan *span, GLbitfield attrMask) * color array. */ static INLINE void -interpolate_int_colors(GLcontext *ctx, SWspan *span) +interpolate_int_colors(struct gl_context *ctx, SWspan *span) { const GLuint n = span->end; GLuint i; @@ -370,7 +370,7 @@ interpolate_float_colors(SWspan *span) * Fill in the span.zArray array from the span->z, zStep values. */ void -_swrast_span_interpolate_z( const GLcontext *ctx, SWspan *span ) +_swrast_span_interpolate_z( const struct gl_context *ctx, SWspan *span ) { const GLuint n = span->end; GLuint i; @@ -460,7 +460,7 @@ _swrast_compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy, * texels with (s/q, t/q, r/q). */ static void -interpolate_texcoords(GLcontext *ctx, SWspan *span) +interpolate_texcoords(struct gl_context *ctx, SWspan *span) { const GLuint maxUnit = (ctx->Texture._EnabledCoordUnits > 1) ? ctx->Const.MaxTextureUnits : 1; @@ -601,7 +601,7 @@ interpolate_texcoords(GLcontext *ctx, SWspan *span) * Fill in the arrays->attribs[FRAG_ATTRIB_WPOS] array. */ static INLINE void -interpolate_wpos(GLcontext *ctx, SWspan *span) +interpolate_wpos(struct gl_context *ctx, SWspan *span) { GLfloat (*wpos)[4] = span->array->attribs[FRAG_ATTRIB_WPOS]; GLuint i; @@ -635,7 +635,7 @@ interpolate_wpos(GLcontext *ctx, SWspan *span) * Apply the current polygon stipple pattern to a span of pixels. */ static INLINE void -stipple_polygon_span(GLcontext *ctx, SWspan *span) +stipple_polygon_span(struct gl_context *ctx, SWspan *span) { GLubyte *mask = span->array->mask; @@ -680,7 +680,7 @@ stipple_polygon_span(GLcontext *ctx, SWspan *span) * GL_FALSE nothing visible */ static INLINE GLuint -clip_span( GLcontext *ctx, SWspan *span ) +clip_span( struct gl_context *ctx, SWspan *span ) { const GLint xmin = ctx->DrawBuffer->_Xmin; const GLint xmax = ctx->DrawBuffer->_Xmax; @@ -807,7 +807,7 @@ clip_span( GLcontext *ctx, SWspan *span ) * Result is float color array (FRAG_ATTRIB_COL0). */ static INLINE void -add_specular(GLcontext *ctx, SWspan *span) +add_specular(struct gl_context *ctx, SWspan *span) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLubyte *mask = span->array->mask; @@ -951,7 +951,7 @@ convert_color_type(SWspan *span, GLenum newType, GLuint output) * Apply fragment shader, fragment program or normal texturing to span. */ static INLINE void -shade_texture_span(GLcontext *ctx, SWspan *span) +shade_texture_span(struct gl_context *ctx, SWspan *span) { GLbitfield inputsRead; @@ -1029,7 +1029,7 @@ shade_texture_span(GLcontext *ctx, SWspan *span) * to their original values before returning. */ void -_swrast_write_rgba_span( GLcontext *ctx, SWspan *span) +_swrast_write_rgba_span( struct gl_context *ctx, SWspan *span) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLuint *colorMask = (GLuint *) ctx->Color.ColorMask; @@ -1304,7 +1304,7 @@ end: * \param rgba the returned colors */ void -_swrast_read_rgba_span( GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_rgba_span( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, GLenum dstType, GLvoid *rgba) { @@ -1373,7 +1373,7 @@ _swrast_read_rgba_span( GLcontext *ctx, struct gl_renderbuffer *rb, * values array. */ void -_swrast_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_get_values(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values, GLuint valueSize) { @@ -1409,7 +1409,7 @@ _swrast_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, * \param valueSize size of each value (pixel) in bytes */ void -_swrast_put_row(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_put_row(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const GLvoid *values, GLuint valueSize) { @@ -1444,7 +1444,7 @@ _swrast_put_row(GLcontext *ctx, struct gl_renderbuffer *rb, * \param valueSize size of each value (pixel) in bytes */ void -_swrast_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_get_row(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, GLvoid *values, GLuint valueSize) { @@ -1479,7 +1479,7 @@ _swrast_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, * \return pointer to the colors we read. */ void * -_swrast_get_dest_rgba(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_get_dest_rgba(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span) { const GLuint pixelSize = RGBA_PIXEL_SIZE(span->array->ChanType); diff --git a/src/mesa/swrast/s_span.h b/src/mesa/swrast/s_span.h index aaf1fec2a8b..18e275ec8ab 100644 --- a/src/mesa/swrast/s_span.h +++ b/src/mesa/swrast/s_span.h @@ -176,10 +176,10 @@ do { \ extern void -_swrast_span_default_attribs(GLcontext *ctx, SWspan *span); +_swrast_span_default_attribs(struct gl_context *ctx, SWspan *span); extern void -_swrast_span_interpolate_z( const GLcontext *ctx, SWspan *span ); +_swrast_span_interpolate_z( const struct gl_context *ctx, SWspan *span ); extern GLfloat _swrast_compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy, @@ -188,31 +188,31 @@ _swrast_compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy, extern void -_swrast_write_rgba_span( GLcontext *ctx, SWspan *span); +_swrast_write_rgba_span( struct gl_context *ctx, SWspan *span); extern void -_swrast_read_rgba_span(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, GLenum type, GLvoid *rgba); extern void -_swrast_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_get_values(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values, GLuint valueSize); extern void -_swrast_put_row(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_put_row(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const GLvoid *values, GLuint valueSize); extern void -_swrast_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_get_row(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, GLvoid *values, GLuint valueSize); extern void * -_swrast_get_dest_rgba(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_get_dest_rgba(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span); #endif diff --git a/src/mesa/swrast/s_spantemp.h b/src/mesa/swrast/s_spantemp.h index 2948a90f6bb..8a9485085ef 100644 --- a/src/mesa/swrast/s_spantemp.h +++ b/src/mesa/swrast/s_spantemp.h @@ -51,7 +51,7 @@ static void -NAME(get_row)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(get_row)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values ) { #ifdef SPAN_VARS @@ -69,7 +69,7 @@ NAME(get_row)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(get_values)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(get_values)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values ) { #ifdef SPAN_VARS @@ -86,7 +86,7 @@ NAME(get_values)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_row)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte mask[] ) { @@ -115,7 +115,7 @@ NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_row_rgb)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_row_rgb)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte mask[] ) { @@ -140,7 +140,7 @@ NAME(put_row_rgb)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_mono_row)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *value, const GLubyte mask[] ) { @@ -169,7 +169,7 @@ NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_values)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_values)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *values, const GLubyte mask[] ) { @@ -190,7 +190,7 @@ NAME(put_values)( GLcontext *ctx, struct gl_renderbuffer *rb, static void -NAME(put_mono_values)( GLcontext *ctx, struct gl_renderbuffer *rb, +NAME(put_mono_values)( struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], const void *value, const GLubyte mask[] ) { diff --git a/src/mesa/swrast/s_stencil.c b/src/mesa/swrast/s_stencil.c index aa74b21ee80..5bec71c057b 100644 --- a/src/mesa/swrast/s_stencil.c +++ b/src/mesa/swrast/s_stencil.c @@ -61,7 +61,7 @@ ENDIF * Output: stencil - modified values */ static void -apply_stencil_op( const GLcontext *ctx, GLenum oper, GLuint face, +apply_stencil_op( const struct gl_context *ctx, GLenum oper, GLuint face, GLuint n, GLstencil stencil[], const GLubyte mask[] ) { const GLstencil ref = ctx->Stencil.Ref[face]; @@ -225,7 +225,7 @@ apply_stencil_op( const GLcontext *ctx, GLenum oper, GLuint face, * Return: GL_FALSE = all pixels failed, GL_TRUE = zero or more pixels passed. */ static GLboolean -do_stencil_test( GLcontext *ctx, GLuint face, GLuint n, GLstencil stencil[], +do_stencil_test( struct gl_context *ctx, GLuint face, GLuint n, GLstencil stencil[], GLubyte mask[] ) { GLubyte fail[MAX_WIDTH]; @@ -418,7 +418,7 @@ compute_pass_fail_masks(GLuint n, const GLubyte origMask[], * */ static GLboolean -stencil_and_ztest_span(GLcontext *ctx, SWspan *span, GLuint face) +stencil_and_ztest_span(struct gl_context *ctx, SWspan *span, GLuint face) { struct gl_framebuffer *fb = ctx->DrawBuffer; struct gl_renderbuffer *rb = fb->_StencilBuffer; @@ -524,7 +524,7 @@ stencil_and_ztest_span(GLcontext *ctx, SWspan *span, GLuint face) * mask - array [n] of flag: 1=apply operator, 0=don't apply operator */ static void -apply_stencil_op_to_pixels( GLcontext *ctx, +apply_stencil_op_to_pixels( struct gl_context *ctx, GLuint n, const GLint x[], const GLint y[], GLenum oper, GLuint face, const GLubyte mask[] ) { @@ -698,7 +698,7 @@ apply_stencil_op_to_pixels( GLcontext *ctx, * \return GL_FALSE = all pixels failed, GL_TRUE = zero or more pixels passed. */ static GLboolean -stencil_test_pixels( GLcontext *ctx, GLuint face, GLuint n, +stencil_test_pixels( struct gl_context *ctx, GLuint face, GLuint n, const GLint x[], const GLint y[], GLubyte mask[] ) { const struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -897,7 +897,7 @@ stencil_test_pixels( GLcontext *ctx, GLuint face, GLuint n, * GL_TRUE - one or more fragments passed the testing */ static GLboolean -stencil_and_ztest_pixels( GLcontext *ctx, SWspan *span, GLuint face ) +stencil_and_ztest_pixels( struct gl_context *ctx, SWspan *span, GLuint face ) { GLubyte passMask[MAX_WIDTH], failMask[MAX_WIDTH], origMask[MAX_WIDTH]; struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -990,7 +990,7 @@ stencil_and_ztest_pixels( GLcontext *ctx, SWspan *span, GLuint face ) * GL_FALSE = all fragments failed. */ GLboolean -_swrast_stencil_and_ztest_span(GLcontext *ctx, SWspan *span) +_swrast_stencil_and_ztest_span(struct gl_context *ctx, SWspan *span) { const GLuint face = (span->facing == 0) ? 0 : ctx->Stencil._BackFace; @@ -1042,7 +1042,7 @@ clip_span(GLuint bufferWidth, GLuint bufferHeight, * Output: stencil - the array of stencil values */ void -_swrast_read_stencil_span(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_stencil_span(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint n, GLint x, GLint y, GLstencil stencil[]) { if (y < 0 || y >= (GLint) rb->Height || @@ -1079,7 +1079,7 @@ _swrast_read_stencil_span(GLcontext *ctx, struct gl_renderbuffer *rb, * stencil - the array of stencil values */ void -_swrast_write_stencil_span(GLcontext *ctx, GLint n, GLint x, GLint y, +_swrast_write_stencil_span(struct gl_context *ctx, GLint n, GLint x, GLint y, const GLstencil stencil[] ) { struct gl_framebuffer *fb = ctx->DrawBuffer; @@ -1128,7 +1128,7 @@ _swrast_write_stencil_span(GLcontext *ctx, GLint n, GLint x, GLint y, * Clear the stencil buffer. */ void -_swrast_clear_stencil_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ) +_swrast_clear_stencil_buffer( struct gl_context *ctx, struct gl_renderbuffer *rb ) { const GLubyte stencilBits = ctx->DrawBuffer->Visual.stencilBits; const GLuint mask = ctx->Stencil.WriteMask[0]; diff --git a/src/mesa/swrast/s_stencil.h b/src/mesa/swrast/s_stencil.h index c076ebbe2a1..00f5179e046 100644 --- a/src/mesa/swrast/s_stencil.h +++ b/src/mesa/swrast/s_stencil.h @@ -33,21 +33,21 @@ extern GLboolean -_swrast_stencil_and_ztest_span(GLcontext *ctx, SWspan *span); +_swrast_stencil_and_ztest_span(struct gl_context *ctx, SWspan *span); extern void -_swrast_read_stencil_span(GLcontext *ctx, struct gl_renderbuffer *rb, +_swrast_read_stencil_span(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint n, GLint x, GLint y, GLstencil stencil[]); extern void -_swrast_write_stencil_span( GLcontext *ctx, GLint n, GLint x, GLint y, +_swrast_write_stencil_span( struct gl_context *ctx, GLint n, GLint x, GLint y, const GLstencil stencil[] ); extern void -_swrast_clear_stencil_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ); +_swrast_clear_stencil_buffer( struct gl_context *ctx, struct gl_renderbuffer *rb ); #endif diff --git a/src/mesa/swrast/s_texcombine.c b/src/mesa/swrast/s_texcombine.c index 2ac0aaa246d..1775810eff8 100644 --- a/src/mesa/swrast/s_texcombine.c +++ b/src/mesa/swrast/s_texcombine.c @@ -72,7 +72,7 @@ get_texel_array(SWcontext *swrast, GLuint unit) * \param rgba incoming/result fragment colors */ static void -texture_combine( GLcontext *ctx, GLuint unit, GLuint n, +texture_combine( struct gl_context *ctx, GLuint unit, GLuint n, const float4_array primary_rgba, const GLfloat *texelBuffer, GLchan (*rgbaChan)[4] ) @@ -556,7 +556,7 @@ swizzle_texels(GLuint swizzle, GLuint count, float4_array texels) * Apply texture mapping to a span of fragments. */ void -_swrast_texture_span( GLcontext *ctx, SWspan *span ) +_swrast_texture_span( struct gl_context *ctx, SWspan *span ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLfloat primary_rgba[MAX_WIDTH][4]; diff --git a/src/mesa/swrast/s_texcombine.h b/src/mesa/swrast/s_texcombine.h index 4f5dfbe1afe..5f47ebecbf1 100644 --- a/src/mesa/swrast/s_texcombine.h +++ b/src/mesa/swrast/s_texcombine.h @@ -31,6 +31,6 @@ #include "s_span.h" extern void -_swrast_texture_span( GLcontext *ctx, SWspan *span ); +_swrast_texture_span( struct gl_context *ctx, SWspan *span ); #endif diff --git a/src/mesa/swrast/s_texfilter.c b/src/mesa/swrast/s_texfilter.c index e5ffe8fa5c5..ec281776d0d 100644 --- a/src/mesa/swrast/s_texfilter.c +++ b/src/mesa/swrast/s_texfilter.c @@ -798,7 +798,7 @@ get_border_color(const struct gl_texture_object *tObj, * Return the texture sample for coordinate (s) using GL_NEAREST filter. */ static INLINE void -sample_1d_nearest(GLcontext *ctx, +sample_1d_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], GLfloat rgba[4]) @@ -822,7 +822,7 @@ sample_1d_nearest(GLcontext *ctx, * Return the texture sample for coordinate (s) using GL_LINEAR filter. */ static INLINE void -sample_1d_linear(GLcontext *ctx, +sample_1d_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], GLfloat rgba[4]) @@ -863,7 +863,7 @@ sample_1d_linear(GLcontext *ctx, static void -sample_1d_nearest_mipmap_nearest(GLcontext *ctx, +sample_1d_nearest_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -878,7 +878,7 @@ sample_1d_nearest_mipmap_nearest(GLcontext *ctx, static void -sample_1d_linear_mipmap_nearest(GLcontext *ctx, +sample_1d_linear_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -893,7 +893,7 @@ sample_1d_linear_mipmap_nearest(GLcontext *ctx, static void -sample_1d_nearest_mipmap_linear(GLcontext *ctx, +sample_1d_nearest_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -918,7 +918,7 @@ sample_1d_nearest_mipmap_linear(GLcontext *ctx, static void -sample_1d_linear_mipmap_linear(GLcontext *ctx, +sample_1d_linear_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -944,7 +944,7 @@ sample_1d_linear_mipmap_linear(GLcontext *ctx, /** Sample 1D texture, nearest filtering for both min/magnification */ static void -sample_nearest_1d( GLcontext *ctx, +sample_nearest_1d( struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4] ) @@ -960,7 +960,7 @@ sample_nearest_1d( GLcontext *ctx, /** Sample 1D texture, linear filtering for both min/magnification */ static void -sample_linear_1d( GLcontext *ctx, +sample_linear_1d( struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4] ) @@ -976,7 +976,7 @@ sample_linear_1d( GLcontext *ctx, /** Sample 1D texture, using lambda to choose between min/magnification */ static void -sample_lambda_1d( GLcontext *ctx, +sample_lambda_1d( struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4] ) @@ -1055,7 +1055,7 @@ sample_lambda_1d( GLcontext *ctx, * Return the texture sample for coordinate (s,t) using GL_NEAREST filter. */ static INLINE void -sample_2d_nearest(GLcontext *ctx, +sample_2d_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -1088,7 +1088,7 @@ sample_2d_nearest(GLcontext *ctx, * New sampling code contributed by Lynn Quam . */ static INLINE void -sample_2d_linear(GLcontext *ctx, +sample_2d_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -1152,7 +1152,7 @@ sample_2d_linear(GLcontext *ctx, * We don't have to worry about the texture border. */ static INLINE void -sample_2d_linear_repeat(GLcontext *ctx, +sample_2d_linear_repeat(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -1185,7 +1185,7 @@ sample_2d_linear_repeat(GLcontext *ctx, static void -sample_2d_nearest_mipmap_nearest(GLcontext *ctx, +sample_2d_nearest_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1199,7 +1199,7 @@ sample_2d_nearest_mipmap_nearest(GLcontext *ctx, static void -sample_2d_linear_mipmap_nearest(GLcontext *ctx, +sample_2d_linear_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1214,7 +1214,7 @@ sample_2d_linear_mipmap_nearest(GLcontext *ctx, static void -sample_2d_nearest_mipmap_linear(GLcontext *ctx, +sample_2d_nearest_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1239,7 +1239,7 @@ sample_2d_nearest_mipmap_linear(GLcontext *ctx, static void -sample_2d_linear_mipmap_linear( GLcontext *ctx, +sample_2d_linear_mipmap_linear( struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4] ) @@ -1264,7 +1264,7 @@ sample_2d_linear_mipmap_linear( GLcontext *ctx, static void -sample_2d_linear_mipmap_linear_repeat(GLcontext *ctx, +sample_2d_linear_mipmap_linear_repeat(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1294,7 +1294,7 @@ sample_2d_linear_mipmap_linear_repeat(GLcontext *ctx, /** Sample 2D texture, nearest filtering for both min/magnification */ static void -sample_nearest_2d(GLcontext *ctx, +sample_nearest_2d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1310,7 +1310,7 @@ sample_nearest_2d(GLcontext *ctx, /** Sample 2D texture, linear filtering for both min/magnification */ static void -sample_linear_2d(GLcontext *ctx, +sample_linear_2d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1343,7 +1343,7 @@ sample_linear_2d(GLcontext *ctx, * Format = GL_RGB */ static void -opt_sample_rgb_2d(GLcontext *ctx, +opt_sample_rgb_2d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1384,7 +1384,7 @@ opt_sample_rgb_2d(GLcontext *ctx, * Format = GL_RGBA */ static void -opt_sample_rgba_2d(GLcontext *ctx, +opt_sample_rgba_2d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1419,7 +1419,7 @@ opt_sample_rgba_2d(GLcontext *ctx, /** Sample 2D texture, using lambda to choose between min/magnification */ static void -sample_lambda_2d(GLcontext *ctx, +sample_lambda_2d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1540,7 +1540,7 @@ sample_lambda_2d(GLcontext *ctx, * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter. */ static INLINE void -sample_3d_nearest(GLcontext *ctx, +sample_3d_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -1572,7 +1572,7 @@ sample_3d_nearest(GLcontext *ctx, * Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter. */ static void -sample_3d_linear(GLcontext *ctx, +sample_3d_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -1666,7 +1666,7 @@ sample_3d_linear(GLcontext *ctx, static void -sample_3d_nearest_mipmap_nearest(GLcontext *ctx, +sample_3d_nearest_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4] ) @@ -1680,7 +1680,7 @@ sample_3d_nearest_mipmap_nearest(GLcontext *ctx, static void -sample_3d_linear_mipmap_nearest(GLcontext *ctx, +sample_3d_linear_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1695,7 +1695,7 @@ sample_3d_linear_mipmap_nearest(GLcontext *ctx, static void -sample_3d_nearest_mipmap_linear(GLcontext *ctx, +sample_3d_nearest_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1720,7 +1720,7 @@ sample_3d_nearest_mipmap_linear(GLcontext *ctx, static void -sample_3d_linear_mipmap_linear(GLcontext *ctx, +sample_3d_linear_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1746,7 +1746,7 @@ sample_3d_linear_mipmap_linear(GLcontext *ctx, /** Sample 3D texture, nearest filtering for both min/magnification */ static void -sample_nearest_3d(GLcontext *ctx, +sample_nearest_3d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1762,7 +1762,7 @@ sample_nearest_3d(GLcontext *ctx, /** Sample 3D texture, linear filtering for both min/magnification */ static void -sample_linear_3d(GLcontext *ctx, +sample_linear_3d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1778,7 +1778,7 @@ sample_linear_3d(GLcontext *ctx, /** Sample 3D texture, using lambda to choose between min/magnification */ static void -sample_lambda_3d(GLcontext *ctx, +sample_lambda_3d(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1933,7 +1933,7 @@ choose_cube_face(const struct gl_texture_object *texObj, static void -sample_nearest_cube(GLcontext *ctx, +sample_nearest_cube(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1951,7 +1951,7 @@ sample_nearest_cube(GLcontext *ctx, static void -sample_linear_cube(GLcontext *ctx, +sample_linear_cube(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1969,7 +1969,7 @@ sample_linear_cube(GLcontext *ctx, static void -sample_cube_nearest_mipmap_nearest(GLcontext *ctx, +sample_cube_nearest_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -1998,7 +1998,7 @@ sample_cube_nearest_mipmap_nearest(GLcontext *ctx, static void -sample_cube_linear_mipmap_nearest(GLcontext *ctx, +sample_cube_linear_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2017,7 +2017,7 @@ sample_cube_linear_mipmap_nearest(GLcontext *ctx, static void -sample_cube_nearest_mipmap_linear(GLcontext *ctx, +sample_cube_nearest_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2046,7 +2046,7 @@ sample_cube_nearest_mipmap_linear(GLcontext *ctx, static void -sample_cube_linear_mipmap_linear(GLcontext *ctx, +sample_cube_linear_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2076,7 +2076,7 @@ sample_cube_linear_mipmap_linear(GLcontext *ctx, /** Sample cube texture, using lambda to choose between min/magnification */ static void -sample_lambda_cube(GLcontext *ctx, +sample_lambda_cube(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2150,7 +2150,7 @@ sample_lambda_cube(GLcontext *ctx, static void -sample_nearest_rect(GLcontext *ctx, +sample_nearest_rect(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2184,7 +2184,7 @@ sample_nearest_rect(GLcontext *ctx, static void -sample_linear_rect(GLcontext *ctx, +sample_linear_rect(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2250,7 +2250,7 @@ sample_linear_rect(GLcontext *ctx, /** Sample Rect texture, using lambda to choose between min/magnification */ static void -sample_lambda_rect(GLcontext *ctx, +sample_lambda_rect(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2294,7 +2294,7 @@ sample_lambda_rect(GLcontext *ctx, * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter. */ static void -sample_2d_array_nearest(GLcontext *ctx, +sample_2d_array_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -2327,7 +2327,7 @@ sample_2d_array_nearest(GLcontext *ctx, * Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter. */ static void -sample_2d_array_linear(GLcontext *ctx, +sample_2d_array_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -2397,7 +2397,7 @@ sample_2d_array_linear(GLcontext *ctx, static void -sample_2d_array_nearest_mipmap_nearest(GLcontext *ctx, +sample_2d_array_nearest_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2412,7 +2412,7 @@ sample_2d_array_nearest_mipmap_nearest(GLcontext *ctx, static void -sample_2d_array_linear_mipmap_nearest(GLcontext *ctx, +sample_2d_array_linear_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2428,7 +2428,7 @@ sample_2d_array_linear_mipmap_nearest(GLcontext *ctx, static void -sample_2d_array_nearest_mipmap_linear(GLcontext *ctx, +sample_2d_array_nearest_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2455,7 +2455,7 @@ sample_2d_array_nearest_mipmap_linear(GLcontext *ctx, static void -sample_2d_array_linear_mipmap_linear(GLcontext *ctx, +sample_2d_array_linear_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2483,7 +2483,7 @@ sample_2d_array_linear_mipmap_linear(GLcontext *ctx, /** Sample 2D Array texture, nearest filtering for both min/magnification */ static void -sample_nearest_2d_array(GLcontext *ctx, +sample_nearest_2d_array(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2500,7 +2500,7 @@ sample_nearest_2d_array(GLcontext *ctx, /** Sample 2D Array texture, linear filtering for both min/magnification */ static void -sample_linear_2d_array(GLcontext *ctx, +sample_linear_2d_array(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2516,7 +2516,7 @@ sample_linear_2d_array(GLcontext *ctx, /** Sample 2D Array texture, using lambda to choose between min/magnification */ static void -sample_lambda_2d_array(GLcontext *ctx, +sample_lambda_2d_array(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2604,7 +2604,7 @@ sample_lambda_2d_array(GLcontext *ctx, * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter. */ static void -sample_1d_array_nearest(GLcontext *ctx, +sample_1d_array_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -2634,7 +2634,7 @@ sample_1d_array_nearest(GLcontext *ctx, * Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter. */ static void -sample_1d_array_linear(GLcontext *ctx, +sample_1d_array_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, const GLfloat texcoord[4], @@ -2683,7 +2683,7 @@ sample_1d_array_linear(GLcontext *ctx, static void -sample_1d_array_nearest_mipmap_nearest(GLcontext *ctx, +sample_1d_array_nearest_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2698,7 +2698,7 @@ sample_1d_array_nearest_mipmap_nearest(GLcontext *ctx, static void -sample_1d_array_linear_mipmap_nearest(GLcontext *ctx, +sample_1d_array_linear_mipmap_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2714,7 +2714,7 @@ sample_1d_array_linear_mipmap_nearest(GLcontext *ctx, static void -sample_1d_array_nearest_mipmap_linear(GLcontext *ctx, +sample_1d_array_nearest_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2739,7 +2739,7 @@ sample_1d_array_nearest_mipmap_linear(GLcontext *ctx, static void -sample_1d_array_linear_mipmap_linear(GLcontext *ctx, +sample_1d_array_linear_mipmap_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoord[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2765,7 +2765,7 @@ sample_1d_array_linear_mipmap_linear(GLcontext *ctx, /** Sample 1D Array texture, nearest filtering for both min/magnification */ static void -sample_nearest_1d_array(GLcontext *ctx, +sample_nearest_1d_array(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2781,7 +2781,7 @@ sample_nearest_1d_array(GLcontext *ctx, /** Sample 1D Array texture, linear filtering for both min/magnification */ static void -sample_linear_1d_array(GLcontext *ctx, +sample_linear_1d_array(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2797,7 +2797,7 @@ sample_linear_1d_array(GLcontext *ctx, /** Sample 1D Array texture, using lambda to choose between min/magnification */ static void -sample_lambda_1d_array(GLcontext *ctx, +sample_lambda_1d_array(struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -2995,7 +2995,7 @@ choose_depth_texture_level(const struct gl_texture_object *tObj, GLfloat lambda) * check for minification vs. magnification, etc. */ static void -sample_depth_texture( GLcontext *ctx, +sample_depth_texture( struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat texel[][4] ) @@ -3164,7 +3164,7 @@ sample_depth_texture( GLcontext *ctx, * Note: fragment programs don't observe the texture enable/disable flags. */ static void -null_sample_func( GLcontext *ctx, +null_sample_func( struct gl_context *ctx, const struct gl_texture_object *tObj, GLuint n, const GLfloat texcoords[][4], const GLfloat lambda[], GLfloat rgba[][4]) @@ -3187,7 +3187,7 @@ null_sample_func( GLcontext *ctx, * Choose the texture sampling function for the given texture object. */ texture_sample_func -_swrast_choose_texture_sample_func( GLcontext *ctx, +_swrast_choose_texture_sample_func( struct gl_context *ctx, const struct gl_texture_object *t ) { if (!t || !t->_Complete) { diff --git a/src/mesa/swrast/s_texfilter.h b/src/mesa/swrast/s_texfilter.h index eceab59658e..34520f22948 100644 --- a/src/mesa/swrast/s_texfilter.h +++ b/src/mesa/swrast/s_texfilter.h @@ -32,7 +32,7 @@ extern texture_sample_func -_swrast_choose_texture_sample_func( GLcontext *ctx, +_swrast_choose_texture_sample_func( struct gl_context *ctx, const struct gl_texture_object *tObj ); diff --git a/src/mesa/swrast/s_triangle.c b/src/mesa/swrast/s_triangle.c index d1b369bcdf0..85513e1f204 100644 --- a/src/mesa/swrast/s_triangle.c +++ b/src/mesa/swrast/s_triangle.c @@ -49,7 +49,7 @@ * \return GL_TRUE if the triangle is to be culled, GL_FALSE otherwise. */ GLboolean -_swrast_culltriangle( GLcontext *ctx, +_swrast_culltriangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ) @@ -256,7 +256,7 @@ ilerp_2d(GLint ia, GLint ib, GLint v00, GLint v10, GLint v01, GLint v11) * texture env modes. */ static INLINE void -affine_span(GLcontext *ctx, SWspan *span, +affine_span(struct gl_context *ctx, SWspan *span, struct affine_info *info) { GLchan sample[4]; /* the filtered texture sample */ @@ -591,7 +591,7 @@ struct persp_info static INLINE void -fast_persp_span(GLcontext *ctx, SWspan *span, +fast_persp_span(struct gl_context *ctx, SWspan *span, struct persp_info *info) { GLchan sample[4]; /* the filtered texture sample */ @@ -903,7 +903,7 @@ fast_persp_span(GLcontext *ctx, SWspan *span, static void -nodraw_triangle( GLcontext *ctx, +nodraw_triangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ) @@ -919,7 +919,7 @@ nodraw_triangle( GLcontext *ctx, * Inefficient, but seldom needed. */ void -_swrast_add_spec_terms_triangle(GLcontext *ctx, const SWvertex *v0, +_swrast_add_spec_terms_triangle(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2) { SWvertex *ncv0 = (SWvertex *)v0; /* drop const qualifier */ @@ -992,7 +992,7 @@ do { \ * remove tests to this code. */ void -_swrast_choose_triangle( GLcontext *ctx ) +_swrast_choose_triangle( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); diff --git a/src/mesa/swrast/s_triangle.h b/src/mesa/swrast/s_triangle.h index b81932c7304..46e23d42083 100644 --- a/src/mesa/swrast/s_triangle.h +++ b/src/mesa/swrast/s_triangle.h @@ -32,16 +32,16 @@ extern GLboolean -_swrast_culltriangle( GLcontext *ctx, +_swrast_culltriangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2); extern void -_swrast_choose_triangle( GLcontext *ctx ); +_swrast_choose_triangle( struct gl_context *ctx ); extern void -_swrast_add_spec_terms_triangle( GLcontext *ctx, +_swrast_add_spec_terms_triangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ); diff --git a/src/mesa/swrast/s_tritemp.h b/src/mesa/swrast/s_tritemp.h index 0aa8739f4f2..4d6309b82ac 100644 --- a/src/mesa/swrast/s_tritemp.h +++ b/src/mesa/swrast/s_tritemp.h @@ -108,7 +108,7 @@ do { \ #endif -static void NAME(GLcontext *ctx, const SWvertex *v0, +static void NAME(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ) { diff --git a/src/mesa/swrast/s_zoom.c b/src/mesa/swrast/s_zoom.c index f224627d50e..4e04691cd76 100644 --- a/src/mesa/swrast/s_zoom.c +++ b/src/mesa/swrast/s_zoom.c @@ -45,7 +45,7 @@ * \return GL_TRUE if any zoomed pixels visible, GL_FALSE if totally clipped */ static GLboolean -compute_zoomed_bounds(GLcontext *ctx, GLint imageX, GLint imageY, +compute_zoomed_bounds(struct gl_context *ctx, GLint imageX, GLint imageY, GLint spanX, GLint spanY, GLint width, GLint *x0, GLint *x1, GLint *y0, GLint *y1) { @@ -127,7 +127,7 @@ unzoom_x(GLfloat zoomX, GLint imageX, GLint zx) * index/depth_span(). */ static void -zoom_span( GLcontext *ctx, GLint imgX, GLint imgY, const SWspan *span, +zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, const GLvoid *src, GLenum format ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -320,7 +320,7 @@ zoom_span( GLcontext *ctx, GLint imgX, GLint imgY, const SWspan *span, void -_swrast_write_zoomed_rgba_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_rgba_span(struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, const GLvoid *rgba) { zoom_span(ctx, imgX, imgY, span, rgba, GL_RGBA); @@ -328,7 +328,7 @@ _swrast_write_zoomed_rgba_span(GLcontext *ctx, GLint imgX, GLint imgY, void -_swrast_write_zoomed_rgb_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_rgb_span(struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, const GLvoid *rgb) { zoom_span(ctx, imgX, imgY, span, rgb, GL_RGB); @@ -336,7 +336,7 @@ _swrast_write_zoomed_rgb_span(GLcontext *ctx, GLint imgX, GLint imgY, void -_swrast_write_zoomed_depth_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_depth_span(struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span) { zoom_span(ctx, imgX, imgY, span, @@ -349,7 +349,7 @@ _swrast_write_zoomed_depth_span(GLcontext *ctx, GLint imgX, GLint imgY, * No per-fragment operations are applied. */ void -_swrast_write_zoomed_stencil_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_stencil_span(struct gl_context *ctx, GLint imgX, GLint imgY, GLint width, GLint spanX, GLint spanY, const GLstencil stencil[]) { @@ -386,7 +386,7 @@ _swrast_write_zoomed_stencil_span(GLcontext *ctx, GLint imgX, GLint imgY, * No per-fragment operations are applied. */ void -_swrast_write_zoomed_z_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_z_span(struct gl_context *ctx, GLint imgX, GLint imgY, GLint width, GLint spanX, GLint spanY, const GLvoid *z) { diff --git a/src/mesa/swrast/s_zoom.h b/src/mesa/swrast/s_zoom.h index 09f624efad5..581ea178e89 100644 --- a/src/mesa/swrast/s_zoom.h +++ b/src/mesa/swrast/s_zoom.h @@ -30,25 +30,25 @@ extern void -_swrast_write_zoomed_rgba_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_rgba_span(struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, const GLvoid *rgba); extern void -_swrast_write_zoomed_rgb_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_rgb_span(struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, const GLvoid *rgb); extern void -_swrast_write_zoomed_depth_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_depth_span(struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span); extern void -_swrast_write_zoomed_stencil_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_stencil_span(struct gl_context *ctx, GLint imgX, GLint imgY, GLint width, GLint spanX, GLint spanY, const GLstencil stencil[]); extern void -_swrast_write_zoomed_z_span(GLcontext *ctx, GLint imgX, GLint imgY, +_swrast_write_zoomed_z_span(struct gl_context *ctx, GLint imgX, GLint imgY, GLint width, GLint spanX, GLint spanY, const GLvoid *z); diff --git a/src/mesa/swrast/swrast.h b/src/mesa/swrast/swrast.h index c01cf7d1f0b..9b88c70220e 100644 --- a/src/mesa/swrast/swrast.h +++ b/src/mesa/swrast/swrast.h @@ -85,32 +85,32 @@ struct swrast_device_driver; */ extern GLboolean -_swrast_CreateContext( GLcontext *ctx ); +_swrast_CreateContext( struct gl_context *ctx ); extern void -_swrast_DestroyContext( GLcontext *ctx ); +_swrast_DestroyContext( struct gl_context *ctx ); /* Get a (non-const) reference to the device driver struct for swrast. */ extern struct swrast_device_driver * -_swrast_GetDeviceDriverReference( GLcontext *ctx ); +_swrast_GetDeviceDriverReference( struct gl_context *ctx ); extern void -_swrast_Bitmap( GLcontext *ctx, +_swrast_Bitmap( struct gl_context *ctx, GLint px, GLint py, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ); extern void -_swrast_CopyPixels( GLcontext *ctx, +_swrast_CopyPixels( struct gl_context *ctx, GLint srcx, GLint srcy, GLint destx, GLint desty, GLsizei width, GLsizei height, GLenum type ); extern void -_swrast_DrawPixels( GLcontext *ctx, +_swrast_DrawPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, @@ -118,37 +118,37 @@ _swrast_DrawPixels( GLcontext *ctx, const GLvoid *pixels ); extern void -_swrast_ReadPixels( GLcontext *ctx, +_swrast_ReadPixels( struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *pixels ); extern void -_swrast_BlitFramebuffer(GLcontext *ctx, +_swrast_BlitFramebuffer(struct gl_context *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); extern void -_swrast_Clear(GLcontext *ctx, GLbitfield buffers); +_swrast_Clear(struct gl_context *ctx, GLbitfield buffers); extern void -_swrast_Accum(GLcontext *ctx, GLenum op, GLfloat value); +_swrast_Accum(struct gl_context *ctx, GLenum op, GLfloat value); /* Reset the stipple counter */ extern void -_swrast_ResetLineStipple( GLcontext *ctx ); +_swrast_ResetLineStipple( struct gl_context *ctx ); /** * Indicates front/back facing for subsequent points/lines when drawing * unfilled polygons. Needed for two-side stencil. */ extern void -_swrast_SetFacing(GLcontext *ctx, GLuint facing); +_swrast_SetFacing(struct gl_context *ctx, GLuint facing); /* These will always render the correct point/line/triangle for the * current state. @@ -156,54 +156,54 @@ _swrast_SetFacing(GLcontext *ctx, GLuint facing); * For flatshaded primitives, the provoking vertex is the final one. */ extern void -_swrast_Point( GLcontext *ctx, const SWvertex *v ); +_swrast_Point( struct gl_context *ctx, const SWvertex *v ); extern void -_swrast_Line( GLcontext *ctx, const SWvertex *v0, const SWvertex *v1 ); +_swrast_Line( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1 ); extern void -_swrast_Triangle( GLcontext *ctx, const SWvertex *v0, +_swrast_Triangle( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2 ); extern void -_swrast_Quad( GLcontext *ctx, +_swrast_Quad( struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2, const SWvertex *v3); extern void -_swrast_flush( GLcontext *ctx ); +_swrast_flush( struct gl_context *ctx ); extern void -_swrast_render_primitive( GLcontext *ctx, GLenum mode ); +_swrast_render_primitive( struct gl_context *ctx, GLenum mode ); extern void -_swrast_render_start( GLcontext *ctx ); +_swrast_render_start( struct gl_context *ctx ); extern void -_swrast_render_finish( GLcontext *ctx ); +_swrast_render_finish( struct gl_context *ctx ); /* Tell the software rasterizer about core state changes. */ extern void -_swrast_InvalidateState( GLcontext *ctx, GLbitfield new_state ); +_swrast_InvalidateState( struct gl_context *ctx, GLbitfield new_state ); /* Configure software rasterizer to match hardware rasterizer characteristics: */ extern void -_swrast_allow_vertex_fog( GLcontext *ctx, GLboolean value ); +_swrast_allow_vertex_fog( struct gl_context *ctx, GLboolean value ); extern void -_swrast_allow_pixel_fog( GLcontext *ctx, GLboolean value ); +_swrast_allow_pixel_fog( struct gl_context *ctx, GLboolean value ); /* Debug: */ extern void -_swrast_print_vertex( GLcontext *ctx, const SWvertex *v ); +_swrast_print_vertex( struct gl_context *ctx, const SWvertex *v ); extern void -_swrast_eject_texture_images(GLcontext *ctx); +_swrast_eject_texture_images(struct gl_context *ctx); @@ -223,8 +223,8 @@ struct swrast_device_driver { * these functions. Locking in that case must be organized by the * driver by other mechanisms. */ - void (*SpanRenderStart)(GLcontext *ctx); - void (*SpanRenderFinish)(GLcontext *ctx); + void (*SpanRenderStart)(struct gl_context *ctx); + void (*SpanRenderFinish)(struct gl_context *ctx); }; diff --git a/src/mesa/swrast_setup/NOTES b/src/mesa/swrast_setup/NOTES index c6cb4ab3484..bdf57c39ef8 100644 --- a/src/mesa/swrast_setup/NOTES +++ b/src/mesa/swrast_setup/NOTES @@ -28,15 +28,15 @@ STATE To create and destroy the module: - GLboolean _swsetup_CreateContext( GLcontext *ctx ); - void _swsetup_DestroyContext( GLcontext *ctx ); + GLboolean _swsetup_CreateContext( struct gl_context *ctx ); + void _swsetup_DestroyContext( struct gl_context *ctx ); The module is not active by default, and must be installed by calling _swrast_Wakeup(). This function installs internal swrast_setup functions into all the tnl->Driver.Render driver hooks, thus taking over the task of rasterization entirely: - void _swrast_Wakeup( GLcontext *ctx ); + void _swrast_Wakeup( struct gl_context *ctx ); This module tracks state changes internally and maintains derived @@ -44,7 +44,7 @@ values based on the current state. For this to work, the driver ensure the following funciton is called whenever the state changes and the swsetup module is 'awake': - void _swsetup_InvalidateState( GLcontext *ctx, GLuint new_state ); + void _swsetup_InvalidateState( struct gl_context *ctx, GLuint new_state ); There is no explicit call to put the swsetup module to sleep. Simply install other function pointers into all the tnl->Driver.Render.* @@ -54,8 +54,8 @@ DRIVER INTERFACE The module offers a minimal driver interface: - void (*Start)( GLcontext *ctx ); - void (*Finish)( GLcontext *ctx ); + void (*Start)( struct gl_context *ctx ); + void (*Finish)( struct gl_context *ctx ); These are called before and after the completion of all swrast drawing activity. As swrast doesn't call callbacks during triangle, line or diff --git a/src/mesa/swrast_setup/ss_context.c b/src/mesa/swrast_setup/ss_context.c index 0fcb7c77af0..5da2e1eabee 100644 --- a/src/mesa/swrast_setup/ss_context.c +++ b/src/mesa/swrast_setup/ss_context.c @@ -47,7 +47,7 @@ GLboolean -_swsetup_CreateContext( GLcontext *ctx ) +_swsetup_CreateContext( struct gl_context *ctx ) { SScontext *swsetup = (SScontext *)CALLOC(sizeof(SScontext)); @@ -67,7 +67,7 @@ _swsetup_CreateContext( GLcontext *ctx ) } void -_swsetup_DestroyContext( GLcontext *ctx ) +_swsetup_DestroyContext( struct gl_context *ctx ) { SScontext *swsetup = SWSETUP_CONTEXT(ctx); @@ -80,7 +80,7 @@ _swsetup_DestroyContext( GLcontext *ctx ) } static void -_swsetup_RenderPrimitive( GLcontext *ctx, GLenum mode ) +_swsetup_RenderPrimitive( struct gl_context *ctx, GLenum mode ) { SWSETUP_CONTEXT(ctx)->render_prim = mode; _swrast_render_primitive( ctx, mode ); @@ -108,7 +108,7 @@ do { \ * _tnl_install_attrs(). */ static void -setup_vertex_format(GLcontext *ctx) +setup_vertex_format(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); SScontext *swsetup = SWSETUP_CONTEXT(ctx); @@ -184,7 +184,7 @@ setup_vertex_format(GLcontext *ctx) * Called via tnl->Driver.Render.Start. */ static void -_swsetup_RenderStart( GLcontext *ctx ) +_swsetup_RenderStart( struct gl_context *ctx ) { SScontext *swsetup = SWSETUP_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -217,13 +217,13 @@ _swsetup_RenderStart( GLcontext *ctx ) * It's called when we finish rendering a vertex buffer. */ static void -_swsetup_RenderFinish( GLcontext *ctx ) +_swsetup_RenderFinish( struct gl_context *ctx ) { _swrast_render_finish( ctx ); } void -_swsetup_InvalidateState( GLcontext *ctx, GLuint new_state ) +_swsetup_InvalidateState( struct gl_context *ctx, GLuint new_state ) { SScontext *swsetup = SWSETUP_CONTEXT(ctx); swsetup->NewState |= new_state; @@ -232,7 +232,7 @@ _swsetup_InvalidateState( GLcontext *ctx, GLuint new_state ) void -_swsetup_Wakeup( GLcontext *ctx ) +_swsetup_Wakeup( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); SScontext *swsetup = SWSETUP_CONTEXT(ctx); @@ -267,7 +267,7 @@ _swsetup_Wakeup( GLcontext *ctx ) * Populate a swrast SWvertex from an attrib-style vertex. */ void -_swsetup_Translate( GLcontext *ctx, const void *vertex, SWvertex *dest ) +_swsetup_Translate( struct gl_context *ctx, const void *vertex, SWvertex *dest ) { const GLfloat *m = ctx->Viewport._WindowMap.m; GLfloat tmp[4]; diff --git a/src/mesa/swrast_setup/ss_triangle.c b/src/mesa/swrast_setup/ss_triangle.c index f22bc52f0a8..5d1c70e9481 100644 --- a/src/mesa/swrast_setup/ss_triangle.c +++ b/src/mesa/swrast_setup/ss_triangle.c @@ -47,7 +47,7 @@ static tnl_quad_func quad_tab[SS_MAX_TRIFUNC]; /* * Render a triangle respecting edge flags. */ -typedef void (* swsetup_edge_render_prim_tri)(GLcontext *ctx, +typedef void (* swsetup_edge_render_prim_tri)(struct gl_context *ctx, const GLubyte *ef, GLuint e0, GLuint e1, @@ -60,7 +60,7 @@ typedef void (* swsetup_edge_render_prim_tri)(GLcontext *ctx, * Render a triangle using lines and respecting edge flags. */ static void -_swsetup_edge_render_line_tri(GLcontext *ctx, +_swsetup_edge_render_line_tri(struct gl_context *ctx, const GLubyte *ef, GLuint e0, GLuint e1, @@ -86,7 +86,7 @@ _swsetup_edge_render_line_tri(GLcontext *ctx, * Render a triangle using points and respecting edge flags. */ static void -_swsetup_edge_render_point_tri(GLcontext *ctx, +_swsetup_edge_render_point_tri(struct gl_context *ctx, const GLubyte *ef, GLuint e0, GLuint e1, @@ -105,7 +105,7 @@ _swsetup_edge_render_point_tri(GLcontext *ctx, /* * Render a triangle respecting cull and shade model. */ -static void _swsetup_render_tri(GLcontext *ctx, +static void _swsetup_render_tri(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e2, @@ -195,7 +195,7 @@ static void _swsetup_render_tri(GLcontext *ctx, #include "ss_tritmp.h" -void _swsetup_trifuncs_init( GLcontext *ctx ) +void _swsetup_trifuncs_init( struct gl_context *ctx ) { (void) ctx; @@ -210,7 +210,7 @@ void _swsetup_trifuncs_init( GLcontext *ctx ) } -static void swsetup_points( GLcontext *ctx, GLuint first, GLuint last ) +static void swsetup_points( struct gl_context *ctx, GLuint first, GLuint last ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts; @@ -228,7 +228,7 @@ static void swsetup_points( GLcontext *ctx, GLuint first, GLuint last ) } } -static void swsetup_line( GLcontext *ctx, GLuint v0, GLuint v1 ) +static void swsetup_line( struct gl_context *ctx, GLuint v0, GLuint v1 ) { SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts; _swrast_Line( ctx, &verts[v0], &verts[v1] ); @@ -236,7 +236,7 @@ static void swsetup_line( GLcontext *ctx, GLuint v0, GLuint v1 ) -void _swsetup_choose_trifuncs( GLcontext *ctx ) +void _swsetup_choose_trifuncs( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint ind = 0; diff --git a/src/mesa/swrast_setup/ss_triangle.h b/src/mesa/swrast_setup/ss_triangle.h index ac553cbd018..05110865daf 100644 --- a/src/mesa/swrast_setup/ss_triangle.h +++ b/src/mesa/swrast_setup/ss_triangle.h @@ -32,7 +32,7 @@ #include "main/mtypes.h" -void _swsetup_trifuncs_init( GLcontext *ctx ); -void _swsetup_choose_trifuncs( GLcontext *ctx ); +void _swsetup_trifuncs_init( struct gl_context *ctx ); +void _swsetup_choose_trifuncs( struct gl_context *ctx ); #endif diff --git a/src/mesa/swrast_setup/ss_tritmp.h b/src/mesa/swrast_setup/ss_tritmp.h index 8e9fa1bd559..5844ad594cd 100644 --- a/src/mesa/swrast_setup/ss_tritmp.h +++ b/src/mesa/swrast_setup/ss_tritmp.h @@ -30,7 +30,7 @@ * This is where we handle assigning vertex colors based on front/back * facing, compute polygon offset and handle glPolygonMode(). */ -static void TAG(triangle)(GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 ) +static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e2 ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; SScontext *swsetup = SWSETUP_CONTEXT(ctx); @@ -213,7 +213,7 @@ static void TAG(triangle)(GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 ) /* Need to fixup edgeflags when decomposing to triangles: */ -static void TAG(quadfunc)( GLcontext *ctx, GLuint v0, +static void TAG(quadfunc)( struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) { if (IND & SS_UNFILLED_BIT) { diff --git a/src/mesa/swrast_setup/ss_vb.h b/src/mesa/swrast_setup/ss_vb.h index 944a3b78d8c..b8322f35a3d 100644 --- a/src/mesa/swrast_setup/ss_vb.h +++ b/src/mesa/swrast_setup/ss_vb.h @@ -31,7 +31,7 @@ #include "main/mtypes.h" -void _swsetup_vb_init( GLcontext *ctx ); -void _swsetup_choose_rastersetup_func( GLcontext *ctx ); +void _swsetup_vb_init( struct gl_context *ctx ); +void _swsetup_choose_rastersetup_func( struct gl_context *ctx ); #endif diff --git a/src/mesa/swrast_setup/swrast_setup.h b/src/mesa/swrast_setup/swrast_setup.h index 5dcbe2675b4..1d87ec1082d 100644 --- a/src/mesa/swrast_setup/swrast_setup.h +++ b/src/mesa/swrast_setup/swrast_setup.h @@ -41,21 +41,21 @@ #include "swrast/swrast.h" extern GLboolean -_swsetup_CreateContext( GLcontext *ctx ); +_swsetup_CreateContext( struct gl_context *ctx ); extern void -_swsetup_DestroyContext( GLcontext *ctx ); +_swsetup_DestroyContext( struct gl_context *ctx ); extern void -_swsetup_InvalidateState( GLcontext *ctx, GLuint new_state ); +_swsetup_InvalidateState( struct gl_context *ctx, GLuint new_state ); extern void -_swsetup_Wakeup( GLcontext *ctx ); +_swsetup_Wakeup( struct gl_context *ctx ); /* Helper function to translate a hardware vertex (as understood by * the tnl/t_vertex.c code) to a swrast vertex. */ extern void -_swsetup_Translate( GLcontext *ctx, const void *vertex, SWvertex *dest ); +_swsetup_Translate( struct gl_context *ctx, const void *vertex, SWvertex *dest ); #endif diff --git a/src/mesa/tnl/NOTES b/src/mesa/tnl/NOTES index c39b43485eb..aac5884da87 100644 --- a/src/mesa/tnl/NOTES +++ b/src/mesa/tnl/NOTES @@ -17,16 +17,16 @@ STATE To create and destroy the module: - GLboolean _tnl_CreateContext( GLcontext *ctx ); - void _tnl_DestroyContext( GLcontext *ctx ); + GLboolean _tnl_CreateContext( struct gl_context *ctx ); + void _tnl_DestroyContext( struct gl_context *ctx ); The module is not active by default, and must be installed by calling _tnl_Wakeup(). This function installs internal tnl functions into all the vtxfmt dispatch hooks, thus taking over the task of transformation and lighting entirely: - void _tnl_wakeup_exec( GLcontext *ctx ); - void _tnl_wakeup_save_exec( GLcontext *ctx ); + void _tnl_wakeup_exec( struct gl_context *ctx ); + void _tnl_wakeup_save_exec( struct gl_context *ctx ); This module tracks state changes internally and maintains derived @@ -34,7 +34,7 @@ values based on the current state. For this to work, the driver ensure the following funciton is called whenever the state changes and the swsetup module is 'awake': - void _tnl_InvalidateState( GLcontext *ctx, GLuint new_state ); + void _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ); There is no explicit call to put the tnl module to sleep. Simply install other function pointers into all the vtxfmt dispatch slots, @@ -58,13 +58,13 @@ higher-level primitives (for example the radeon driver). In addition, the following functions provide further tweaks: extern void -_tnl_need_projected_coords( GLcontext *ctx, GLboolean flag ); +_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag ); - Direct the default vertex transformation stage to produce/not produce projected clip coordinates. extern void -_tnl_need_dlist_loopback( GLcontext *ctx, GLboolean flag ); +_tnl_need_dlist_loopback( struct gl_context *ctx, GLboolean flag ); - Direct the display list component of the tnl module to replay display lists as 'glVertex' type calls, rather than @@ -76,7 +76,7 @@ _tnl_need_dlist_loopback( GLcontext *ctx, GLboolean flag ); extern void -_tnl_need_dlist_norm_lengths( GLcontext *ctx, GLboolean flag ); +_tnl_need_dlist_norm_lengths( struct gl_context *ctx, GLboolean flag ); - Direct the display list component to enable/disable caching 1/length values for display list normals. Doing so is @@ -88,7 +88,7 @@ DRIVER INTERFACE The module itself offers a minimal driver interface: - void (*RunPipeline)( GLcontext *ctx ); + void (*RunPipeline)( struct gl_context *ctx ); Normally this is set to _tnl_RunPipeline(), however the driver can use this hook to wrap checks or other code around this call. diff --git a/src/mesa/tnl/t_context.c b/src/mesa/tnl/t_context.c index f27c8ad9d6b..47aeeb88594 100644 --- a/src/mesa/tnl/t_context.c +++ b/src/mesa/tnl/t_context.c @@ -42,7 +42,7 @@ #include "vbo/vbo.h" GLboolean -_tnl_CreateContext( GLcontext *ctx ) +_tnl_CreateContext( struct gl_context *ctx ) { TNLcontext *tnl; @@ -90,7 +90,7 @@ _tnl_CreateContext( GLcontext *ctx ) void -_tnl_DestroyContext( GLcontext *ctx ) +_tnl_DestroyContext( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -102,7 +102,7 @@ _tnl_DestroyContext( GLcontext *ctx ) void -_tnl_InvalidateState( GLcontext *ctx, GLuint new_state ) +_tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ) { TNLcontext *tnl = TNL_CONTEXT(ctx); const struct gl_vertex_program *vp = ctx->VertexProgram._Current; @@ -173,7 +173,7 @@ _tnl_InvalidateState( GLcontext *ctx, GLuint new_state ) void -_tnl_wakeup( GLcontext *ctx ) +_tnl_wakeup( struct gl_context *ctx ) { /* Assume we haven't been getting state updates either: */ @@ -196,14 +196,14 @@ _tnl_wakeup( GLcontext *ctx ) * we should "Divide-by-W". Software renders will want that. */ void -_tnl_need_projected_coords( GLcontext *ctx, GLboolean mode ) +_tnl_need_projected_coords( struct gl_context *ctx, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->NeedNdcCoords = mode; } void -_tnl_allow_vertex_fog( GLcontext *ctx, GLboolean value ) +_tnl_allow_vertex_fog( struct gl_context *ctx, GLboolean value ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->AllowVertexFog = value; @@ -213,7 +213,7 @@ _tnl_allow_vertex_fog( GLcontext *ctx, GLboolean value ) } void -_tnl_allow_pixel_fog( GLcontext *ctx, GLboolean value ) +_tnl_allow_pixel_fog( struct gl_context *ctx, GLboolean value ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->AllowPixelFog = value; diff --git a/src/mesa/tnl/t_context.h b/src/mesa/tnl/t_context.h index 258906f7956..bc01646247c 100644 --- a/src/mesa/tnl/t_context.h +++ b/src/mesa/tnl/t_context.h @@ -235,7 +235,7 @@ struct tnl_pipeline_stage /* Allocate private data */ - GLboolean (*create)( GLcontext *ctx, struct tnl_pipeline_stage * ); + GLboolean (*create)( struct gl_context *ctx, struct tnl_pipeline_stage * ); /* Free private data. */ @@ -244,7 +244,7 @@ struct tnl_pipeline_stage /* Called on any statechange or input array size change or * input array change to/from zero stride. */ - void (*validate)( GLcontext *ctx, struct tnl_pipeline_stage * ); + void (*validate)( struct gl_context *ctx, struct tnl_pipeline_stage * ); /* Called from _tnl_run_pipeline(). The stage.changed_inputs value * encodes all inputs to thee struct which have changed. If @@ -254,7 +254,7 @@ struct tnl_pipeline_stage * Return value: GL_TRUE - keep going * GL_FALSE - finished pipeline */ - GLboolean (*run)( GLcontext *ctx, struct tnl_pipeline_stage * ); + GLboolean (*run)( struct gl_context *ctx, struct tnl_pipeline_stage * ); }; @@ -284,7 +284,7 @@ typedef void (*tnl_insert_func)( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ); -typedef void (*tnl_emit_func)( GLcontext *ctx, +typedef void (*tnl_emit_func)( struct gl_context *ctx, GLuint count, GLubyte *dest ); @@ -311,19 +311,19 @@ struct tnl_clipspace_attr -typedef void (*tnl_points_func)( GLcontext *ctx, GLuint first, GLuint last ); -typedef void (*tnl_line_func)( GLcontext *ctx, GLuint v1, GLuint v2 ); -typedef void (*tnl_triangle_func)( GLcontext *ctx, +typedef void (*tnl_points_func)( struct gl_context *ctx, GLuint first, GLuint last ); +typedef void (*tnl_line_func)( struct gl_context *ctx, GLuint v1, GLuint v2 ); +typedef void (*tnl_triangle_func)( struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3 ); -typedef void (*tnl_quad_func)( GLcontext *ctx, GLuint v1, GLuint v2, +typedef void (*tnl_quad_func)( struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4 ); -typedef void (*tnl_render_func)( GLcontext *ctx, GLuint start, GLuint count, +typedef void (*tnl_render_func)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ); -typedef void (*tnl_interp_func)( GLcontext *ctx, +typedef void (*tnl_interp_func)( struct gl_context *ctx, GLfloat t, GLuint dst, GLuint out, GLuint in, GLboolean force_boundary ); -typedef void (*tnl_copy_pv_func)( GLcontext *ctx, GLuint dst, GLuint src ); -typedef void (*tnl_setup_func)( GLcontext *ctx, +typedef void (*tnl_copy_pv_func)( struct gl_context *ctx, GLuint dst, GLuint src ); +typedef void (*tnl_setup_func)( struct gl_context *ctx, GLuint start, GLuint end, GLuint new_inputs); @@ -377,7 +377,7 @@ struct tnl_clipspace struct tnl_clipspace_fastpath *fastpath; - void (*codegen_emit)( GLcontext *ctx ); + void (*codegen_emit)( struct gl_context *ctx ); }; @@ -387,13 +387,13 @@ struct tnl_device_driver *** TNL Pipeline ***/ - void (*RunPipeline)(GLcontext *ctx); + void (*RunPipeline)(struct gl_context *ctx); /* Replaces PipelineStart/PipelineFinish -- intended to allow * drivers to wrap _tnl_run_pipeline() with code to validate state * and grab/release hardware locks. */ - void (*NotifyMaterialChange)(GLcontext *ctx); + void (*NotifyMaterialChange)(struct gl_context *ctx); /* Alert tnl-aware drivers of changes to material. */ @@ -402,14 +402,14 @@ struct tnl_device_driver ***/ struct { - void (*Start)(GLcontext *ctx); - void (*Finish)(GLcontext *ctx); + void (*Start)(struct gl_context *ctx); + void (*Finish)(struct gl_context *ctx); /* Called before and after all rendering operations, including DrawPixels, * ReadPixels, Bitmap, span functions, and CopyTexImage, etc commands. * These are a suitable place for grabbing/releasing hardware locks. */ - void (*PrimitiveNotify)(GLcontext *ctx, GLenum mode); + void (*PrimitiveNotify)(struct gl_context *ctx, GLenum mode); /* Called between RenderStart() and RenderFinish() to indicate the * type of primitive we're about to draw. Mode will be one of the * modes accepted by glBegin(). @@ -427,12 +427,12 @@ struct tnl_device_driver * vertex attributes should be copied. */ - void (*ClippedPolygon)( GLcontext *ctx, const GLuint *elts, GLuint n ); + void (*ClippedPolygon)( struct gl_context *ctx, const GLuint *elts, GLuint n ); /* Render a polygon with vertices whose indexes are in the * array. */ - void (*ClippedLine)( GLcontext *ctx, GLuint v0, GLuint v1 ); + void (*ClippedLine)( struct gl_context *ctx, GLuint v0, GLuint v1 ); /* Render a line between the two vertices given by indexes v0 and v1. */ tnl_points_func Points; /* must now respect vb->elts */ @@ -452,7 +452,7 @@ struct tnl_device_driver * vertices. */ - void (*ResetLineStipple)( GLcontext *ctx ); + void (*ResetLineStipple)( struct gl_context *ctx ); /* Reset the hardware's line stipple counter. */ @@ -467,7 +467,7 @@ struct tnl_device_driver */ - GLboolean (*Multipass)( GLcontext *ctx, GLuint passno ); + GLboolean (*Multipass)( struct gl_context *ctx, GLuint passno ); /* Driver may request additional render passes by returning GL_TRUE * when this function is called. This function will be called * after the first pass, and passes will be made until the function @@ -539,7 +539,7 @@ typedef struct extern void -tnl_clip_prepare(GLcontext *ctx); +tnl_clip_prepare(struct gl_context *ctx); #endif diff --git a/src/mesa/tnl/t_draw.c b/src/mesa/tnl/t_draw.c index fdde294257e..30f1bf323cb 100644 --- a/src/mesa/tnl/t_draw.c +++ b/src/mesa/tnl/t_draw.c @@ -38,7 +38,7 @@ -static GLubyte *get_space(GLcontext *ctx, GLuint bytes) +static GLubyte *get_space(struct gl_context *ctx, GLuint bytes) { TNLcontext *tnl = TNL_CONTEXT(ctx); GLubyte *space = malloc(bytes); @@ -48,7 +48,7 @@ static GLubyte *get_space(GLcontext *ctx, GLuint bytes) } -static void free_space(GLcontext *ctx) +static void free_space(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint i; @@ -128,7 +128,7 @@ convert_half_to_float(const struct gl_client_array *input, /* Adjust pointer to point at first requested element, convert to * floating point, populate VB->AttribPtr[]. */ -static void _tnl_import_array( GLcontext *ctx, +static void _tnl_import_array( struct gl_context *ctx, GLuint attrib, GLuint count, const struct gl_client_array *input, @@ -202,7 +202,7 @@ static void _tnl_import_array( GLcontext *ctx, #define CLIPVERTS ((6 + MAX_CLIP_PLANES) * 2) -static GLboolean *_tnl_import_edgeflag( GLcontext *ctx, +static GLboolean *_tnl_import_edgeflag( struct gl_context *ctx, const GLvector4f *input, GLuint count) { @@ -221,7 +221,7 @@ static GLboolean *_tnl_import_edgeflag( GLcontext *ctx, } -static void bind_inputs( GLcontext *ctx, +static void bind_inputs( struct gl_context *ctx, const struct gl_client_array *inputs[], GLint count, struct gl_buffer_object **bo, @@ -292,7 +292,7 @@ static void bind_inputs( GLcontext *ctx, /* Translate indices to GLuints and store in VB->Elts. */ -static void bind_indices( GLcontext *ctx, +static void bind_indices( struct gl_context *ctx, const struct _mesa_index_buffer *ib, struct gl_buffer_object **bo, GLuint *nr_bo) @@ -345,7 +345,7 @@ static void bind_indices( GLcontext *ctx, } } -static void bind_prims( GLcontext *ctx, +static void bind_prims( struct gl_context *ctx, const struct _mesa_prim *prim, GLuint nr_prims ) { @@ -356,7 +356,7 @@ static void bind_prims( GLcontext *ctx, VB->PrimitiveCount = nr_prims; } -static void unmap_vbos( GLcontext *ctx, +static void unmap_vbos( struct gl_context *ctx, struct gl_buffer_object **bo, GLuint nr_bo ) { @@ -369,7 +369,7 @@ static void unmap_vbos( GLcontext *ctx, } -void _tnl_vbo_draw_prims(GLcontext *ctx, +void _tnl_vbo_draw_prims(struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -388,7 +388,7 @@ void _tnl_vbo_draw_prims(GLcontext *ctx, * module. In a regular swtnl driver, this can be plugged straight * into the vbo->Driver.DrawPrims() callback. */ -void _tnl_draw_prims( GLcontext *ctx, +void _tnl_draw_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, diff --git a/src/mesa/tnl/t_pipeline.c b/src/mesa/tnl/t_pipeline.c index 36fcd074cd9..18f095f0d4b 100644 --- a/src/mesa/tnl/t_pipeline.c +++ b/src/mesa/tnl/t_pipeline.c @@ -35,7 +35,7 @@ #include "t_vp_build.h" #include "t_vertex.h" -void _tnl_install_pipeline( GLcontext *ctx, +void _tnl_install_pipeline( struct gl_context *ctx, const struct tnl_pipeline_stage **stages ) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -55,7 +55,7 @@ void _tnl_install_pipeline( GLcontext *ctx, tnl->pipeline.nr_stages = i; } -void _tnl_destroy_pipeline( GLcontext *ctx ) +void _tnl_destroy_pipeline( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint i; @@ -71,7 +71,7 @@ void _tnl_destroy_pipeline( GLcontext *ctx ) -static GLuint check_input_changes( GLcontext *ctx ) +static GLuint check_input_changes( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint i; @@ -89,7 +89,7 @@ static GLuint check_input_changes( GLcontext *ctx ) } -static GLuint check_output_changes( GLcontext *ctx ) +static GLuint check_output_changes( struct gl_context *ctx ) { #if 0 TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -113,7 +113,7 @@ static GLuint check_output_changes( GLcontext *ctx ) } -void _tnl_run_pipeline( GLcontext *ctx ) +void _tnl_run_pipeline( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); unsigned short __tmp; diff --git a/src/mesa/tnl/t_pipeline.h b/src/mesa/tnl/t_pipeline.h index a6429869cb9..0eb03395c30 100644 --- a/src/mesa/tnl/t_pipeline.h +++ b/src/mesa/tnl/t_pipeline.h @@ -33,11 +33,11 @@ #include "main/mtypes.h" #include "t_context.h" -extern void _tnl_run_pipeline( GLcontext *ctx ); +extern void _tnl_run_pipeline( struct gl_context *ctx ); -extern void _tnl_destroy_pipeline( GLcontext *ctx ); +extern void _tnl_destroy_pipeline( struct gl_context *ctx ); -extern void _tnl_install_pipeline( GLcontext *ctx, +extern void _tnl_install_pipeline( struct gl_context *ctx, const struct tnl_pipeline_stage **stages ); @@ -64,10 +64,10 @@ extern const struct tnl_pipeline_stage *_tnl_vp_pipeline[]; extern tnl_render_func _tnl_render_tab_elts[]; extern tnl_render_func _tnl_render_tab_verts[]; -extern void _tnl_RenderClippedPolygon( GLcontext *ctx, +extern void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n ); -extern void _tnl_RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ); +extern void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ); #endif diff --git a/src/mesa/tnl/t_rasterpos.c b/src/mesa/tnl/t_rasterpos.c index d82d5b50736..0492490dfcf 100644 --- a/src/mesa/tnl/t_rasterpos.c +++ b/src/mesa/tnl/t_rasterpos.c @@ -84,7 +84,7 @@ viewclip_point_z( const GLfloat v[] ) * \return zero if the point was clipped, or one otherwise. */ static GLuint -userclip_point( GLcontext *ctx, const GLfloat v[] ) +userclip_point( struct gl_context *ctx, const GLfloat v[] ) { GLuint p; @@ -114,7 +114,7 @@ userclip_point( GLcontext *ctx, const GLfloat v[] ) * \param Rindex returned color index */ static void -shade_rastpos(GLcontext *ctx, +shade_rastpos(struct gl_context *ctx, const GLfloat vertex[4], const GLfloat normal[3], GLfloat Rcolor[4], @@ -263,7 +263,7 @@ shade_rastpos(GLcontext *ctx, * \param texcoord incoming texcoord and resulting texcoord */ static void -compute_texgen(GLcontext *ctx, const GLfloat vObj[4], const GLfloat vEye[4], +compute_texgen(struct gl_context *ctx, const GLfloat vObj[4], const GLfloat vEye[4], const GLfloat normal[3], GLuint unit, GLfloat texcoord[4]) { const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -373,7 +373,7 @@ compute_texgen(GLcontext *ctx, const GLfloat vObj[4], const GLfloat vEye[4], * \param vObj vertex position in object space */ void -_tnl_RasterPos(GLcontext *ctx, const GLfloat vObj[4]) +_tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]) { if (ctx->VertexProgram._Enabled) { /* XXX implement this */ diff --git a/src/mesa/tnl/t_vb_cliptmp.h b/src/mesa/tnl/t_vb_cliptmp.h index 8cc36e666de..d593193435c 100644 --- a/src/mesa/tnl/t_vb_cliptmp.h +++ b/src/mesa/tnl/t_vb_cliptmp.h @@ -115,7 +115,7 @@ do { \ /* Clip a line against the viewport and user clip planes. */ static INLINE void -TAG(clip_line)( GLcontext *ctx, GLuint v0, GLuint v1, GLubyte mask ) +TAG(clip_line)( struct gl_context *ctx, GLuint v0, GLuint v1, GLubyte mask ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -184,7 +184,7 @@ TAG(clip_line)( GLcontext *ctx, GLuint v0, GLuint v1, GLubyte mask ) /* Clip a triangle against the viewport and user clip planes. */ static INLINE void -TAG(clip_tri)( GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLubyte mask ) +TAG(clip_tri)( struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLubyte mask ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -263,7 +263,7 @@ TAG(clip_tri)( GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLubyte mask ) /* Clip a quad against the viewport and user clip planes. */ static INLINE void -TAG(clip_quad)( GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3, +TAG(clip_quad)( struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3, GLubyte mask ) { TNLcontext *tnl = TNL_CONTEXT(ctx); diff --git a/src/mesa/tnl/t_vb_fog.c b/src/mesa/tnl/t_vb_fog.c index 9faae24ec6d..cbd8dfc967f 100644 --- a/src/mesa/tnl/t_vb_fog.c +++ b/src/mesa/tnl/t_vb_fog.c @@ -94,7 +94,7 @@ init_static_data( void ) * Fog blend factors are in the range [0,1]. */ static void -compute_fog_blend_factors(GLcontext *ctx, GLvector4f *out, const GLvector4f *in) +compute_fog_blend_factors(struct gl_context *ctx, GLvector4f *out, const GLvector4f *in) { GLfloat end = ctx->Fog.End; GLfloat *v = in->start; @@ -140,7 +140,7 @@ compute_fog_blend_factors(GLcontext *ctx, GLvector4f *out, const GLvector4f *in) static GLboolean -run_fog_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) +run_fog_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -235,7 +235,7 @@ run_fog_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) /* Called the first time stage->run() is invoked. */ static GLboolean -alloc_fog_data(GLcontext *ctx, struct tnl_pipeline_stage *stage) +alloc_fog_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct fog_stage_data *store; diff --git a/src/mesa/tnl/t_vb_light.c b/src/mesa/tnl/t_vb_light.c index e7309aaac60..3acedf6e577 100644 --- a/src/mesa/tnl/t_vb_light.c +++ b/src/mesa/tnl/t_vb_light.c @@ -41,7 +41,7 @@ #define LIGHT_MATERIAL 0x2 #define MAX_LIGHT_FUNC 0x4 -typedef void (*light_func)( GLcontext *ctx, +typedef void (*light_func)( struct gl_context *ctx, struct vertex_buffer *VB, struct tnl_pipeline_stage *stage, GLvector4f *input ); @@ -85,7 +85,7 @@ struct light_stage_data { * It's called per-vertex in the lighting loop. */ static void -update_materials(GLcontext *ctx, struct light_stage_data *store) +update_materials(struct gl_context *ctx, struct light_stage_data *store) { GLuint i; @@ -110,7 +110,7 @@ update_materials(GLcontext *ctx, struct light_stage_data *store) * Return number of material attributes which will track vertex color. */ static GLuint -prepare_materials(GLcontext *ctx, +prepare_materials(struct gl_context *ctx, struct vertex_buffer *VB, struct light_stage_data *store) { GLuint i; @@ -192,7 +192,7 @@ static void init_lighting_tables( void ) } -static GLboolean run_lighting( GLcontext *ctx, +static GLboolean run_lighting( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct light_stage_data *store = LIGHT_STAGE_DATA(stage); @@ -250,7 +250,7 @@ static GLboolean run_lighting( GLcontext *ctx, /* Called in place of do_lighting when the light table may have changed. */ -static void validate_lighting( GLcontext *ctx, +static void validate_lighting( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { light_func *tab; @@ -284,7 +284,7 @@ static void validate_lighting( GLcontext *ctx, /* Called the first time stage->run is called. In effect, don't * allocate data until the first time the stage is run. */ -static GLboolean init_lighting( GLcontext *ctx, +static GLboolean init_lighting( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { TNLcontext *tnl = TNL_CONTEXT(ctx); diff --git a/src/mesa/tnl/t_vb_lighttmp.h b/src/mesa/tnl/t_vb_lighttmp.h index 0a98c6b02a6..aae1d18ff7f 100644 --- a/src/mesa/tnl/t_vb_lighttmp.h +++ b/src/mesa/tnl/t_vb_lighttmp.h @@ -44,7 +44,7 @@ * stage is the lighting stage-private data * input is the vector of eye or object-space vertex coordinates */ -static void TAG(light_rgba_spec)( GLcontext *ctx, +static void TAG(light_rgba_spec)( struct gl_context *ctx, struct vertex_buffer *VB, struct tnl_pipeline_stage *stage, GLvector4f *input ) @@ -232,7 +232,7 @@ static void TAG(light_rgba_spec)( GLcontext *ctx, } -static void TAG(light_rgba)( GLcontext *ctx, +static void TAG(light_rgba)( struct gl_context *ctx, struct vertex_buffer *VB, struct tnl_pipeline_stage *stage, GLvector4f *input ) @@ -421,7 +421,7 @@ static void TAG(light_rgba)( GLcontext *ctx, /* As below, but with just a single light. */ -static void TAG(light_fast_rgba_single)( GLcontext *ctx, +static void TAG(light_fast_rgba_single)( struct gl_context *ctx, struct vertex_buffer *VB, struct tnl_pipeline_stage *stage, GLvector4f *input ) @@ -529,7 +529,7 @@ static void TAG(light_fast_rgba_single)( GLcontext *ctx, /* Light infinite lights */ -static void TAG(light_fast_rgba)( GLcontext *ctx, +static void TAG(light_fast_rgba)( struct gl_context *ctx, struct vertex_buffer *VB, struct tnl_pipeline_stage *stage, GLvector4f *input ) diff --git a/src/mesa/tnl/t_vb_normals.c b/src/mesa/tnl/t_vb_normals.c index c2aa655674c..c19b48e51ee 100644 --- a/src/mesa/tnl/t_vb_normals.c +++ b/src/mesa/tnl/t_vb_normals.c @@ -47,7 +47,7 @@ struct normal_stage_data { static GLboolean -run_normal_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) +run_normal_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { struct normal_stage_data *store = NORMAL_STAGE_DATA(stage); struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -89,7 +89,7 @@ run_normal_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) * to point to the appropriate normal transformation routine. */ static void -validate_normal_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) +validate_normal_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { struct normal_stage_data *store = NORMAL_STAGE_DATA(stage); @@ -146,7 +146,7 @@ validate_normal_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) * Allocate stage's private data (storage for transformed normals). */ static GLboolean -alloc_normal_data(GLcontext *ctx, struct tnl_pipeline_stage *stage) +alloc_normal_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct normal_stage_data *store; diff --git a/src/mesa/tnl/t_vb_points.c b/src/mesa/tnl/t_vb_points.c index 20634c80d1d..9edbbc708e6 100644 --- a/src/mesa/tnl/t_vb_points.c +++ b/src/mesa/tnl/t_vb_points.c @@ -47,7 +47,7 @@ struct point_stage_data { * disabled. */ static GLboolean -run_point_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) +run_point_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { if (ctx->Point._Attenuated && !ctx->VertexProgram._Current) { struct point_stage_data *store = POINT_STAGE_DATA(stage); @@ -77,7 +77,7 @@ run_point_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) static GLboolean -alloc_point_data(GLcontext *ctx, struct tnl_pipeline_stage *stage) +alloc_point_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; struct point_stage_data *store; diff --git a/src/mesa/tnl/t_vb_program.c b/src/mesa/tnl/t_vb_program.c index f3a338ef1ed..76f8fde3f52 100644 --- a/src/mesa/tnl/t_vb_program.c +++ b/src/mesa/tnl/t_vb_program.c @@ -74,7 +74,7 @@ struct vp_stage_data { static void -userclip( GLcontext *ctx, +userclip( struct gl_context *ctx, GLvector4f *clip, GLubyte *clipmask, GLubyte *clipormask, @@ -120,7 +120,7 @@ userclip( GLcontext *ctx, static GLboolean -do_ndc_cliptest(GLcontext *ctx, struct vp_stage_data *store) +do_ndc_cliptest(struct gl_context *ctx, struct vp_stage_data *store) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -187,7 +187,7 @@ do_ndc_cliptest(GLcontext *ctx, struct vp_stage_data *store) * moved into main/ someday. */ static void -vp_fetch_texel(GLcontext *ctx, const GLfloat texcoord[4], GLfloat lambda, +vp_fetch_texel(struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lambda, GLuint unit, GLfloat color[4]) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -204,7 +204,7 @@ vp_fetch_texel(GLcontext *ctx, const GLfloat texcoord[4], GLfloat lambda, * string has been parsed. */ GLboolean -_tnl_program_string(GLcontext *ctx, GLenum target, struct gl_program *program) +_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program) { /* No-op. * If we had derived anything from the program that was private to this @@ -218,7 +218,7 @@ _tnl_program_string(GLcontext *ctx, GLenum target, struct gl_program *program) * Initialize virtual machine state prior to executing vertex program. */ static void -init_machine(GLcontext *ctx, struct gl_program_machine *machine) +init_machine(struct gl_context *ctx, struct gl_program_machine *machine) { /* Input registers get initialized from the current vertex attribs */ memcpy(machine->VertAttribs, ctx->Current.Attrib, @@ -261,7 +261,7 @@ init_machine(GLcontext *ctx, struct gl_program_machine *machine) * Map the texture images which the vertex program will access (if any). */ static void -map_textures(GLcontext *ctx, const struct gl_vertex_program *vp) +map_textures(struct gl_context *ctx, const struct gl_vertex_program *vp) { GLuint u; @@ -283,7 +283,7 @@ map_textures(GLcontext *ctx, const struct gl_vertex_program *vp) * Unmap the texture images which were used by the vertex program (if any). */ static void -unmap_textures(GLcontext *ctx, const struct gl_vertex_program *vp) +unmap_textures(struct gl_context *ctx, const struct gl_vertex_program *vp) { GLuint u; @@ -305,7 +305,7 @@ unmap_textures(GLcontext *ctx, const struct gl_vertex_program *vp) * This function executes vertex programs */ static GLboolean -run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage ) +run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vp_stage_data *store = VP_STAGE_DATA(stage); @@ -493,7 +493,7 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage ) * allocate data until the first time the stage is run. */ static GLboolean -init_vp(GLcontext *ctx, struct tnl_pipeline_stage *stage) +init_vp(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &(tnl->vb); @@ -546,7 +546,7 @@ dtr(struct tnl_pipeline_stage *stage) static void -validate_vp_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage) +validate_vp_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage) { if (ctx->VertexProgram._Current) { _swrast_update_texture_samplers(ctx); diff --git a/src/mesa/tnl/t_vb_render.c b/src/mesa/tnl/t_vb_render.c index 7d991009a14..cb319213249 100644 --- a/src/mesa/tnl/t_vb_render.c +++ b/src/mesa/tnl/t_vb_render.c @@ -146,7 +146,7 @@ do { \ /* TODO: do this for all primitives, verts and elts: */ -static void clip_elt_triangles( GLcontext *ctx, +static void clip_elt_triangles( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -235,7 +235,7 @@ static void clip_elt_triangles( GLcontext *ctx, /* Helper functions for drivers */ /**********************************************************************/ -void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) +void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *VB = &tnl->vb; @@ -246,7 +246,7 @@ void _tnl_RenderClippedPolygon( GLcontext *ctx, const GLuint *elts, GLuint n ) VB->Elts = tmp; } -void _tnl_RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) +void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj ) { TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Line( ctx, ii, jj ); @@ -259,7 +259,7 @@ void _tnl_RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) /**********************************************************************/ -static GLboolean run_render( GLcontext *ctx, +static GLboolean run_render( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { TNLcontext *tnl = TNL_CONTEXT(ctx); diff --git a/src/mesa/tnl/t_vb_rendertmp.h b/src/mesa/tnl/t_vb_rendertmp.h index 75f6f55bdce..4ed485a7bfd 100644 --- a/src/mesa/tnl/t_vb_rendertmp.h +++ b/src/mesa/tnl/t_vb_rendertmp.h @@ -57,7 +57,7 @@ #define RENDER_TAB_QUALIFIER static #endif -static void TAG(render_points)( GLcontext *ctx, +static void TAG(render_points)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -70,7 +70,7 @@ static void TAG(render_points)( GLcontext *ctx, POSTFIX; } -static void TAG(render_lines)( GLcontext *ctx, +static void TAG(render_lines)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -91,7 +91,7 @@ static void TAG(render_lines)( GLcontext *ctx, } -static void TAG(render_line_strip)( GLcontext *ctx, +static void TAG(render_line_strip)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -116,7 +116,7 @@ static void TAG(render_line_strip)( GLcontext *ctx, } -static void TAG(render_line_loop)( GLcontext *ctx, +static void TAG(render_line_loop)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -156,7 +156,7 @@ static void TAG(render_line_loop)( GLcontext *ctx, } -static void TAG(render_triangles)( GLcontext *ctx, +static void TAG(render_triangles)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -189,7 +189,7 @@ static void TAG(render_triangles)( GLcontext *ctx, -static void TAG(render_tri_strip)( GLcontext *ctx, +static void TAG(render_tri_strip)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -239,7 +239,7 @@ static void TAG(render_tri_strip)( GLcontext *ctx, } -static void TAG(render_tri_fan)( GLcontext *ctx, +static void TAG(render_tri_fan)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -286,7 +286,7 @@ static void TAG(render_tri_fan)( GLcontext *ctx, } -static void TAG(render_poly)( GLcontext *ctx, +static void TAG(render_poly)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -355,7 +355,7 @@ static void TAG(render_poly)( GLcontext *ctx, POSTFIX; } -static void TAG(render_quads)( GLcontext *ctx, +static void TAG(render_quads)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -388,7 +388,7 @@ static void TAG(render_quads)( GLcontext *ctx, POSTFIX; } -static void TAG(render_quad_strip)( GLcontext *ctx, +static void TAG(render_quad_strip)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -436,7 +436,7 @@ static void TAG(render_quad_strip)( GLcontext *ctx, POSTFIX; } -static void TAG(render_noop)( GLcontext *ctx, +static void TAG(render_noop)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -444,7 +444,7 @@ static void TAG(render_noop)( GLcontext *ctx, (void)(ctx && start && count && flags); } -RENDER_TAB_QUALIFIER void (*TAG(render_tab)[GL_POLYGON+2])(GLcontext *, +RENDER_TAB_QUALIFIER void (*TAG(render_tab)[GL_POLYGON+2])(struct gl_context *, GLuint, GLuint, GLuint) = diff --git a/src/mesa/tnl/t_vb_texgen.c b/src/mesa/tnl/t_vb_texgen.c index 950e0f54e9f..61430c396d5 100644 --- a/src/mesa/tnl/t_vb_texgen.c +++ b/src/mesa/tnl/t_vb_texgen.c @@ -54,7 +54,7 @@ struct texgen_stage_data; -typedef void (*texgen_func)( GLcontext *ctx, +typedef void (*texgen_func)( struct gl_context *ctx, struct texgen_stage_data *store, GLuint unit); @@ -248,7 +248,7 @@ static build_f_func build_f_tab[5] = { /* Special case texgen functions. */ -static void texgen_reflection_map_nv( GLcontext *ctx, +static void texgen_reflection_map_nv( struct gl_context *ctx, struct texgen_stage_data *store, GLuint unit ) { @@ -270,7 +270,7 @@ static void texgen_reflection_map_nv( GLcontext *ctx, -static void texgen_normal_map_nv( GLcontext *ctx, +static void texgen_normal_map_nv( struct gl_context *ctx, struct texgen_stage_data *store, GLuint unit ) { @@ -298,7 +298,7 @@ static void texgen_normal_map_nv( GLcontext *ctx, } -static void texgen_sphere_map( GLcontext *ctx, +static void texgen_sphere_map( struct gl_context *ctx, struct texgen_stage_data *store, GLuint unit ) { @@ -331,7 +331,7 @@ static void texgen_sphere_map( GLcontext *ctx, -static void texgen( GLcontext *ctx, +static void texgen( struct gl_context *ctx, struct texgen_stage_data *store, GLuint unit ) { @@ -480,7 +480,7 @@ static void texgen( GLcontext *ctx, -static GLboolean run_texgen_stage( GLcontext *ctx, +static GLboolean run_texgen_stage( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -505,7 +505,7 @@ static GLboolean run_texgen_stage( GLcontext *ctx, } -static void validate_texgen_stage( GLcontext *ctx, +static void validate_texgen_stage( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct texgen_stage_data *store = TEXGEN_STAGE_DATA(stage); @@ -555,7 +555,7 @@ static void validate_texgen_stage( GLcontext *ctx, /* Called the first time stage->run() is invoked. */ -static GLboolean alloc_texgen_data( GLcontext *ctx, +static GLboolean alloc_texgen_data( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; diff --git a/src/mesa/tnl/t_vb_texmat.c b/src/mesa/tnl/t_vb_texmat.c index 985d137e5cc..38aa51fc496 100644 --- a/src/mesa/tnl/t_vb_texmat.c +++ b/src/mesa/tnl/t_vb_texmat.c @@ -53,7 +53,7 @@ struct texmat_stage_data { -static GLboolean run_texmat_stage( GLcontext *ctx, +static GLboolean run_texmat_stage( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct texmat_stage_data *store = TEXMAT_STAGE_DATA(stage); @@ -82,7 +82,7 @@ static GLboolean run_texmat_stage( GLcontext *ctx, /* Called the first time stage->run() is invoked. */ -static GLboolean alloc_texmat_data( GLcontext *ctx, +static GLboolean alloc_texmat_data( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; diff --git a/src/mesa/tnl/t_vb_vertex.c b/src/mesa/tnl/t_vb_vertex.c index 453479227b7..26e8ae065d5 100644 --- a/src/mesa/tnl/t_vb_vertex.c +++ b/src/mesa/tnl/t_vb_vertex.c @@ -58,7 +58,7 @@ struct vertex_stage_data { * t_render_clip.h. */ #define USER_CLIPTEST(NAME, SZ) \ -static void NAME( GLcontext *ctx, \ +static void NAME( struct gl_context *ctx, \ GLvector4f *clip, \ GLubyte *clipmask, \ GLubyte *clipormask, \ @@ -105,7 +105,7 @@ USER_CLIPTEST(userclip2, 2) USER_CLIPTEST(userclip3, 3) USER_CLIPTEST(userclip4, 4) -static void (*(usercliptab[5]))( GLcontext *, +static void (*(usercliptab[5]))( struct gl_context *, GLvector4f *, GLubyte *, GLubyte *, GLubyte * ) = { @@ -118,7 +118,7 @@ static void (*(usercliptab[5]))( GLcontext *, void -tnl_clip_prepare(GLcontext *ctx) +tnl_clip_prepare(struct gl_context *ctx) { /* Neither the x86 nor sparc asm cliptest functions have been updated * for ARB_depth_clamp, so force the C paths. @@ -134,7 +134,7 @@ tnl_clip_prepare(GLcontext *ctx) -static GLboolean run_vertex_stage( GLcontext *ctx, +static GLboolean run_vertex_stage( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct vertex_stage_data *store = (struct vertex_stage_data *)stage->privatePtr; @@ -229,7 +229,7 @@ static GLboolean run_vertex_stage( GLcontext *ctx, } -static GLboolean init_vertex_stage( GLcontext *ctx, +static GLboolean init_vertex_stage( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; diff --git a/src/mesa/tnl/t_vertex.c b/src/mesa/tnl/t_vertex.c index c1b1570232a..f1cb795cd6c 100644 --- a/src/mesa/tnl/t_vertex.c +++ b/src/mesa/tnl/t_vertex.c @@ -106,7 +106,7 @@ void _tnl_register_fastpath( struct tnl_clipspace *vtx, /*********************************************************************** * Build codegen functions or return generic ones: */ -static void choose_emit_func( GLcontext *ctx, GLuint count, GLubyte *dest) +static void choose_emit_func( struct gl_context *ctx, GLuint count, GLubyte *dest) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); @@ -150,7 +150,7 @@ static void choose_emit_func( GLcontext *ctx, GLuint count, GLubyte *dest) -static void choose_interp_func( GLcontext *ctx, +static void choose_interp_func( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ) @@ -168,7 +168,7 @@ static void choose_interp_func( GLcontext *ctx, } -static void choose_copy_pv_func( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void choose_copy_pv_func( struct gl_context *ctx, GLuint edst, GLuint esrc ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); @@ -190,7 +190,7 @@ static void choose_copy_pv_func( GLcontext *ctx, GLuint edst, GLuint esrc ) /* Interpolate between two vertices to produce a third: */ -void _tnl_interp( GLcontext *ctx, +void _tnl_interp( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ) @@ -201,7 +201,7 @@ void _tnl_interp( GLcontext *ctx, /* Copy colors from one vertex to another: */ -void _tnl_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ) +void _tnl_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); vtx->copy_pv( ctx, edst, esrc ); @@ -212,7 +212,7 @@ void _tnl_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ) * reverse any viewport transformation, swizzling or other conversions * which may have been applied: */ -void _tnl_get_attr( GLcontext *ctx, const void *vin, +void _tnl_get_attr( struct gl_context *ctx, const void *vin, GLenum attr, GLfloat *dest ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); @@ -231,7 +231,7 @@ void _tnl_get_attr( GLcontext *ctx, const void *vin, */ if (attr == _TNL_ATTRIB_POINTSIZE) { /* If the hardware vertex doesn't have point size then use size from - * GLcontext. XXX this will be wrong if drawing attenuated points! + * struct gl_context. XXX this will be wrong if drawing attenuated points! */ dest[0] = ctx->Point.Size; } @@ -243,7 +243,7 @@ void _tnl_get_attr( GLcontext *ctx, const void *vin, /* Complementary operation to the above. */ -void _tnl_set_attr( GLcontext *ctx, void *vout, +void _tnl_set_attr( struct gl_context *ctx, void *vout, GLenum attr, const GLfloat *src ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); @@ -260,14 +260,14 @@ void _tnl_set_attr( GLcontext *ctx, void *vout, } -void *_tnl_get_vertex( GLcontext *ctx, GLuint nr ) +void *_tnl_get_vertex( struct gl_context *ctx, GLuint nr ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); return vtx->vertex_buf + nr * vtx->vertex_size; } -void _tnl_invalidate_vertex_state( GLcontext *ctx, GLuint new_state ) +void _tnl_invalidate_vertex_state( struct gl_context *ctx, GLuint new_state ) { if (new_state & (_DD_NEW_TRI_LIGHT_TWOSIDE|_DD_NEW_TRI_UNFILLED) ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); @@ -285,7 +285,7 @@ static void invalidate_funcs( struct tnl_clipspace *vtx ) vtx->new_inputs = ~0; } -GLuint _tnl_install_attrs( GLcontext *ctx, const struct tnl_attr_map *map, +GLuint _tnl_install_attrs( struct gl_context *ctx, const struct tnl_attr_map *map, GLuint nr, const GLfloat *vp, GLuint unpacked_size ) { @@ -360,7 +360,7 @@ GLuint _tnl_install_attrs( GLcontext *ctx, const struct tnl_attr_map *map, -void _tnl_invalidate_vertices( GLcontext *ctx, GLuint newinputs ) +void _tnl_invalidate_vertices( struct gl_context *ctx, GLuint newinputs ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); vtx->new_inputs |= newinputs; @@ -370,14 +370,14 @@ void _tnl_invalidate_vertices( GLcontext *ctx, GLuint newinputs ) /* This event has broader use beyond this file - will move elsewhere * and probably invoke a driver callback. */ -void _tnl_notify_pipeline_output_change( GLcontext *ctx ) +void _tnl_notify_pipeline_output_change( struct gl_context *ctx ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); invalidate_funcs(vtx); } -static void adjust_input_ptrs( GLcontext *ctx, GLint diff) +static void adjust_input_ptrs( struct gl_context *ctx, GLint diff) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); @@ -392,7 +392,7 @@ static void adjust_input_ptrs( GLcontext *ctx, GLint diff) } } -static void update_input_ptrs( GLcontext *ctx, GLuint start ) +static void update_input_ptrs( struct gl_context *ctx, GLuint start ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); @@ -424,7 +424,7 @@ static void update_input_ptrs( GLcontext *ctx, GLuint start ) } -void _tnl_build_vertices( GLcontext *ctx, +void _tnl_build_vertices( struct gl_context *ctx, GLuint start, GLuint end, GLuint newinputs ) @@ -439,7 +439,7 @@ void _tnl_build_vertices( GLcontext *ctx, /* Emit VB vertices start..end to dest. Note that VB vertex at * postion start will be emitted to dest at position zero. */ -void *_tnl_emit_vertices_to_buffer( GLcontext *ctx, +void *_tnl_emit_vertices_to_buffer( struct gl_context *ctx, GLuint start, GLuint end, void *dest ) @@ -457,7 +457,7 @@ void *_tnl_emit_vertices_to_buffer( GLcontext *ctx, * postion start will be emitted to dest at position zero. */ -void *_tnl_emit_indexed_vertices_to_buffer( GLcontext *ctx, +void *_tnl_emit_indexed_vertices_to_buffer( struct gl_context *ctx, const GLuint *elts, GLuint start, GLuint end, @@ -482,7 +482,7 @@ void *_tnl_emit_indexed_vertices_to_buffer( GLcontext *ctx, } -void _tnl_init_vertices( GLcontext *ctx, +void _tnl_init_vertices( struct gl_context *ctx, GLuint vb_size, GLuint max_vertex_size ) { @@ -533,7 +533,7 @@ void _tnl_init_vertices( GLcontext *ctx, } -void _tnl_free_vertices( GLcontext *ctx ) +void _tnl_free_vertices( struct gl_context *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); if (tnl) { diff --git a/src/mesa/tnl/t_vertex.h b/src/mesa/tnl/t_vertex.h index 2dfd7b57f01..252f2f7c295 100644 --- a/src/mesa/tnl/t_vertex.h +++ b/src/mesa/tnl/t_vertex.h @@ -78,43 +78,43 @@ extern const struct tnl_format_info _tnl_format_info[EMIT_MAX]; /* Interpolate between two vertices to produce a third: */ -extern void _tnl_interp( GLcontext *ctx, +extern void _tnl_interp( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ); /* Copy colors from one vertex to another: */ -extern void _tnl_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ); +extern void _tnl_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc ); /* Extract a named attribute from a hardware vertex. Will have to * reverse any viewport transformation, swizzling or other conversions * which may have been applied: */ -extern void _tnl_get_attr( GLcontext *ctx, const void *vertex, GLenum attrib, +extern void _tnl_get_attr( struct gl_context *ctx, const void *vertex, GLenum attrib, GLfloat *dest ); /* Complementary to the above. */ -extern void _tnl_set_attr( GLcontext *ctx, void *vout, GLenum attrib, +extern void _tnl_set_attr( struct gl_context *ctx, void *vout, GLenum attrib, const GLfloat *src ); -extern void *_tnl_get_vertex( GLcontext *ctx, GLuint nr ); +extern void *_tnl_get_vertex( struct gl_context *ctx, GLuint nr ); -extern GLuint _tnl_install_attrs( GLcontext *ctx, +extern GLuint _tnl_install_attrs( struct gl_context *ctx, const struct tnl_attr_map *map, GLuint nr, const GLfloat *vp, GLuint unpacked_size ); -extern void _tnl_free_vertices( GLcontext *ctx ); +extern void _tnl_free_vertices( struct gl_context *ctx ); -extern void _tnl_init_vertices( GLcontext *ctx, +extern void _tnl_init_vertices( struct gl_context *ctx, GLuint vb_size, GLuint max_vertex_size ); -extern void *_tnl_emit_vertices_to_buffer( GLcontext *ctx, +extern void *_tnl_emit_vertices_to_buffer( struct gl_context *ctx, GLuint start, GLuint end, void *dest ); @@ -124,23 +124,23 @@ extern void *_tnl_emit_vertices_to_buffer( GLcontext *ctx, * the same functionality. */ -extern void *_tnl_emit_indexed_vertices_to_buffer( GLcontext *ctx, +extern void *_tnl_emit_indexed_vertices_to_buffer( struct gl_context *ctx, const GLuint *elts, GLuint start, GLuint end, void *dest ); -extern void _tnl_build_vertices( GLcontext *ctx, +extern void _tnl_build_vertices( struct gl_context *ctx, GLuint start, GLuint end, GLuint newinputs ); -extern void _tnl_invalidate_vertices( GLcontext *ctx, GLuint newinputs ); +extern void _tnl_invalidate_vertices( struct gl_context *ctx, GLuint newinputs ); -extern void _tnl_invalidate_vertex_state( GLcontext *ctx, GLuint new_state ); +extern void _tnl_invalidate_vertex_state( struct gl_context *ctx, GLuint new_state ); -extern void _tnl_notify_pipeline_output_change( GLcontext *ctx ); +extern void _tnl_notify_pipeline_output_change( struct gl_context *ctx ); #define GET_VERTEX_STATE(ctx) &(TNL_CONTEXT(ctx)->clipspace) @@ -153,29 +153,29 @@ void _tnl_register_fastpath( struct tnl_clipspace *vtx, /* t_vertex_generic.c -- Internal functions for t_vertex.c */ -void _tnl_generic_copy_pv_extras( GLcontext *ctx, +void _tnl_generic_copy_pv_extras( struct gl_context *ctx, GLuint dst, GLuint src ); -void _tnl_generic_interp_extras( GLcontext *ctx, +void _tnl_generic_interp_extras( struct gl_context *ctx, GLfloat t, GLuint dst, GLuint out, GLuint in, GLboolean force_boundary ); -void _tnl_generic_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ); +void _tnl_generic_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc ); -void _tnl_generic_interp( GLcontext *ctx, +void _tnl_generic_interp( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ); -void _tnl_generic_emit( GLcontext *ctx, +void _tnl_generic_emit( struct gl_context *ctx, GLuint count, GLubyte *v ); -void _tnl_generate_hardwired_emit( GLcontext *ctx ); +void _tnl_generate_hardwired_emit( struct gl_context *ctx ); /* t_vertex_sse.c -- Internal functions for t_vertex.c */ -void _tnl_generate_sse_emit( GLcontext *ctx ); +void _tnl_generate_sse_emit( struct gl_context *ctx ); #endif diff --git a/src/mesa/tnl/t_vertex_generic.c b/src/mesa/tnl/t_vertex_generic.c index b1ea1424649..12da30f5eb3 100644 --- a/src/mesa/tnl/t_vertex_generic.c +++ b/src/mesa/tnl/t_vertex_generic.c @@ -866,7 +866,7 @@ const struct tnl_format_info _tnl_format_info[EMIT_MAX] = * vertices */ #define EMIT5(NR, F0, F1, F2, F3, F4, NAME) \ -static void NAME( GLcontext *ctx, \ +static void NAME( struct gl_context *ctx, \ GLuint count, \ GLubyte *v ) \ { \ @@ -929,7 +929,7 @@ EMIT4(insert_4f_4, insert_4ub_4f_rgba_4, insert_2f_2, insert_2f_2, emit_xyzw4_rg /* Use the codegen paths to select one of a number of hardwired * fastpaths. */ -void _tnl_generate_hardwired_emit( GLcontext *ctx ) +void _tnl_generate_hardwired_emit( struct gl_context *ctx ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); tnl_emit_func func = NULL; @@ -987,7 +987,7 @@ void _tnl_generate_hardwired_emit( GLcontext *ctx ) * vertices */ -void _tnl_generic_emit( GLcontext *ctx, +void _tnl_generic_emit( struct gl_context *ctx, GLuint count, GLubyte *v ) { @@ -1007,7 +1007,7 @@ void _tnl_generic_emit( GLcontext *ctx, } -void _tnl_generic_interp( GLcontext *ctx, +void _tnl_generic_interp( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ) @@ -1061,7 +1061,7 @@ void _tnl_generic_interp( GLcontext *ctx, /* Extract color attributes from one vertex and insert them into * another. (Shortcircuit extract/insert with memcpy). */ -void _tnl_generic_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ) +void _tnl_generic_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); GLubyte *vsrc = vtx->vertex_buf + esrc * vtx->vertex_size; @@ -1085,7 +1085,7 @@ void _tnl_generic_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc ) /* Helper functions for hardware which doesn't put back colors and/or * edgeflags into vertices. */ -void _tnl_generic_interp_extras( GLcontext *ctx, +void _tnl_generic_interp_extras( struct gl_context *ctx, GLfloat t, GLuint dst, GLuint out, GLuint in, GLboolean force_boundary ) @@ -1128,7 +1128,7 @@ void _tnl_generic_interp_extras( GLcontext *ctx, _tnl_generic_interp(ctx, t, dst, out, in, force_boundary); } -void _tnl_generic_copy_pv_extras( GLcontext *ctx, +void _tnl_generic_copy_pv_extras( struct gl_context *ctx, GLuint dst, GLuint src ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; diff --git a/src/mesa/tnl/t_vertex_sse.c b/src/mesa/tnl/t_vertex_sse.c index 98058f3bdac..93189656f74 100644 --- a/src/mesa/tnl/t_vertex_sse.c +++ b/src/mesa/tnl/t_vertex_sse.c @@ -54,7 +54,7 @@ struct x86_program { struct x86_function func; - GLcontext *ctx; + struct gl_context *ctx; GLboolean inputs_safe; GLboolean outputs_safe; GLboolean have_sse2; @@ -342,7 +342,7 @@ static void update_src_ptr( struct x86_program *p, */ static GLboolean build_vertex_emit( struct x86_program *p ) { - GLcontext *ctx = p->ctx; + struct gl_context *ctx = p->ctx; TNLcontext *tnl = TNL_CONTEXT(ctx); struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); GLuint j = 0; @@ -638,7 +638,7 @@ static GLboolean build_vertex_emit( struct x86_program *p ) -void _tnl_generate_sse_emit( GLcontext *ctx ) +void _tnl_generate_sse_emit( struct gl_context *ctx ) { struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx); struct x86_program p; @@ -676,7 +676,7 @@ void _tnl_generate_sse_emit( GLcontext *ctx ) #else -void _tnl_generate_sse_emit( GLcontext *ctx ) +void _tnl_generate_sse_emit( struct gl_context *ctx ) { /* Dummy version for when USE_SSE_ASM not defined */ } diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c index 735937bbe29..421ec88a454 100644 --- a/src/mesa/tnl/t_vp_build.c +++ b/src/mesa/tnl/t_vp_build.c @@ -39,7 +39,7 @@ /** * XXX This should go away someday, but still referenced by some drivers... */ -void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx ) +void _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx ) { const struct gl_vertex_program *prev = ctx->VertexProgram._Current; diff --git a/src/mesa/tnl/t_vp_build.h b/src/mesa/tnl/t_vp_build.h index d6ebc66c045..1d10ff245d9 100644 --- a/src/mesa/tnl/t_vp_build.h +++ b/src/mesa/tnl/t_vp_build.h @@ -37,6 +37,6 @@ _NEW_FOG | \ _NEW_POINT) -extern void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx ); +extern void _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx ); #endif diff --git a/src/mesa/tnl/tnl.h b/src/mesa/tnl/tnl.h index 2c0d1fef737..702efdc5cca 100644 --- a/src/mesa/tnl/tnl.h +++ b/src/mesa/tnl/tnl.h @@ -37,43 +37,43 @@ * itself.) */ extern GLboolean -_tnl_CreateContext( GLcontext *ctx ); +_tnl_CreateContext( struct gl_context *ctx ); extern void -_tnl_DestroyContext( GLcontext *ctx ); +_tnl_DestroyContext( struct gl_context *ctx ); extern void -_tnl_InvalidateState( GLcontext *ctx, GLuint new_state ); +_tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ); /* Functions to revive the tnl module after being unhooked from * dispatch and/or driver callbacks. */ extern void -_tnl_wakeup( GLcontext *ctx ); +_tnl_wakeup( struct gl_context *ctx ); /* Driver configuration options: */ extern void -_tnl_need_projected_coords( GLcontext *ctx, GLboolean flag ); +_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag ); /* Control whether T&L does per-vertex fog */ extern void -_tnl_allow_vertex_fog( GLcontext *ctx, GLboolean value ); +_tnl_allow_vertex_fog( struct gl_context *ctx, GLboolean value ); extern void -_tnl_allow_pixel_fog( GLcontext *ctx, GLboolean value ); +_tnl_allow_pixel_fog( struct gl_context *ctx, GLboolean value ); extern GLboolean -_tnl_program_string(GLcontext *ctx, GLenum target, struct gl_program *program); +_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program); struct _mesa_prim; struct _mesa_index_buffer; void -_tnl_draw_prims( GLcontext *ctx, +_tnl_draw_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -82,7 +82,7 @@ _tnl_draw_prims( GLcontext *ctx, GLuint max_index); void -_tnl_vbo_draw_prims( GLcontext *ctx, +_tnl_vbo_draw_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -92,9 +92,9 @@ _tnl_vbo_draw_prims( GLcontext *ctx, GLuint max_index); extern void -_mesa_load_tracked_matrices(GLcontext *ctx); +_mesa_load_tracked_matrices(struct gl_context *ctx); extern void -_tnl_RasterPos(GLcontext *ctx, const GLfloat vObj[4]); +_tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]); #endif diff --git a/src/mesa/tnl_dd/imm/t_dd_imm_primtmp.h b/src/mesa/tnl_dd/imm/t_dd_imm_primtmp.h index 97dca3fd421..7103db5355b 100644 --- a/src/mesa/tnl_dd/imm/t_dd_imm_primtmp.h +++ b/src/mesa/tnl_dd/imm/t_dd_imm_primtmp.h @@ -46,7 +46,7 @@ * GL_POINTS */ -static void TAG(flush_point_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_point_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { if ( !v0->mask ) { LOCAL_VARS; @@ -59,16 +59,16 @@ static void TAG(flush_point_0)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_LINES */ -static void TAG(flush_line_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_line_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_line_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; FLUSH_VERTEX = TAG(flush_line_1); ACTIVE_VERTEX = IMM_VERTICES( 1 ); } -static void TAG(flush_line_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v1 = v0 - 1; @@ -85,10 +85,10 @@ static void TAG(flush_line_1)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_LINE_LOOP */ -static void TAG(flush_line_loop_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_line_loop_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_line_loop_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_line_loop_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_line_loop_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_loop_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -107,7 +107,7 @@ static void TAG(flush_line_loop_0)( GLcontext *ctx, TNL_VERTEX *v0 ) EMIT_VERTEX( b ); \ } -static void TAG(flush_line_loop_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_loop_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v1 = v0 - 1; @@ -116,7 +116,7 @@ static void TAG(flush_line_loop_1)( GLcontext *ctx, TNL_VERTEX *v0 ) DRAW_LINELOOP_LINE( v1, v0 ); } -static void TAG(flush_line_loop_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_loop_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v1 = v0 + 1; @@ -125,7 +125,7 @@ static void TAG(flush_line_loop_2)( GLcontext *ctx, TNL_VERTEX *v0 ) DRAW_LINELOOP_LINE( v1, v0 ); } -static void TAG(end_line_loop)( GLcontext *ctx ) +static void TAG(end_line_loop)( struct gl_context *ctx ) { LOCAL_VARS; @@ -142,10 +142,10 @@ static void TAG(end_line_loop)( GLcontext *ctx ) * GL_LINE_STRIP */ -static void TAG(flush_line_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_line_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_line_strip_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_line_strip_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_line_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_strip_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -154,7 +154,7 @@ static void TAG(flush_line_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) } -static void TAG(flush_line_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_strip_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v1 = v0 - 1; @@ -173,7 +173,7 @@ static void TAG(flush_line_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) } } -static void TAG(flush_line_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_line_strip_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v1 = v0 + 1; @@ -198,10 +198,10 @@ static void TAG(flush_line_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_TRIANGLES */ -static void TAG(flush_triangle_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_triangle_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_triangle_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_triangle_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_triangle_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_triangle_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -212,7 +212,7 @@ static void TAG(flush_triangle_0)( GLcontext *ctx, TNL_VERTEX *v0 ) BEGIN_PRIM( GL_TRIANGLES, 0 ); } -static void TAG(flush_triangle_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_triangle_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -222,7 +222,7 @@ static void TAG(flush_triangle_1)( GLcontext *ctx, TNL_VERTEX *v0 ) FLUSH_VERTEX = TAG(flush_triangle_2); } -static void TAG(flush_triangle_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_triangle_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v2 = v0 - 2; @@ -249,18 +249,18 @@ static void TAG(flush_triangle_2)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_TRIANGLE_STRIP */ -static void TAG(flush_tri_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_tri_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_tri_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_tri_strip_3)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_tri_strip_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_tri_strip_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_tri_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_strip_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 1 ); FLUSH_VERTEX = TAG(flush_tri_strip_1); } -static void TAG(flush_tri_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_strip_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 2 ); @@ -283,7 +283,7 @@ static void TAG(flush_tri_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) EMIT_VERTEX( v0 ); \ } -static void TAG(flush_tri_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_strip_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; FLUSH_VERTEX = TAG(flush_tri_strip_3); @@ -291,7 +291,7 @@ static void TAG(flush_tri_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) DO_TRISTRIP_TRI( 0, 1 ); } -static void TAG(flush_tri_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_strip_3)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; FLUSH_VERTEX = TAG(flush_tri_strip_4); @@ -299,7 +299,7 @@ static void TAG(flush_tri_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ) DO_TRISTRIP_TRI( 1, 2 ); } -static void TAG(flush_tri_strip_4)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_strip_4)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; FLUSH_VERTEX = TAG(flush_tri_strip_5); @@ -307,7 +307,7 @@ static void TAG(flush_tri_strip_4)( GLcontext *ctx, TNL_VERTEX *v0 ) DO_TRISTRIP_TRI( 2, 3 ); } -static void TAG(flush_tri_strip_5)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_strip_5)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; FLUSH_VERTEX = TAG(flush_tri_strip_2); @@ -321,10 +321,10 @@ static void TAG(flush_tri_strip_5)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_TRIANGLE_FAN */ -static void TAG(flush_tri_fan_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_tri_fan_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_tri_fan_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_tri_fan_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_tri_fan_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_fan_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -332,7 +332,7 @@ static void TAG(flush_tri_fan_0)( GLcontext *ctx, TNL_VERTEX *v0 ) FLUSH_VERTEX = TAG(flush_tri_fan_1); } -static void TAG(flush_tri_fan_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_fan_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -356,7 +356,7 @@ static void TAG(flush_tri_fan_1)( GLcontext *ctx, TNL_VERTEX *v0 ) EMIT_VERTEX( v0 ); \ } -static void TAG(flush_tri_fan_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_fan_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 1 ); @@ -364,7 +364,7 @@ static void TAG(flush_tri_fan_2)( GLcontext *ctx, TNL_VERTEX *v0 ) DO_TRIFAN_TRI( 0, 1 ); } -static void TAG(flush_tri_fan_3)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_tri_fan_3)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 2 ); @@ -378,32 +378,32 @@ static void TAG(flush_tri_fan_3)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_QUADS */ -static void TAG(flush_quad_3)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_quad_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_quad_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_quad_3)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_quad_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_quad_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_quad_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; IMM_VERTEX( v0 ) = v0 + 1; FLUSH_VERTEX = TAG(flush_quad_1); } -static void TAG(flush_quad_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; IMM_VERTEX( v0 ) = v0 + 1; FLUSH_VERTEX = TAG(flush_quad_2); } -static void TAG(flush_quad_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; IMM_VERTEX( v0 ) = v0 + 1; FLUSH_VERTEX = TAG(flush_quad_3); } -static void TAG(flush_quad_3)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_3)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v3 = v0 - 3; @@ -431,11 +431,11 @@ static void TAG(flush_quad_3)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_QUAD_STRIP */ -static void TAG(flush_quad_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_quad_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_quad_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_quad_strip_3)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_quad_strip_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_quad_strip_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_quad_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_strip_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -444,7 +444,7 @@ static void TAG(flush_quad_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) FLUSH_VERTEX = TAG(flush_quad_strip_1); } -static void TAG(flush_quad_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_strip_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -453,7 +453,7 @@ static void TAG(flush_quad_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) FLUSH_VERTEX = TAG(flush_quad_strip_2); } -static void TAG(flush_quad_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_strip_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; @@ -462,7 +462,7 @@ static void TAG(flush_quad_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) FLUSH_VERTEX = TAG(flush_quad_strip_3); } -static void TAG(flush_quad_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_quad_strip_3)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; TNL_VERTEX *v3 = IMM_VERTEX( v3 ); @@ -489,17 +489,17 @@ static void TAG(flush_quad_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ) * GL_POLYGON */ -static void TAG(flush_poly_2)( GLcontext *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_poly_1)( GLcontext *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_poly_2)( struct gl_context *ctx, TNL_VERTEX *v0 ); +static void TAG(flush_poly_1)( struct gl_context *ctx, TNL_VERTEX *v0 ); -static void TAG(flush_poly_0)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_poly_0)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 1 ); FLUSH_VERTEX = TAG(flush_poly_1); } -static void TAG(flush_poly_1)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_poly_1)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 2 ); @@ -522,7 +522,7 @@ static void TAG(flush_poly_1)( GLcontext *ctx, TNL_VERTEX *v0 ) EMIT_VERTEX( v0 ); \ } -static void TAG(flush_poly_2)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_poly_2)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 1 ); @@ -530,7 +530,7 @@ static void TAG(flush_poly_2)( GLcontext *ctx, TNL_VERTEX *v0 ) DO_POLY_TRI( 0, 1 ); } -static void TAG(flush_poly_3)( GLcontext *ctx, TNL_VERTEX *v0 ) +static void TAG(flush_poly_3)( struct gl_context *ctx, TNL_VERTEX *v0 ) { LOCAL_VARS; ACTIVE_VERTEX = IMM_VERTICES( 2 ); @@ -539,7 +539,7 @@ static void TAG(flush_poly_3)( GLcontext *ctx, TNL_VERTEX *v0 ) } -void (*TAG(flush_tab)[GL_POLYGON+1])( GLcontext *, TNL_VERTEX * ) = +void (*TAG(flush_tab)[GL_POLYGON+1])( struct gl_context *, TNL_VERTEX * ) = { TAG(flush_point), TAG(flush_line_0), diff --git a/src/mesa/tnl_dd/imm/t_dd_imm_vb.c b/src/mesa/tnl_dd/imm/t_dd_imm_vb.c index 0c4462f556f..5081d92dbaf 100644 --- a/src/mesa/tnl_dd/imm/t_dd_imm_vb.c +++ b/src/mesa/tnl_dd/imm/t_dd_imm_vb.c @@ -113,7 +113,7 @@ do { \ /* Clip a line against the viewport and user clip planes. */ -static void TAG(clip_draw_line)( GLcontext *ctx, +static void TAG(clip_draw_line)( struct gl_context *ctx, TNL_VERTEX *I, TNL_VERTEX *J, GLuint mask ) @@ -140,7 +140,7 @@ static void TAG(clip_draw_line)( GLcontext *ctx, /* Clip a triangle against the viewport and user clip planes. */ -static void TAG(clip_draw_triangle)( GLcontext *ctx, +static void TAG(clip_draw_triangle)( struct gl_context *ctx, TNL_VERTEX *v0, TNL_VERTEX *v1, TNL_VERTEX *v2, @@ -173,7 +173,7 @@ static void TAG(clip_draw_triangle)( GLcontext *ctx, } -static __inline void TAG(draw_triangle)( GLcontext *ctx, +static __inline void TAG(draw_triangle)( struct gl_context *ctx, TNL_VERTEX *v0, TNL_VERTEX *v1, TNL_VERTEX *v2 ) @@ -188,7 +188,7 @@ static __inline void TAG(draw_triangle)( GLcontext *ctx, } } -static __inline void TAG(draw_line)( GLcontext *ctx, +static __inline void TAG(draw_line)( struct gl_context *ctx, TNL_VERTEX *v0, TNL_VERTEX *v1 ) { diff --git a/src/mesa/tnl_dd/imm/t_dd_imm_vbtmp.h b/src/mesa/tnl_dd/imm/t_dd_imm_vbtmp.h index 2f76553cff9..bb394622fa4 100644 --- a/src/mesa/tnl_dd/imm/t_dd_imm_vbtmp.h +++ b/src/mesa/tnl_dd/imm/t_dd_imm_vbtmp.h @@ -41,7 +41,7 @@ /* COPY_VERTEX_FROM_CURRENT in t_dd_imm_vapi.c */ -static void TAG(emit_vfmt)( GLcontext *ctx, VERTEX *v ) +static void TAG(emit_vfmt)( struct gl_context *ctx, VERTEX *v ) { LOCALVARS ; @@ -132,7 +132,7 @@ static void TAG(emit_vfmt)( GLcontext *ctx, VERTEX *v ) -static void TAG(interp)( GLcontext *ctx, +static void TAG(interp)( struct gl_context *ctx, GLfloat t, TNL_VERTEX *dst, TNL_VERTEX *in, @@ -240,7 +240,7 @@ static void TAG(interp)( GLcontext *ctx, } -static __inline void TAG(copy_pv)( GLcontext *ctx, +static __inline void TAG(copy_pv)( struct gl_context *ctx, TNL_VERTEX *dst, TNL_VERTEX *src ) { diff --git a/src/mesa/tnl_dd/t_dd.c b/src/mesa/tnl_dd/t_dd.c index 731da5c320d..214ebd4280a 100644 --- a/src/mesa/tnl_dd/t_dd.c +++ b/src/mesa/tnl_dd/t_dd.c @@ -26,7 +26,7 @@ * Keith Whitwell */ -static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void copy_pv_rgba4_spec5( struct gl_context *ctx, GLuint edst, GLuint esrc ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); GLubyte *i810verts = (GLubyte *)imesa->verts; @@ -37,7 +37,7 @@ static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc ) dst->ui[5] = src->ui[5]; } -static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void copy_pv_rgba4( struct gl_context *ctx, GLuint edst, GLuint esrc ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); GLubyte *i810verts = (GLubyte *)imesa->verts; @@ -47,7 +47,7 @@ static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc ) dst->ui[4] = src->ui[4]; } -static void copy_pv_rgba3( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void copy_pv_rgba3( struct gl_context *ctx, GLuint edst, GLuint esrc ) { i810ContextPtr imesa = I810_CONTEXT( ctx ); GLubyte *i810verts = (GLubyte *)imesa->verts; diff --git a/src/mesa/tnl_dd/t_dd_dmatmp.h b/src/mesa/tnl_dd/t_dd_dmatmp.h index 2424204b886..997fc0b20c1 100644 --- a/src/mesa/tnl_dd/t_dd_dmatmp.h +++ b/src/mesa/tnl_dd/t_dd_dmatmp.h @@ -73,7 +73,7 @@ do { \ #if (HAVE_ELTS) -static void *TAG(emit_elts)( GLcontext *ctx, GLuint *elts, GLuint nr, +static void *TAG(emit_elts)( struct gl_context *ctx, GLuint *elts, GLuint nr, void *buf) { GLint i; @@ -94,7 +94,7 @@ static void *TAG(emit_elts)( GLcontext *ctx, GLuint *elts, GLuint nr, } #endif -static __inline void *TAG(emit_verts)( GLcontext *ctx, GLuint start, +static __inline void *TAG(emit_verts)( struct gl_context *ctx, GLuint start, GLuint count, void *buf ) { return EMIT_VERTS(ctx, start, count, buf); @@ -104,7 +104,7 @@ static __inline void *TAG(emit_verts)( GLcontext *ctx, GLuint start, * Render non-indexed primitives. ***********************************************************************/ -static void TAG(render_points_verts)( GLcontext *ctx, +static void TAG(render_points_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -133,7 +133,7 @@ static void TAG(render_points_verts)( GLcontext *ctx, } } -static void TAG(render_lines_verts)( GLcontext *ctx, +static void TAG(render_lines_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -169,7 +169,7 @@ static void TAG(render_lines_verts)( GLcontext *ctx, } -static void TAG(render_line_strip_verts)( GLcontext *ctx, +static void TAG(render_line_strip_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -201,7 +201,7 @@ static void TAG(render_line_strip_verts)( GLcontext *ctx, } -static void TAG(render_line_loop_verts)( GLcontext *ctx, +static void TAG(render_line_loop_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -267,7 +267,7 @@ static void TAG(render_line_loop_verts)( GLcontext *ctx, } -static void TAG(render_triangles_verts)( GLcontext *ctx, +static void TAG(render_triangles_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -298,7 +298,7 @@ static void TAG(render_triangles_verts)( GLcontext *ctx, -static void TAG(render_tri_strip_verts)( GLcontext *ctx, +static void TAG(render_tri_strip_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -336,7 +336,7 @@ static void TAG(render_tri_strip_verts)( GLcontext *ctx, } } -static void TAG(render_tri_fan_verts)( GLcontext *ctx, +static void TAG(render_tri_fan_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -376,7 +376,7 @@ static void TAG(render_tri_fan_verts)( GLcontext *ctx, } -static void TAG(render_poly_verts)( GLcontext *ctx, +static void TAG(render_poly_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -414,7 +414,7 @@ static void TAG(render_poly_verts)( GLcontext *ctx, } } -static void TAG(render_quad_strip_verts)( GLcontext *ctx, +static void TAG(render_quad_strip_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -540,7 +540,7 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, } -static void TAG(render_quads_verts)( GLcontext *ctx, +static void TAG(render_quads_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -649,7 +649,7 @@ static void TAG(render_quads_verts)( GLcontext *ctx, } } -static void TAG(render_noop)( GLcontext *ctx, +static void TAG(render_noop)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -680,7 +680,7 @@ static tnl_render_func TAG(render_tab_verts)[GL_POLYGON+2] = ****************************************************************************/ #if (HAVE_ELTS) -static void TAG(render_points_elts)( GLcontext *ctx, +static void TAG(render_points_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -712,7 +712,7 @@ static void TAG(render_points_elts)( GLcontext *ctx, -static void TAG(render_lines_elts)( GLcontext *ctx, +static void TAG(render_lines_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -749,7 +749,7 @@ static void TAG(render_lines_elts)( GLcontext *ctx, } -static void TAG(render_line_strip_elts)( GLcontext *ctx, +static void TAG(render_line_strip_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -783,7 +783,7 @@ static void TAG(render_line_strip_elts)( GLcontext *ctx, } -static void TAG(render_line_loop_elts)( GLcontext *ctx, +static void TAG(render_line_loop_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -855,7 +855,7 @@ static void TAG(render_line_loop_elts)( GLcontext *ctx, * buffers. For elts, this is probably no better (worse?) than the * standard path. */ -static void TAG(render_triangles_elts)( GLcontext *ctx, +static void TAG(render_triangles_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -889,7 +889,7 @@ static void TAG(render_triangles_elts)( GLcontext *ctx, -static void TAG(render_tri_strip_elts)( GLcontext *ctx, +static void TAG(render_tri_strip_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -927,7 +927,7 @@ static void TAG(render_tri_strip_elts)( GLcontext *ctx, } } -static void TAG(render_tri_fan_elts)( GLcontext *ctx, +static void TAG(render_tri_fan_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -965,7 +965,7 @@ static void TAG(render_tri_fan_elts)( GLcontext *ctx, } -static void TAG(render_poly_elts)( GLcontext *ctx, +static void TAG(render_poly_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -1003,7 +1003,7 @@ static void TAG(render_poly_elts)( GLcontext *ctx, } } -static void TAG(render_quad_strip_elts)( GLcontext *ctx, +static void TAG(render_quad_strip_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -1071,7 +1071,7 @@ static void TAG(render_quad_strip_elts)( GLcontext *ctx, } -static void TAG(render_quads_elts)( GLcontext *ctx, +static void TAG(render_quads_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -1173,7 +1173,7 @@ static tnl_render_func TAG(render_tab_elts)[GL_POLYGON+2] = /* Pre-check the primitives in the VB to prevent the need for * fallbacks later on. */ -static GLboolean TAG(validate_render)( GLcontext *ctx, +static GLboolean TAG(validate_render)( struct gl_context *ctx, struct vertex_buffer *VB ) { GLint i; diff --git a/src/mesa/tnl_dd/t_dd_dmatmp2.h b/src/mesa/tnl_dd/t_dd_dmatmp2.h index cd225b6343e..8836bde09f6 100644 --- a/src/mesa/tnl_dd/t_dd_dmatmp2.h +++ b/src/mesa/tnl_dd/t_dd_dmatmp2.h @@ -70,7 +70,7 @@ do { \ /**********************************************************************/ -static ELT_TYPE *TAG(emit_elts)( GLcontext *ctx, +static ELT_TYPE *TAG(emit_elts)( struct gl_context *ctx, ELT_TYPE *dest, GLuint *elts, GLuint nr ) { @@ -89,7 +89,7 @@ static ELT_TYPE *TAG(emit_elts)( GLcontext *ctx, return dest; } -static ELT_TYPE *TAG(emit_consecutive_elts)( GLcontext *ctx, +static ELT_TYPE *TAG(emit_consecutive_elts)( struct gl_context *ctx, ELT_TYPE *dest, GLuint start, GLuint nr ) { @@ -114,7 +114,7 @@ static ELT_TYPE *TAG(emit_consecutive_elts)( GLcontext *ctx, -static void TAG(render_points_verts)( GLcontext *ctx, +static void TAG(render_points_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -126,7 +126,7 @@ static void TAG(render_points_verts)( GLcontext *ctx, } } -static void TAG(render_lines_verts)( GLcontext *ctx, +static void TAG(render_lines_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -150,7 +150,7 @@ static void TAG(render_lines_verts)( GLcontext *ctx, } -static void TAG(render_line_strip_verts)( GLcontext *ctx, +static void TAG(render_line_strip_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -197,7 +197,7 @@ static void TAG(render_line_strip_verts)( GLcontext *ctx, } -static void TAG(render_line_loop_verts)( GLcontext *ctx, +static void TAG(render_line_loop_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -286,7 +286,7 @@ static void TAG(render_line_loop_verts)( GLcontext *ctx, } -static void TAG(render_triangles_verts)( GLcontext *ctx, +static void TAG(render_triangles_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -307,7 +307,7 @@ static void TAG(render_triangles_verts)( GLcontext *ctx, -static void TAG(render_tri_strip_verts)( GLcontext *ctx, +static void TAG(render_tri_strip_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -352,7 +352,7 @@ static void TAG(render_tri_strip_verts)( GLcontext *ctx, EMIT_PRIM( ctx, GL_TRIANGLE_STRIP, HW_TRIANGLE_STRIP_0, start, count ); } -static void TAG(render_tri_fan_verts)( GLcontext *ctx, +static void TAG(render_tri_fan_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -395,7 +395,7 @@ static void TAG(render_tri_fan_verts)( GLcontext *ctx, } -static void TAG(render_poly_verts)( GLcontext *ctx, +static void TAG(render_poly_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -409,7 +409,7 @@ static void TAG(render_poly_verts)( GLcontext *ctx, EMIT_PRIM( ctx, GL_POLYGON, HW_POLYGON, start, count ); } -static void TAG(render_quad_strip_verts)( GLcontext *ctx, +static void TAG(render_quad_strip_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -460,7 +460,7 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, } -static void TAG(render_quads_verts)( GLcontext *ctx, +static void TAG(render_quads_verts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -509,7 +509,7 @@ static void TAG(render_quads_verts)( GLcontext *ctx, } } -static void TAG(render_noop)( GLcontext *ctx, +static void TAG(render_noop)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -539,7 +539,7 @@ static tnl_render_func TAG(render_tab_verts)[GL_POLYGON+2] = * Render elts using hardware indexed verts * ****************************************************************************/ -static void TAG(render_points_elts)( GLcontext *ctx, +static void TAG(render_points_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -563,7 +563,7 @@ static void TAG(render_points_elts)( GLcontext *ctx, -static void TAG(render_lines_elts)( GLcontext *ctx, +static void TAG(render_lines_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -602,7 +602,7 @@ static void TAG(render_lines_elts)( GLcontext *ctx, } -static void TAG(render_line_strip_elts)( GLcontext *ctx, +static void TAG(render_line_strip_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -631,7 +631,7 @@ static void TAG(render_line_strip_elts)( GLcontext *ctx, } -static void TAG(render_line_loop_elts)( GLcontext *ctx, +static void TAG(render_line_loop_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -683,7 +683,7 @@ static void TAG(render_line_loop_elts)( GLcontext *ctx, } -static void TAG(render_triangles_elts)( GLcontext *ctx, +static void TAG(render_triangles_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -716,7 +716,7 @@ static void TAG(render_triangles_elts)( GLcontext *ctx, -static void TAG(render_tri_strip_elts)( GLcontext *ctx, +static void TAG(render_tri_strip_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -746,7 +746,7 @@ static void TAG(render_tri_strip_elts)( GLcontext *ctx, } } -static void TAG(render_tri_fan_elts)( GLcontext *ctx, +static void TAG(render_tri_fan_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -773,7 +773,7 @@ static void TAG(render_tri_fan_elts)( GLcontext *ctx, } -static void TAG(render_poly_elts)( GLcontext *ctx, +static void TAG(render_poly_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -799,7 +799,7 @@ static void TAG(render_poly_elts)( GLcontext *ctx, } } -static void TAG(render_quad_strip_elts)( GLcontext *ctx, +static void TAG(render_quad_strip_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -861,7 +861,7 @@ static void TAG(render_quad_strip_elts)( GLcontext *ctx, } -static void TAG(render_quads_elts)( GLcontext *ctx, +static void TAG(render_quads_elts)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) diff --git a/src/mesa/tnl_dd/t_dd_rendertmp.h b/src/mesa/tnl_dd/t_dd_rendertmp.h index b9f030195d5..692b4d1fd73 100644 --- a/src/mesa/tnl_dd/t_dd_rendertmp.h +++ b/src/mesa/tnl_dd/t_dd_rendertmp.h @@ -63,7 +63,7 @@ #define RENDER_TAB_QUALIFIER static #endif -static void TAG(render_points)( GLcontext *ctx, +static void TAG(render_points)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -77,7 +77,7 @@ static void TAG(render_points)( GLcontext *ctx, POSTFIX; } -static void TAG(render_lines)( GLcontext *ctx, +static void TAG(render_lines)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -96,7 +96,7 @@ static void TAG(render_lines)( GLcontext *ctx, } -static void TAG(render_line_strip)( GLcontext *ctx, +static void TAG(render_line_strip)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -118,7 +118,7 @@ static void TAG(render_line_strip)( GLcontext *ctx, } -static void TAG(render_line_loop)( GLcontext *ctx, +static void TAG(render_line_loop)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -150,7 +150,7 @@ static void TAG(render_line_loop)( GLcontext *ctx, } -static void TAG(render_triangles)( GLcontext *ctx, +static void TAG(render_triangles)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -177,7 +177,7 @@ static void TAG(render_triangles)( GLcontext *ctx, -static void TAG(render_tri_strip)( GLcontext *ctx, +static void TAG(render_tri_strip)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -213,7 +213,7 @@ static void TAG(render_tri_strip)( GLcontext *ctx, } -static void TAG(render_tri_fan)( GLcontext *ctx, +static void TAG(render_tri_fan)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -252,7 +252,7 @@ static void TAG(render_tri_fan)( GLcontext *ctx, } -static void TAG(render_poly)( GLcontext *ctx, +static void TAG(render_poly)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -321,7 +321,7 @@ static void TAG(render_poly)( GLcontext *ctx, POSTFIX; } -static void TAG(render_quads)( GLcontext *ctx, +static void TAG(render_quads)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -346,7 +346,7 @@ static void TAG(render_quads)( GLcontext *ctx, POSTFIX; } -static void TAG(render_quad_strip)( GLcontext *ctx, +static void TAG(render_quad_strip)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -384,7 +384,7 @@ static void TAG(render_quad_strip)( GLcontext *ctx, POSTFIX; } -static void TAG(render_noop)( GLcontext *ctx, +static void TAG(render_noop)( struct gl_context *ctx, GLuint start, GLuint count, GLuint flags ) @@ -392,7 +392,7 @@ static void TAG(render_noop)( GLcontext *ctx, (void)(ctx && start && count && flags); } -RENDER_TAB_QUALIFIER void (*TAG(render_tab)[GL_POLYGON+2])(GLcontext *, +RENDER_TAB_QUALIFIER void (*TAG(render_tab)[GL_POLYGON+2])(struct gl_context *, GLuint, GLuint, GLuint) = diff --git a/src/mesa/tnl_dd/t_dd_triemit.h b/src/mesa/tnl_dd/t_dd_triemit.h index f5979ee9a75..39c9d26481b 100644 --- a/src/mesa/tnl_dd/t_dd_triemit.h +++ b/src/mesa/tnl_dd/t_dd_triemit.h @@ -136,7 +136,7 @@ static __inline void TAG(point)( CTX_ARG, #endif -static void TAG(fast_clipped_poly)( GLcontext *ctx, const GLuint *elts, +static void TAG(fast_clipped_poly)( struct gl_context *ctx, const GLuint *elts, GLuint n ) { LOCAL_VARS diff --git a/src/mesa/tnl_dd/t_dd_tritmp.h b/src/mesa/tnl_dd/t_dd_tritmp.h index 2c36d845ab8..022f0c6c602 100644 --- a/src/mesa/tnl_dd/t_dd_tritmp.h +++ b/src/mesa/tnl_dd/t_dd_tritmp.h @@ -111,7 +111,7 @@ #endif #if DO_TRI -static void TAG(triangle)( GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 ) +static void TAG(triangle)( struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e2 ) { struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb; VERTEX *v[3]; @@ -335,7 +335,7 @@ static void TAG(triangle)( GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 ) #if DO_QUAD #if DO_FULL_QUAD -static void TAG(quadr)( GLcontext *ctx, +static void TAG(quadr)( struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e2, GLuint e3 ) { struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb; @@ -575,7 +575,7 @@ static void TAG(quadr)( GLcontext *ctx, } } #else -static void TAG(quadr)( GLcontext *ctx, GLuint e0, +static void TAG(quadr)( struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e2, GLuint e3 ) { if (DO_UNFILLED) { @@ -597,7 +597,7 @@ static void TAG(quadr)( GLcontext *ctx, GLuint e0, #endif #if DO_LINE -static void TAG(line)( GLcontext *ctx, GLuint e0, GLuint e1 ) +static void TAG(line)( struct gl_context *ctx, GLuint e0, GLuint e1 ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; VERTEX *v[2]; @@ -628,7 +628,7 @@ static void TAG(line)( GLcontext *ctx, GLuint e0, GLuint e1 ) #endif #if DO_POINTS -static void TAG(points)( GLcontext *ctx, GLuint first, GLuint last ) +static void TAG(points)( struct gl_context *ctx, GLuint first, GLuint last ) { struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb; GLuint i; diff --git a/src/mesa/tnl_dd/t_dd_unfilled.h b/src/mesa/tnl_dd/t_dd_unfilled.h index 9c467291a14..9856a36d6fb 100644 --- a/src/mesa/tnl_dd/t_dd_unfilled.h +++ b/src/mesa/tnl_dd/t_dd_unfilled.h @@ -32,7 +32,7 @@ #define VERT_RESTORE_SPEC( idx ) #endif -static void TAG(unfilled_tri)( GLcontext *ctx, +static void TAG(unfilled_tri)( struct gl_context *ctx, GLenum mode, GLuint e0, GLuint e1, GLuint e2 ) { @@ -95,7 +95,7 @@ static void TAG(unfilled_tri)( GLcontext *ctx, } -static void TAG(unfilled_quad)( GLcontext *ctx, +static void TAG(unfilled_quad)( struct gl_context *ctx, GLenum mode, GLuint e0, GLuint e1, GLuint e2, GLuint e3 ) diff --git a/src/mesa/tnl_dd/t_dd_vb.c b/src/mesa/tnl_dd/t_dd_vb.c index a8a0a69768d..543b0a56858 100644 --- a/src/mesa/tnl_dd/t_dd_vb.c +++ b/src/mesa/tnl_dd/t_dd_vb.c @@ -46,7 +46,7 @@ * really convenient to put them. Need to build some actual .o files in * this directory? */ -static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void copy_pv_rgba4_spec5( struct gl_context *ctx, GLuint edst, GLuint esrc ) { LOCALVARS GLubyte *verts = GET_VERTEX_STORE(); @@ -57,7 +57,7 @@ static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc ) dst[5] = src[5]; } -static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void copy_pv_rgba4( struct gl_context *ctx, GLuint edst, GLuint esrc ) { LOCALVARS GLubyte *verts = GET_VERTEX_STORE(); @@ -67,7 +67,7 @@ static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc ) dst[4] = src[4]; } -static void copy_pv_rgba3( GLcontext *ctx, GLuint edst, GLuint esrc ) +static void copy_pv_rgba3( struct gl_context *ctx, GLuint edst, GLuint esrc ) { LOCALVARS GLubyte *verts = GET_VERTEX_STORE(); @@ -78,7 +78,7 @@ static void copy_pv_rgba3( GLcontext *ctx, GLuint edst, GLuint esrc ) } -void TAG(translate_vertex)(GLcontext *ctx, +void TAG(translate_vertex)(struct gl_context *ctx, const VERTEX *src, SWvertex *dst) { @@ -189,10 +189,10 @@ void TAG(translate_vertex)(GLcontext *ctx, /* prototype to silence warning */ -void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v ); +void TAG(print_vertex)( struct gl_context *ctx, const VERTEX *v ); -void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v ) +void TAG(print_vertex)( struct gl_context *ctx, const VERTEX *v ) { LOCALVARS GLuint format = GET_VERTEX_FORMAT(); @@ -289,7 +289,7 @@ void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v ) #define GET_COLOR(ptr, idx) ((ptr)->data[idx]) -INTERP_QUALIFIER void TAG(interp_extras)( GLcontext *ctx, +INTERP_QUALIFIER void TAG(interp_extras)( struct gl_context *ctx, GLfloat t, GLuint dst, GLuint out, GLuint in, GLboolean force_boundary ) @@ -320,7 +320,7 @@ INTERP_QUALIFIER void TAG(interp_extras)( GLcontext *ctx, INTERP_VERTEX(ctx, t, dst, out, in, force_boundary); } -INTERP_QUALIFIER void TAG(copy_pv_extras)( GLcontext *ctx, +INTERP_QUALIFIER void TAG(copy_pv_extras)( struct gl_context *ctx, GLuint dst, GLuint src ) { LOCALVARS diff --git a/src/mesa/tnl_dd/t_dd_vbtmp.h b/src/mesa/tnl_dd/t_dd_vbtmp.h index 85101b9ceb8..d19137b767c 100644 --- a/src/mesa/tnl_dd/t_dd_vbtmp.h +++ b/src/mesa/tnl_dd/t_dd_vbtmp.h @@ -117,7 +117,7 @@ #if (HAVE_HW_DIVIDE || DO_SPEC || DO_TEX0 || DO_FOG || !HAVE_TINY_VERTICES) -static void TAG(emit)( GLcontext *ctx, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest, GLuint stride ) @@ -338,7 +338,7 @@ static void TAG(emit)( GLcontext *ctx, #error "cannot use tiny vertices with hw perspective divide" #endif -static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, +static void TAG(emit)( struct gl_context *ctx, GLuint start, GLuint end, void *dest, GLuint stride ) { LOCALVARS @@ -403,7 +403,7 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, #if (HAVE_PTEX_VERTICES) -static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) +static GLboolean TAG(check_tex_sizes)( struct gl_context *ctx ) { LOCALVARS struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -431,7 +431,7 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) return GL_TRUE; } #else -static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) +static GLboolean TAG(check_tex_sizes)( struct gl_context *ctx ) { LOCALVARS struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; @@ -472,7 +472,7 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx ) #endif /* ptex */ -static void TAG(interp)( GLcontext *ctx, +static void TAG(interp)( struct gl_context *ctx, GLfloat t, GLuint edst, GLuint eout, GLuint ein, GLboolean force_boundary ) diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h index 30b1448b8a4..7b8da8eb843 100644 --- a/src/mesa/vbo/vbo.h +++ b/src/mesa/vbo/vbo.h @@ -61,12 +61,12 @@ struct _mesa_index_buffer { -GLboolean _vbo_CreateContext( GLcontext *ctx ); -void _vbo_DestroyContext( GLcontext *ctx ); -void _vbo_InvalidateState( GLcontext *ctx, GLuint new_state ); +GLboolean _vbo_CreateContext( struct gl_context *ctx ); +void _vbo_DestroyContext( struct gl_context *ctx ); +void _vbo_InvalidateState( struct gl_context *ctx, GLuint new_state ); -typedef void (*vbo_draw_func)( GLcontext *ctx, +typedef void (*vbo_draw_func)( struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, @@ -92,7 +92,7 @@ struct split_limits { }; -void vbo_split_prims( GLcontext *ctx, +void vbo_split_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -108,7 +108,7 @@ void vbo_split_prims( GLcontext *ctx, GLboolean vbo_all_varyings_in_vbos( const struct gl_client_array *arrays[] ); GLboolean vbo_any_varyings_in_vbos( const struct gl_client_array *arrays[] ); -void vbo_rebase_prims( GLcontext *ctx, +void vbo_rebase_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -117,14 +117,14 @@ void vbo_rebase_prims( GLcontext *ctx, GLuint max_index, vbo_draw_func draw ); void -vbo_get_minmax_index(GLcontext *ctx, const struct _mesa_prim *prim, +vbo_get_minmax_index(struct gl_context *ctx, const struct _mesa_prim *prim, const struct _mesa_index_buffer *ib, GLuint *min_index, GLuint *max_index); -void vbo_use_buffer_objects(GLcontext *ctx); +void vbo_use_buffer_objects(struct gl_context *ctx); -void vbo_set_draw_func(GLcontext *ctx, vbo_draw_func func); +void vbo_set_draw_func(struct gl_context *ctx, vbo_draw_func func); void GLAPIENTRY diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index 580850574c9..9992cc34739 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -49,7 +49,7 @@ static GLuint check_size( const GLfloat *attr ) } -static void init_legacy_currval(GLcontext *ctx) +static void init_legacy_currval(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); struct gl_client_array *arrays = vbo->legacy_currval; @@ -78,7 +78,7 @@ static void init_legacy_currval(GLcontext *ctx) } -static void init_generic_currval(GLcontext *ctx) +static void init_generic_currval(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); struct gl_client_array *arrays = vbo->generic_currval; @@ -104,7 +104,7 @@ static void init_generic_currval(GLcontext *ctx) } -static void init_mat_currval(GLcontext *ctx) +static void init_mat_currval(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); struct gl_client_array *arrays = vbo->mat_currval; @@ -149,7 +149,7 @@ static void init_mat_currval(GLcontext *ctx) } -GLboolean _vbo_CreateContext( GLcontext *ctx ) +GLboolean _vbo_CreateContext( struct gl_context *ctx ) { struct vbo_context *vbo = CALLOC_STRUCT(vbo_context); @@ -207,14 +207,14 @@ GLboolean _vbo_CreateContext( GLcontext *ctx ) } -void _vbo_InvalidateState( GLcontext *ctx, GLuint new_state ) +void _vbo_InvalidateState( struct gl_context *ctx, GLuint new_state ) { _ae_invalidate_state(ctx, new_state); vbo_exec_invalidate_state(ctx, new_state); } -void _vbo_DestroyContext( GLcontext *ctx ) +void _vbo_DestroyContext( struct gl_context *ctx ) { struct vbo_context *vbo = vbo_context(ctx); @@ -239,7 +239,7 @@ void _vbo_DestroyContext( GLcontext *ctx ) } -void vbo_set_draw_func(GLcontext *ctx, vbo_draw_func func) +void vbo_set_draw_func(struct gl_context *ctx, vbo_draw_func func) { struct vbo_context *vbo = vbo_context(ctx); vbo->draw_prims = func; diff --git a/src/mesa/vbo/vbo_context.h b/src/mesa/vbo/vbo_context.h index 00cfc522a0d..8d6f2a7ce6d 100644 --- a/src/mesa/vbo/vbo_context.h +++ b/src/mesa/vbo/vbo_context.h @@ -85,7 +85,7 @@ struct vbo_context { }; -static INLINE struct vbo_context *vbo_context(GLcontext *ctx) +static INLINE struct vbo_context *vbo_context(struct gl_context *ctx) { return (struct vbo_context *)(ctx->swtnl_im); } @@ -96,7 +96,7 @@ static INLINE struct vbo_context *vbo_context(GLcontext *ctx) * vertex transformation, an NV vertex program or ARB vertex program/shader. */ static INLINE enum vp_mode -get_program_mode( GLcontext *ctx ) +get_program_mode( struct gl_context *ctx ) { if (!ctx->VertexProgram._Current) return VP_NONE; diff --git a/src/mesa/vbo/vbo_exec.c b/src/mesa/vbo/vbo_exec.c index 046fa8105ba..e8d5b39b3f4 100644 --- a/src/mesa/vbo/vbo_exec.c +++ b/src/mesa/vbo/vbo_exec.c @@ -34,7 +34,7 @@ -void vbo_exec_init( GLcontext *ctx ) +void vbo_exec_init( struct gl_context *ctx ) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; @@ -62,7 +62,7 @@ void vbo_exec_init( GLcontext *ctx ) } -void vbo_exec_destroy( GLcontext *ctx ) +void vbo_exec_destroy( struct gl_context *ctx ) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; @@ -81,7 +81,7 @@ void vbo_exec_destroy( GLcontext *ctx ) * invoked according to the state flags. That will have to wait for a * mesa rework: */ -void vbo_exec_invalidate_state( GLcontext *ctx, GLuint new_state ) +void vbo_exec_invalidate_state( struct gl_context *ctx, GLuint new_state ) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; diff --git a/src/mesa/vbo/vbo_exec.h b/src/mesa/vbo/vbo_exec.h index 33494f0cead..47e51f09c94 100644 --- a/src/mesa/vbo/vbo_exec.h +++ b/src/mesa/vbo/vbo_exec.h @@ -79,7 +79,7 @@ typedef void (*vbo_attrfv_func)( const GLfloat * ); struct vbo_exec_context { - GLcontext *ctx; + struct gl_context *ctx; GLvertexformat vtxfmt; struct { @@ -148,13 +148,13 @@ struct vbo_exec_context /* External API: */ -void vbo_exec_init( GLcontext *ctx ); -void vbo_exec_destroy( GLcontext *ctx ); -void vbo_exec_invalidate_state( GLcontext *ctx, GLuint new_state ); -void vbo_exec_FlushVertices_internal( GLcontext *ctx, GLboolean unmap ); +void vbo_exec_init( struct gl_context *ctx ); +void vbo_exec_destroy( struct gl_context *ctx ); +void vbo_exec_invalidate_state( struct gl_context *ctx, GLuint new_state ); +void vbo_exec_FlushVertices_internal( struct gl_context *ctx, GLboolean unmap ); -void vbo_exec_BeginVertices( GLcontext *ctx ); -void vbo_exec_FlushVertices( GLcontext *ctx, GLuint flags ); +void vbo_exec_BeginVertices( struct gl_context *ctx ); +void vbo_exec_FlushVertices( struct gl_context *ctx, GLuint flags ); /* Internal functions: diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 9df75a84065..5070b35c11d 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -142,7 +142,7 @@ void vbo_exec_vtx_wrap( struct vbo_exec_context *exec ) */ static void vbo_exec_copy_to_current( struct vbo_exec_context *exec ) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; struct vbo_context *vbo = vbo_context(ctx); GLuint i; @@ -193,7 +193,7 @@ static void vbo_exec_copy_to_current( struct vbo_exec_context *exec ) static void vbo_exec_copy_from_current( struct vbo_exec_context *exec ) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; struct vbo_context *vbo = vbo_context(ctx); GLint i; @@ -217,7 +217,7 @@ static void vbo_exec_wrap_upgrade_vertex( struct vbo_exec_context *exec, GLuint attr, GLuint newsz ) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; struct vbo_context *vbo = vbo_context(ctx); GLint lastcount = exec->vtx.vert_count; GLfloat *tmp; @@ -318,7 +318,7 @@ static void vbo_exec_wrap_upgrade_vertex( struct vbo_exec_context *exec, } -static void vbo_exec_fixup_vertex( GLcontext *ctx, +static void vbo_exec_fixup_vertex( struct gl_context *ctx, GLuint attr, GLuint sz ) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; @@ -740,7 +740,7 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) * This replaces the malloced buffer which was created in * vb_exec_vtx_init() below. */ -void vbo_use_buffer_objects(GLcontext *ctx) +void vbo_use_buffer_objects(struct gl_context *ctx) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; /* Any buffer name but 0 can be used here since this bufferobj won't @@ -769,7 +769,7 @@ void vbo_use_buffer_objects(GLcontext *ctx) void vbo_exec_vtx_init( struct vbo_exec_context *exec ) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; struct vbo_context *vbo = vbo_context(ctx); GLuint i; @@ -827,7 +827,7 @@ void vbo_exec_vtx_init( struct vbo_exec_context *exec ) void vbo_exec_vtx_destroy( struct vbo_exec_context *exec ) { /* using a real VBO for vertex data */ - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; unsigned i; /* True VBOs should already be unmapped @@ -858,7 +858,7 @@ void vbo_exec_vtx_destroy( struct vbo_exec_context *exec ) _mesa_reference_buffer_object(ctx, &exec->vtx.bufferobj, NULL); } -void vbo_exec_BeginVertices( GLcontext *ctx ) +void vbo_exec_BeginVertices( struct gl_context *ctx ) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; if (0) printf("%s\n", __FUNCTION__); @@ -868,7 +868,7 @@ void vbo_exec_BeginVertices( GLcontext *ctx ) exec->ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; } -void vbo_exec_FlushVertices_internal( GLcontext *ctx, GLboolean unmap ) +void vbo_exec_FlushVertices_internal( struct gl_context *ctx, GLboolean unmap ) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; @@ -886,7 +886,7 @@ void vbo_exec_FlushVertices_internal( GLcontext *ctx, GLboolean unmap ) /** * \param flags bitmask of FLUSH_STORED_VERTICES, FLUSH_UPDATE_CURRENT */ -void vbo_exec_FlushVertices( GLcontext *ctx, GLuint flags ) +void vbo_exec_FlushVertices( struct gl_context *ctx, GLuint flags ) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 1759e578870..f46ba636fe7 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -43,7 +43,7 @@ * glDraw[Range]Elements() calls. */ void -vbo_get_minmax_index(GLcontext *ctx, +vbo_get_minmax_index(struct gl_context *ctx, const struct _mesa_prim *prim, const struct _mesa_index_buffer *ib, GLuint *min_index, GLuint *max_index) @@ -115,7 +115,7 @@ vbo_get_minmax_index(GLcontext *ctx, * For debugging purposes; not normally used. */ static void -check_array_data(GLcontext *ctx, struct gl_client_array *array, +check_array_data(struct gl_context *ctx, struct gl_client_array *array, GLuint attrib, GLuint j) { if (array->Enabled) { @@ -161,7 +161,7 @@ check_array_data(GLcontext *ctx, struct gl_client_array *array, * Unmap the buffer object referenced by given array, if mapped. */ static void -unmap_array_buffer(GLcontext *ctx, struct gl_client_array *array) +unmap_array_buffer(struct gl_context *ctx, struct gl_client_array *array) { if (array->Enabled && _mesa_is_bufferobj(array->BufferObj) && @@ -176,7 +176,7 @@ unmap_array_buffer(GLcontext *ctx, struct gl_client_array *array) * For debug purposes; not normally used. */ static void -check_draw_elements_data(GLcontext *ctx, GLsizei count, GLenum elemType, +check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType, const void *elements, GLint basevertex) { struct gl_array_object *arrayObj = ctx->Array.ArrayObj; @@ -244,7 +244,7 @@ check_draw_elements_data(GLcontext *ctx, GLsizei count, GLenum elemType, * Check array data, looking for NaNs, etc. */ static void -check_draw_arrays_data(GLcontext *ctx, GLint start, GLsizei count) +check_draw_arrays_data(struct gl_context *ctx, GLint start, GLsizei count) { /* TO DO */ } @@ -254,7 +254,7 @@ check_draw_arrays_data(GLcontext *ctx, GLint start, GLsizei count) * Print info/data for glDrawArrays(), for debugging. */ static void -print_draw_arrays(GLcontext *ctx, struct vbo_exec_context *exec, +print_draw_arrays(struct gl_context *ctx, struct vbo_exec_context *exec, GLenum mode, GLint start, GLsizei count) { int i; @@ -303,7 +303,7 @@ print_draw_arrays(GLcontext *ctx, struct vbo_exec_context *exec, * Just translate the arrayobj into a sane layout. */ static void -bind_array_obj(GLcontext *ctx) +bind_array_obj(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); struct vbo_exec_context *exec = &vbo->exec; @@ -348,7 +348,7 @@ bind_array_obj(GLcontext *ctx) * to point at a zero-stride current value "array". */ static void -recalculate_input_bindings(GLcontext *ctx) +recalculate_input_bindings(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); struct vbo_exec_context *exec = &vbo->exec; @@ -464,7 +464,7 @@ recalculate_input_bindings(GLcontext *ctx) * must be done after this call. */ static void -bind_arrays(GLcontext *ctx) +bind_arrays(struct gl_context *ctx) { bind_array_obj(ctx); recalculate_input_bindings(ctx); @@ -599,7 +599,7 @@ vbo_exec_DrawArraysInstanced(GLenum mode, GLint start, GLsizei count, * For debugging. */ static void -dump_element_buffer(GLcontext *ctx, GLenum type) +dump_element_buffer(struct gl_context *ctx, GLenum type) { const GLvoid *map = ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER_ARB, @@ -657,7 +657,7 @@ dump_element_buffer(GLcontext *ctx, GLenum type) * we've validated buffer bounds, etc. */ static void -vbo_validated_drawrangeelements(GLcontext *ctx, GLenum mode, +vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode, GLboolean index_bounds_valid, GLuint start, GLuint end, GLsizei count, GLenum type, @@ -939,7 +939,7 @@ vbo_exec_DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, * This does the actual rendering after we've checked array indexes, etc. */ static void -vbo_validated_multidrawelements(GLcontext *ctx, GLenum mode, +vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount, const GLint *basevertex) diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c index 84ae1b87f93..71ac0066cac 100644 --- a/src/mesa/vbo/vbo_exec_draw.c +++ b/src/mesa/vbo/vbo_exec_draw.c @@ -154,7 +154,7 @@ vbo_copy_vertices( struct vbo_exec_context *exec ) /* TODO: populate these as the vertex is defined: */ static void -vbo_exec_bind_arrays( GLcontext *ctx ) +vbo_exec_bind_arrays( struct gl_context *ctx ) { struct vbo_context *vbo = vbo_context(ctx); struct vbo_exec_context *exec = &vbo->exec; @@ -260,7 +260,7 @@ vbo_exec_vtx_unmap( struct vbo_exec_context *exec ) GLenum target = GL_ARRAY_BUFFER_ARB; if (_mesa_is_bufferobj(exec->vtx.bufferobj)) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; if (ctx->Driver.FlushMappedBufferRange) { GLintptr offset = exec->vtx.buffer_used - exec->vtx.bufferobj->Offset; @@ -289,7 +289,7 @@ vbo_exec_vtx_unmap( struct vbo_exec_context *exec ) void vbo_exec_vtx_map( struct vbo_exec_context *exec ) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; const GLenum target = GL_ARRAY_BUFFER_ARB; const GLenum access = GL_READ_WRITE_ARB; /* for MapBuffer */ const GLenum accessRange = GL_MAP_WRITE_BIT | /* for MapBufferRange */ @@ -363,7 +363,7 @@ vbo_exec_vtx_flush( struct vbo_exec_context *exec, GLboolean unmap ) exec->vtx.copied.nr = vbo_copy_vertices( exec ); if (exec->vtx.copied.nr != exec->vtx.vert_count) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; /* Before the update_state() as this may raise _NEW_ARRAY * from _mesa_set_varying_vp_inputs(). diff --git a/src/mesa/vbo/vbo_exec_eval.c b/src/mesa/vbo/vbo_exec_eval.c index 23ad12608fc..1e8c3c45bb5 100644 --- a/src/mesa/vbo/vbo_exec_eval.c +++ b/src/mesa/vbo/vbo_exec_eval.c @@ -67,7 +67,7 @@ static void set_active_eval2( struct vbo_exec_context *exec, GLuint attr, GLuint void vbo_exec_eval_update( struct vbo_exec_context *exec ) { - GLcontext *ctx = exec->ctx; + struct gl_context *ctx = exec->ctx; GLuint attr; /* Vertex program maps have priority over conventional attribs */ diff --git a/src/mesa/vbo/vbo_rebase.c b/src/mesa/vbo/vbo_rebase.c index e75253f8626..9068ae240a6 100644 --- a/src/mesa/vbo/vbo_rebase.c +++ b/src/mesa/vbo/vbo_rebase.c @@ -116,7 +116,7 @@ GLboolean vbo_any_varyings_in_vbos( const struct gl_client_array *arrays[] ) * - can't save time by trying to upload half a vbo - typically it is * all or nothing. */ -void vbo_rebase_prims( GLcontext *ctx, +void vbo_rebase_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, diff --git a/src/mesa/vbo/vbo_save.c b/src/mesa/vbo/vbo_save.c index dd5570689e7..4e7bcddc970 100644 --- a/src/mesa/vbo/vbo_save.c +++ b/src/mesa/vbo/vbo_save.c @@ -36,7 +36,7 @@ #if FEATURE_dlist -static void vbo_save_callback_init( GLcontext *ctx ) +static void vbo_save_callback_init( struct gl_context *ctx ) { ctx->Driver.NewList = vbo_save_NewList; ctx->Driver.EndList = vbo_save_EndList; @@ -48,7 +48,7 @@ static void vbo_save_callback_init( GLcontext *ctx ) -void vbo_save_init( GLcontext *ctx ) +void vbo_save_init( struct gl_context *ctx ) { struct vbo_context *vbo = vbo_context(ctx); struct vbo_save_context *save = &vbo->save; @@ -79,7 +79,7 @@ void vbo_save_init( GLcontext *ctx ) } -void vbo_save_destroy( GLcontext *ctx ) +void vbo_save_destroy( struct gl_context *ctx ) { struct vbo_context *vbo = vbo_context(ctx); struct vbo_save_context *save = &vbo->save; @@ -108,7 +108,7 @@ void vbo_save_destroy( GLcontext *ctx ) /* Note that this can occur during the playback of a display list: */ -void vbo_save_fallback( GLcontext *ctx, GLboolean fallback ) +void vbo_save_fallback( struct gl_context *ctx, GLboolean fallback ) { struct vbo_save_context *save = &vbo_context(ctx)->save; diff --git a/src/mesa/vbo/vbo_save.h b/src/mesa/vbo/vbo_save.h index 82ba6c8afe7..f5a407ced14 100644 --- a/src/mesa/vbo/vbo_save.h +++ b/src/mesa/vbo/vbo_save.h @@ -117,7 +117,7 @@ struct vbo_save_primitive_store { struct vbo_save_context { - GLcontext *ctx; + struct gl_context *ctx; GLvertexformat vtxfmt; struct gl_client_array arrays[VBO_ATTRIB_MAX]; const struct gl_client_array *inputs[VBO_ATTRIB_MAX]; @@ -155,13 +155,13 @@ struct vbo_save_context { #if FEATURE_dlist -void vbo_save_init( GLcontext *ctx ); -void vbo_save_destroy( GLcontext *ctx ); -void vbo_save_fallback( GLcontext *ctx, GLboolean fallback ); +void vbo_save_init( struct gl_context *ctx ); +void vbo_save_destroy( struct gl_context *ctx ); +void vbo_save_fallback( struct gl_context *ctx, GLboolean fallback ); /* save_loopback.c: */ -void vbo_loopback_vertex_list( GLcontext *ctx, +void vbo_loopback_vertex_list( struct gl_context *ctx, const GLfloat *buffer, const GLubyte *attrsz, const struct _mesa_prim *prim, @@ -171,26 +171,26 @@ void vbo_loopback_vertex_list( GLcontext *ctx, /* Callbacks: */ -void vbo_save_EndList( GLcontext *ctx ); -void vbo_save_NewList( GLcontext *ctx, GLuint list, GLenum mode ); -void vbo_save_EndCallList( GLcontext *ctx ); -void vbo_save_BeginCallList( GLcontext *ctx, struct gl_display_list *list ); -void vbo_save_SaveFlushVertices( GLcontext *ctx ); -GLboolean vbo_save_NotifyBegin( GLcontext *ctx, GLenum mode ); +void vbo_save_EndList( struct gl_context *ctx ); +void vbo_save_NewList( struct gl_context *ctx, GLuint list, GLenum mode ); +void vbo_save_EndCallList( struct gl_context *ctx ); +void vbo_save_BeginCallList( struct gl_context *ctx, struct gl_display_list *list ); +void vbo_save_SaveFlushVertices( struct gl_context *ctx ); +GLboolean vbo_save_NotifyBegin( struct gl_context *ctx, GLenum mode ); -void vbo_save_playback_vertex_list( GLcontext *ctx, void *data ); +void vbo_save_playback_vertex_list( struct gl_context *ctx, void *data ); void vbo_save_api_init( struct vbo_save_context *save ); #else /* FEATURE_dlist */ static INLINE void -vbo_save_init( GLcontext *ctx ) +vbo_save_init( struct gl_context *ctx ) { } static INLINE void -vbo_save_destroy( GLcontext *ctx ) +vbo_save_destroy( struct gl_context *ctx ) { } diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index c3727cb52ac..8d66e14ab31 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -99,7 +99,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. * NOTE: Old 'parity' issue is gone, but copying can still be * wrong-footed on replay. */ -static GLuint _save_copy_vertices( GLcontext *ctx, +static GLuint _save_copy_vertices( struct gl_context *ctx, const struct vbo_save_vertex_list *node, const GLfloat *src_buffer) { @@ -170,7 +170,7 @@ static GLuint _save_copy_vertices( GLcontext *ctx, } -static struct vbo_save_vertex_store *alloc_vertex_store( GLcontext *ctx ) +static struct vbo_save_vertex_store *alloc_vertex_store( struct gl_context *ctx ) { struct vbo_save_vertex_store *vertex_store = CALLOC_STRUCT(vbo_save_vertex_store); @@ -198,7 +198,7 @@ static struct vbo_save_vertex_store *alloc_vertex_store( GLcontext *ctx ) return vertex_store; } -static void free_vertex_store( GLcontext *ctx, struct vbo_save_vertex_store *vertex_store ) +static void free_vertex_store( struct gl_context *ctx, struct vbo_save_vertex_store *vertex_store ) { assert(!vertex_store->buffer); @@ -209,7 +209,7 @@ static void free_vertex_store( GLcontext *ctx, struct vbo_save_vertex_store *ver FREE( vertex_store ); } -static GLfloat *map_vertex_store( GLcontext *ctx, struct vbo_save_vertex_store *vertex_store ) +static GLfloat *map_vertex_store( struct gl_context *ctx, struct vbo_save_vertex_store *vertex_store ) { assert(vertex_store->bufferobj); assert(!vertex_store->buffer); @@ -222,14 +222,14 @@ static GLfloat *map_vertex_store( GLcontext *ctx, struct vbo_save_vertex_store * return vertex_store->buffer + vertex_store->used; } -static void unmap_vertex_store( GLcontext *ctx, struct vbo_save_vertex_store *vertex_store ) +static void unmap_vertex_store( struct gl_context *ctx, struct vbo_save_vertex_store *vertex_store ) { ctx->Driver.UnmapBuffer( ctx, GL_ARRAY_BUFFER_ARB, vertex_store->bufferobj ); vertex_store->buffer = NULL; } -static struct vbo_save_primitive_store *alloc_prim_store( GLcontext *ctx ) +static struct vbo_save_primitive_store *alloc_prim_store( struct gl_context *ctx ) { struct vbo_save_primitive_store *store = CALLOC_STRUCT(vbo_save_primitive_store); (void) ctx; @@ -238,7 +238,7 @@ static struct vbo_save_primitive_store *alloc_prim_store( GLcontext *ctx ) return store; } -static void _save_reset_counters( GLcontext *ctx ) +static void _save_reset_counters( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -264,7 +264,7 @@ static void _save_reset_counters( GLcontext *ctx ) /* Insert the active immediate struct onto the display list currently * being built. */ -static void _save_compile_vertex_list( GLcontext *ctx ) +static void _save_compile_vertex_list( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; struct vbo_save_vertex_list *node; @@ -391,7 +391,7 @@ static void _save_compile_vertex_list( GLcontext *ctx ) /* TODO -- If no new vertices have been stored, don't bother saving * it. */ -static void _save_wrap_buffers( GLcontext *ctx ) +static void _save_wrap_buffers( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; GLint i = save->prim_count - 1; @@ -430,7 +430,7 @@ static void _save_wrap_buffers( GLcontext *ctx ) /* Called only when buffers are wrapped as the result of filling the * vertex_store struct. */ -static void _save_wrap_filled_vertex( GLcontext *ctx ) +static void _save_wrap_filled_vertex( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; GLfloat *data = save->copied.buffer; @@ -453,7 +453,7 @@ static void _save_wrap_filled_vertex( GLcontext *ctx ) } -static void _save_copy_to_current( GLcontext *ctx ) +static void _save_copy_to_current( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; GLuint i; @@ -469,7 +469,7 @@ static void _save_copy_to_current( GLcontext *ctx ) } -static void _save_copy_from_current( GLcontext *ctx ) +static void _save_copy_from_current( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; GLint i; @@ -490,7 +490,7 @@ static void _save_copy_from_current( GLcontext *ctx ) /* Flush existing data, set new attrib size, replay copied vertices. */ -static void _save_upgrade_vertex( GLcontext *ctx, +static void _save_upgrade_vertex( struct gl_context *ctx, GLuint attr, GLuint newsz ) { @@ -586,7 +586,7 @@ static void _save_upgrade_vertex( GLcontext *ctx, } } -static void save_fixup_vertex( GLcontext *ctx, GLuint attr, GLuint sz ) +static void save_fixup_vertex( struct gl_context *ctx, GLuint attr, GLuint sz ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -610,7 +610,7 @@ static void save_fixup_vertex( GLcontext *ctx, GLuint attr, GLuint sz ) save->active_sz[attr] = sz; } -static void _save_reset_vertex( GLcontext *ctx ) +static void _save_reset_vertex( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; GLuint i; @@ -673,7 +673,7 @@ do { \ * -- Flush current buffer * -- Fallback to opcodes for the rest of the begin/end object. */ -static void DO_FALLBACK( GLcontext *ctx ) +static void DO_FALLBACK( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -763,7 +763,7 @@ static void GLAPIENTRY _save_CallLists( GLsizei n, GLenum type, const GLvoid *v /* This begin is hooked into ... Updating of * ctx->Driver.CurrentSavePrimitive is already taken care of. */ -GLboolean vbo_save_NotifyBegin( GLcontext *ctx, GLenum mode ) +GLboolean vbo_save_NotifyBegin( struct gl_context *ctx, GLenum mode ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -989,7 +989,7 @@ static void GLAPIENTRY _save_OBE_DrawRangeElements(GLenum mode, -static void _save_vtxfmt_init( GLcontext *ctx ) +static void _save_vtxfmt_init( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; GLvertexformat *vfmt = &save->vtxfmt; @@ -1074,7 +1074,7 @@ static void _save_vtxfmt_init( GLcontext *ctx ) } -void vbo_save_SaveFlushVertices( GLcontext *ctx ) +void vbo_save_SaveFlushVertices( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -1094,7 +1094,7 @@ void vbo_save_SaveFlushVertices( GLcontext *ctx ) ctx->Driver.SaveNeedFlush = 0; } -void vbo_save_NewList( GLcontext *ctx, GLuint list, GLenum mode ) +void vbo_save_NewList( struct gl_context *ctx, GLuint list, GLenum mode ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -1113,7 +1113,7 @@ void vbo_save_NewList( GLcontext *ctx, GLuint list, GLenum mode ) ctx->Driver.SaveNeedFlush = 0; } -void vbo_save_EndList( GLcontext *ctx ) +void vbo_save_EndList( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -1147,13 +1147,13 @@ void vbo_save_EndList( GLcontext *ctx ) assert(save->vertex_size == 0); } -void vbo_save_BeginCallList( GLcontext *ctx, struct gl_display_list *dlist ) +void vbo_save_BeginCallList( struct gl_context *ctx, struct gl_display_list *dlist ) { struct vbo_save_context *save = &vbo_context(ctx)->save; save->replay_flags |= dlist->Flags; } -void vbo_save_EndCallList( GLcontext *ctx ) +void vbo_save_EndCallList( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; @@ -1166,7 +1166,7 @@ void vbo_save_EndCallList( GLcontext *ctx ) } -static void vbo_destroy_vertex_list( GLcontext *ctx, void *data ) +static void vbo_destroy_vertex_list( struct gl_context *ctx, void *data ) { struct vbo_save_vertex_list *node = (struct vbo_save_vertex_list *)data; (void) ctx; @@ -1184,7 +1184,7 @@ static void vbo_destroy_vertex_list( GLcontext *ctx, void *data ) } -static void vbo_print_vertex_list( GLcontext *ctx, void *data ) +static void vbo_print_vertex_list( struct gl_context *ctx, void *data ) { struct vbo_save_vertex_list *node = (struct vbo_save_vertex_list *)data; GLuint i; @@ -1209,7 +1209,7 @@ static void vbo_print_vertex_list( GLcontext *ctx, void *data ) } -static void _save_current_init( GLcontext *ctx ) +static void _save_current_init( struct gl_context *ctx ) { struct vbo_save_context *save = &vbo_context(ctx)->save; GLint i; @@ -1234,7 +1234,7 @@ static void _save_current_init( GLcontext *ctx ) */ void vbo_save_api_init( struct vbo_save_context *save ) { - GLcontext *ctx = save->ctx; + struct gl_context *ctx = save->ctx; GLuint i; save->opcode_vertex_list = diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c index 297fd8705bf..533c150a918 100644 --- a/src/mesa/vbo/vbo_save_draw.c +++ b/src/mesa/vbo/vbo_save_draw.c @@ -46,7 +46,7 @@ * last vertex to the saved state */ static void -_playback_copy_to_current(GLcontext *ctx, +_playback_copy_to_current(struct gl_context *ctx, const struct vbo_save_vertex_list *node) { struct vbo_context *vbo = vbo_context(ctx); @@ -124,7 +124,7 @@ _playback_copy_to_current(GLcontext *ctx, * Treat the vertex storage as a VBO, define vertex arrays pointing * into it: */ -static void vbo_bind_vertex_list(GLcontext *ctx, +static void vbo_bind_vertex_list(struct gl_context *ctx, const struct vbo_save_vertex_list *node) { struct vbo_context *vbo = vbo_context(ctx); @@ -209,7 +209,7 @@ static void vbo_bind_vertex_list(GLcontext *ctx, static void -vbo_save_loopback_vertex_list(GLcontext *ctx, +vbo_save_loopback_vertex_list(struct gl_context *ctx, const struct vbo_save_vertex_list *list) { const char *buffer = ctx->Driver.MapBuffer(ctx, @@ -236,7 +236,7 @@ vbo_save_loopback_vertex_list(GLcontext *ctx, * a drawing command. */ void -vbo_save_playback_vertex_list(GLcontext *ctx, void *data) +vbo_save_playback_vertex_list(struct gl_context *ctx, void *data) { const struct vbo_save_vertex_list *node = (const struct vbo_save_vertex_list *) data; diff --git a/src/mesa/vbo/vbo_save_loopback.c b/src/mesa/vbo/vbo_save_loopback.c index 5d1c7e48102..b1cfa9c2a8f 100644 --- a/src/mesa/vbo/vbo_save_loopback.c +++ b/src/mesa/vbo/vbo_save_loopback.c @@ -39,29 +39,29 @@ #if FEATURE_dlist -typedef void (*attr_func)( GLcontext *ctx, GLint target, const GLfloat * ); +typedef void (*attr_func)( struct gl_context *ctx, GLint target, const GLfloat * ); /* This file makes heavy use of the aliasing of NV vertex attributes * with the legacy attributes, and also with ARB and Material * attributes as currently implemented. */ -static void VertexAttrib1fvNV(GLcontext *ctx, GLint target, const GLfloat *v) +static void VertexAttrib1fvNV(struct gl_context *ctx, GLint target, const GLfloat *v) { CALL_VertexAttrib1fvNV(ctx->Exec, (target, v)); } -static void VertexAttrib2fvNV(GLcontext *ctx, GLint target, const GLfloat *v) +static void VertexAttrib2fvNV(struct gl_context *ctx, GLint target, const GLfloat *v) { CALL_VertexAttrib2fvNV(ctx->Exec, (target, v)); } -static void VertexAttrib3fvNV(GLcontext *ctx, GLint target, const GLfloat *v) +static void VertexAttrib3fvNV(struct gl_context *ctx, GLint target, const GLfloat *v) { CALL_VertexAttrib3fvNV(ctx->Exec, (target, v)); } -static void VertexAttrib4fvNV(GLcontext *ctx, GLint target, const GLfloat *v) +static void VertexAttrib4fvNV(struct gl_context *ctx, GLint target, const GLfloat *v) { CALL_VertexAttrib4fvNV(ctx->Exec, (target, v)); } @@ -83,7 +83,7 @@ struct loopback_attr { * wrapped vertices. If we get here, it's probably because the * precalculated wrapping is wrong. */ -static void loopback_prim( GLcontext *ctx, +static void loopback_prim( struct gl_context *ctx, const GLfloat *buffer, const struct _mesa_prim *prim, GLuint wrap_count, @@ -138,7 +138,7 @@ static void loopback_prim( GLcontext *ctx, * normally, otherwise need to track and discard the generated * primitives. */ -static void loopback_weak_prim( GLcontext *ctx, +static void loopback_weak_prim( struct gl_context *ctx, const struct _mesa_prim *prim ) { /* Use the prim_weak flag to ensure that if this primitive @@ -155,7 +155,7 @@ static void loopback_weak_prim( GLcontext *ctx, } -void vbo_loopback_vertex_list( GLcontext *ctx, +void vbo_loopback_vertex_list( struct gl_context *ctx, const GLfloat *buffer, const GLubyte *attrsz, const struct _mesa_prim *prim, diff --git a/src/mesa/vbo/vbo_split.c b/src/mesa/vbo/vbo_split.c index ce40cbbcc3d..54b2539b8ec 100644 --- a/src/mesa/vbo/vbo_split.c +++ b/src/mesa/vbo/vbo_split.c @@ -98,7 +98,7 @@ GLboolean split_prim_inplace(GLenum mode, GLuint *first, GLuint *incr) -void vbo_split_prims( GLcontext *ctx, +void vbo_split_prims( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, diff --git a/src/mesa/vbo/vbo_split.h b/src/mesa/vbo/vbo_split.h index 05888d048cb..b7f0a9c5769 100644 --- a/src/mesa/vbo/vbo_split.h +++ b/src/mesa/vbo/vbo_split.h @@ -49,7 +49,7 @@ */ GLboolean split_prim_inplace(GLenum mode, GLuint *first, GLuint *incr); -void vbo_split_inplace( GLcontext *ctx, +void vbo_split_inplace( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, @@ -61,7 +61,7 @@ void vbo_split_inplace( GLcontext *ctx, /* Requires ib != NULL: */ -void vbo_split_copy( GLcontext *ctx, +void vbo_split_copy( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, diff --git a/src/mesa/vbo/vbo_split_copy.c b/src/mesa/vbo/vbo_split_copy.c index 2ec7d9b0fe3..26d0046e83d 100644 --- a/src/mesa/vbo/vbo_split_copy.c +++ b/src/mesa/vbo/vbo_split_copy.c @@ -49,7 +49,7 @@ */ struct copy_context { - GLcontext *ctx; + struct gl_context *ctx; const struct gl_client_array **array; const struct _mesa_prim *prim; GLuint nr_prims; @@ -137,7 +137,7 @@ check_flush( struct copy_context *copy ) * Dump the parameters/info for a vbo->draw() call. */ static void -dump_draw_info(GLcontext *ctx, +dump_draw_info(struct gl_context *ctx, const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, @@ -419,7 +419,7 @@ replay_elts( struct copy_context *copy ) static void replay_init( struct copy_context *copy ) { - GLcontext *ctx = copy->ctx; + struct gl_context *ctx = copy->ctx; GLuint i; GLuint offset; const GLvoid *srcptr; @@ -548,7 +548,7 @@ replay_init( struct copy_context *copy ) static void replay_finish( struct copy_context *copy ) { - GLcontext *ctx = copy->ctx; + struct gl_context *ctx = copy->ctx; GLuint i; /* Free our vertex and index buffers: @@ -577,7 +577,7 @@ replay_finish( struct copy_context *copy ) /** * Split VBO into smaller pieces, draw the pieces. */ -void vbo_split_copy( GLcontext *ctx, +void vbo_split_copy( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, diff --git a/src/mesa/vbo/vbo_split_inplace.c b/src/mesa/vbo/vbo_split_inplace.c index 2fc866c5773..789cf31364b 100644 --- a/src/mesa/vbo/vbo_split_inplace.c +++ b/src/mesa/vbo/vbo_split_inplace.c @@ -41,7 +41,7 @@ * that. */ struct split_context { - GLcontext *ctx; + struct gl_context *ctx; const struct gl_client_array **array; const struct _mesa_prim *prim; GLuint nr_prims; @@ -249,7 +249,7 @@ static void split_prims( struct split_context *split) } -void vbo_split_inplace( GLcontext *ctx, +void vbo_split_inplace( struct gl_context *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, GLuint nr_prims, diff --git a/src/mesa/x86/gen_matypes.c b/src/mesa/x86/gen_matypes.c index 14cfa910aaf..648bf8787db 100644 --- a/src/mesa/x86/gen_matypes.c +++ b/src/mesa/x86/gen_matypes.c @@ -84,22 +84,22 @@ int main( int argc, char **argv ) printf( "\n" ); - /* GLcontext offsets: + /* struct gl_context offsets: */ - OFFSET_HEADER( "GLcontext" ); + OFFSET_HEADER( "struct gl_context" ); - OFFSET( "CTX_DRIVER_CTX ", GLcontext, DriverCtx ); + OFFSET( "CTX_DRIVER_CTX ", struct gl_context, DriverCtx ); printf( "\n" ); - OFFSET( "CTX_LIGHT_ENABLED ", GLcontext, Light.Enabled ); - OFFSET( "CTX_LIGHT_SHADE_MODEL ", GLcontext, Light.ShadeModel ); - OFFSET( "CTX_LIGHT_COLOR_MAT_FACE ", GLcontext, Light.ColorMaterialFace ); - OFFSET( "CTX_LIGHT_COLOR_MAT_MODE ", GLcontext, Light.ColorMaterialMode ); - OFFSET( "CTX_LIGHT_COLOR_MAT_MASK ", GLcontext, Light.ColorMaterialBitmask ); - OFFSET( "CTX_LIGHT_COLOR_MAT_ENABLED ", GLcontext, Light.ColorMaterialEnabled ); - OFFSET( "CTX_LIGHT_ENABLED_LIST ", GLcontext, Light.EnabledList ); - OFFSET( "CTX_LIGHT_NEED_VERTS ", GLcontext, Light._NeedVertices ); - OFFSET( "CTX_LIGHT_FLAGS ", GLcontext, Light._Flags ); - OFFSET( "CTX_LIGHT_BASE_COLOR ", GLcontext, Light._BaseColor ); + OFFSET( "CTX_LIGHT_ENABLED ", struct gl_context, Light.Enabled ); + OFFSET( "CTX_LIGHT_SHADE_MODEL ", struct gl_context, Light.ShadeModel ); + OFFSET( "CTX_LIGHT_COLOR_MAT_FACE ", struct gl_context, Light.ColorMaterialFace ); + OFFSET( "CTX_LIGHT_COLOR_MAT_MODE ", struct gl_context, Light.ColorMaterialMode ); + OFFSET( "CTX_LIGHT_COLOR_MAT_MASK ", struct gl_context, Light.ColorMaterialBitmask ); + OFFSET( "CTX_LIGHT_COLOR_MAT_ENABLED ", struct gl_context, Light.ColorMaterialEnabled ); + OFFSET( "CTX_LIGHT_ENABLED_LIST ", struct gl_context, Light.EnabledList ); + OFFSET( "CTX_LIGHT_NEED_VERTS ", struct gl_context, Light._NeedVertices ); + OFFSET( "CTX_LIGHT_FLAGS ", struct gl_context, Light._Flags ); + OFFSET( "CTX_LIGHT_BASE_COLOR ", struct gl_context, Light._BaseColor ); /* struct vertex_buffer offsets: diff --git a/src/mesa/x86/mmx.h b/src/mesa/x86/mmx.h index 47a0d4b54dd..d4bda07eade 100644 --- a/src/mesa/x86/mmx.h +++ b/src/mesa/x86/mmx.h @@ -30,27 +30,27 @@ #include "main/mtypes.h" extern void _ASMAPI -_mesa_mmx_blend_transparency( GLcontext *ctx, GLuint n, const GLubyte mask[], +_mesa_mmx_blend_transparency( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *rgba, const GLvoid *dest, GLenum chanType ); extern void _ASMAPI -_mesa_mmx_blend_add( GLcontext *ctx, GLuint n, const GLubyte mask[], +_mesa_mmx_blend_add( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *rgba, const GLvoid *dest, GLenum chanType ); extern void _ASMAPI -_mesa_mmx_blend_min( GLcontext *ctx, GLuint n, const GLubyte mask[], +_mesa_mmx_blend_min( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *rgba, const GLvoid *dest, GLenum chanType ); extern void _ASMAPI -_mesa_mmx_blend_max( GLcontext *ctx, GLuint n, const GLubyte mask[], +_mesa_mmx_blend_max( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *rgba, const GLvoid *dest, GLenum chanType ); extern void _ASMAPI -_mesa_mmx_blend_modulate( GLcontext *ctx, GLuint n, const GLubyte mask[], +_mesa_mmx_blend_modulate( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *rgba, const GLvoid *dest, GLenum chanType ); diff --git a/src/mesa/x86/mmx_blendtmp.h b/src/mesa/x86/mmx_blendtmp.h index c2fdeb62b3b..8534792e297 100644 --- a/src/mesa/x86/mmx_blendtmp.h +++ b/src/mesa/x86/mmx_blendtmp.h @@ -4,7 +4,7 @@ /* - * void _mesa_mmx_blend( GLcontext *ctx, + * void _mesa_mmx_blend( struct gl_context *ctx, * GLuint n, * const GLubyte mask[], * GLchan rgba[][4], -- cgit v1.2.3 From 95c18abb03b035c6fa029cd0852f07fb39951279 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 13 Oct 2010 14:28:51 +0100 Subject: llvmpipe: Unbreak Z32_FLOAT. Z32_FLOAT uses <4 x float> as intermediate/destination type, instead of <4 x i32>. The necessary bitcasts got removed with commit 5b7eb868fde98388d80601d8dea39e679828f42f Also use depth/stencil type and build contexts consistently, and make the depth pointer argument a ordinary , to catch this sort of issues in the future (and also to pave way for Z16 and Z32_FLOAT_S8_X24 support). --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 130 ++++++++++++++++------------ src/gallium/drivers/llvmpipe/lp_bld_depth.h | 6 ++ src/gallium/drivers/llvmpipe/lp_state_fs.c | 21 +++-- 3 files changed, 93 insertions(+), 64 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 264fce8d6a6..3162f3e1c2e 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -458,9 +458,9 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef *zs_value, boolean do_branch) { - struct lp_type type; - struct lp_build_context bld; - struct lp_build_context sbld; + struct lp_type z_type; + struct lp_build_context z_bld; + struct lp_build_context s_bld; struct lp_type s_type; LLVMValueRef zs_dst, z_dst = NULL; LLVMValueRef stencil_vals = NULL; @@ -483,28 +483,31 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, /* We know the values in z_dst are all >= 0, so allow * lp_build_compare to use signed compare intrinsics: */ - type.floating = 0; - type.fixed = 0; - type.sign = 1; - type.norm = 1; - type.width = 32; - type.length = z_src_type.length; + z_type.floating = 0; + z_type.fixed = 0; + z_type.sign = 1; + z_type.norm = 1; + z_type.width = 32; + z_type.length = z_src_type.length; int32_vec_type = LLVMVectorType(LLVMInt32Type(), z_src_type.length); - const_8_int = lp_build_const_int_vec(type, 8); + const_8_int = lp_build_const_int_vec(z_type, 8); const_ffffff_float = lp_build_const_vec(z_src_type, (float)0xffffff); zscaled = LLVMBuildFMul(builder, z_src, const_ffffff_float, "zscaled"); z_src = LLVMBuildFPToSI(builder, zscaled, int32_vec_type, "z_src"); /* Load current z/stencil value from z/stencil buffer */ + zs_dst_ptr = LLVMBuildBitCast(builder, + zs_dst_ptr, + LLVMPointerType(int32_vec_type, 0), ""); z_dst = LLVMBuildLoad(builder, zs_dst_ptr, "zsbufval"); z_dst = LLVMBuildLShr(builder, z_dst, const_8_int, "z_dst"); /* compare src Z to dst Z, returning 'pass' mask */ z_pass = lp_build_compare(builder, - type, + z_type, depth->func, z_src, z_dst); lp_build_mask_update(mask, z_pass); @@ -517,10 +520,10 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, * storage. */ if (depth->writemask) { - type.sign = 1; - lp_build_context_init(&bld, builder, type); + z_type.sign = 1; + lp_build_context_init(&z_bld, builder, z_type); - z_dst = lp_build_select(&bld, lp_build_mask_value(mask), z_src, z_dst); + z_dst = lp_build_select(&z_bld, lp_build_mask_value(mask), z_src, z_dst); z_dst = LLVMBuildShl(builder, z_dst, const_8_int, "z_dst"); *zs_value = z_dst; } @@ -543,19 +546,14 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } /* Pick the depth type. */ - type = lp_depth_type(format_desc, z_src_type.width*z_src_type.length); + z_type = lp_depth_type(format_desc, z_src_type.width*z_src_type.length); /* FIXME: Cope with a depth test type with a different bit width. */ - assert(type.width == z_src_type.width); - assert(type.length == z_src_type.length); + assert(z_type.width == z_src_type.width); + assert(z_type.length == z_src_type.length); /* Convert fragment Z from float to integer */ - lp_build_conv(builder, z_src_type, type, &z_src, 1, &z_src, 1); - - zs_dst_ptr = LLVMBuildBitCast(builder, - zs_dst_ptr, - LLVMPointerType(lp_build_vec_type(type), 0), ""); - + lp_build_conv(builder, z_src_type, z_type, &z_src, 1, &z_src, 1); /* Sanity checking */ @@ -578,8 +576,8 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } assert(z_swizzle < 4); - assert(format_desc->block.bits == type.width); - if (type.floating) { + assert(format_desc->block.bits == z_type.width); + if (z_type.floating) { assert(z_swizzle == 0); assert(format_desc->channel[z_swizzle].type == UTIL_FORMAT_TYPE_FLOAT); @@ -590,21 +588,24 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, assert(format_desc->channel[z_swizzle].type == UTIL_FORMAT_TYPE_UNSIGNED); assert(format_desc->channel[z_swizzle].normalized); - assert(!type.fixed); - assert(!type.sign); - assert(type.norm); + assert(!z_type.fixed); + assert(!z_type.sign); + assert(z_type.norm); } } /* Setup build context for Z vals */ - lp_build_context_init(&bld, builder, type); + lp_build_context_init(&z_bld, builder, z_type); /* Setup build context for stencil vals */ - s_type = lp_type_int_vec(type.width); - lp_build_context_init(&sbld, builder, s_type); + s_type = lp_type_int_vec(z_type.width); + lp_build_context_init(&s_bld, builder, s_type); /* Load current z/stencil value from z/stencil buffer */ + zs_dst_ptr = LLVMBuildBitCast(builder, + zs_dst_ptr, + LLVMPointerType(z_bld.vec_type, 0), ""); zs_dst = LLVMBuildLoad(builder, zs_dst_ptr, ""); lp_build_name(zs_dst, "zsbufval"); @@ -618,12 +619,12 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, if (get_z_shift_and_mask(format_desc, &z_shift, &z_mask)) { if (z_shift) { - LLVMValueRef shift = lp_build_const_int_vec(type, z_shift); + LLVMValueRef shift = lp_build_const_int_vec(z_type, z_shift); z_src = LLVMBuildLShr(builder, z_src, shift, ""); } if (z_mask != 0xffffffff) { - LLVMValueRef mask = lp_build_const_int_vec(type, z_mask); + LLVMValueRef mask = lp_build_const_int_vec(z_type, z_mask); z_src = LLVMBuildAnd(builder, z_src, mask, ""); z_dst = LLVMBuildAnd(builder, zs_dst, mask, ""); z_bitmask = mask; /* used below */ @@ -637,7 +638,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, if (get_s_shift_and_mask(format_desc, &s_shift, &s_mask)) { if (s_shift) { - LLVMValueRef shift = lp_build_const_int_vec(type, s_shift); + LLVMValueRef shift = lp_build_const_int_vec(s_type, s_shift); stencil_vals = LLVMBuildLShr(builder, zs_dst, shift, ""); stencil_shift = shift; /* used below */ } @@ -646,7 +647,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } if (s_mask != 0xffffffff) { - LLVMValueRef mask = lp_build_const_int_vec(type, s_mask); + LLVMValueRef mask = lp_build_const_int_vec(s_type, s_mask); stencil_vals = LLVMBuildAnd(builder, stencil_vals, mask, ""); } @@ -662,24 +663,24 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, /* front_facing = face > 0.0 ? ~0 : 0 */ front_facing = LLVMBuildFCmp(builder, LLVMRealUGT, face, zero, ""); front_facing = LLVMBuildSExt(builder, front_facing, - LLVMIntType(bld.type.length*bld.type.width), + LLVMIntType(s_bld.type.length*s_bld.type.width), ""); front_facing = LLVMBuildBitCast(builder, front_facing, - bld.int_vec_type, ""); + s_bld.int_vec_type, ""); } /* convert scalar stencil refs into vectors */ - stencil_refs[0] = lp_build_broadcast_scalar(&bld, stencil_refs[0]); - stencil_refs[1] = lp_build_broadcast_scalar(&bld, stencil_refs[1]); + stencil_refs[0] = lp_build_broadcast_scalar(&s_bld, stencil_refs[0]); + stencil_refs[1] = lp_build_broadcast_scalar(&s_bld, stencil_refs[1]); - s_pass_mask = lp_build_stencil_test(&sbld, stencil, + s_pass_mask = lp_build_stencil_test(&s_bld, stencil, stencil_refs, stencil_vals, front_facing); /* apply stencil-fail operator */ { - LLVMValueRef s_fail_mask = lp_build_andnot(&bld, orig_mask, s_pass_mask); - stencil_vals = lp_build_stencil_op(&sbld, stencil, S_FAIL_OP, + LLVMValueRef s_fail_mask = lp_build_andnot(&s_bld, orig_mask, s_pass_mask); + stencil_vals = lp_build_stencil_op(&s_bld, stencil, S_FAIL_OP, stencil_refs, stencil_vals, s_fail_mask, front_facing); } @@ -687,7 +688,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, if (depth->enabled) { /* compare src Z to dst Z, returning 'pass' mask */ - z_pass = lp_build_cmp(&bld, depth->func, z_src, z_dst); + z_pass = lp_build_cmp(&z_bld, depth->func, z_src, z_dst); if (!stencil[0].enabled) { /* We can potentially skip all remaining operations here, but only @@ -721,7 +722,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, /* Mix the old and new Z buffer values. * z_dst[i] = (zselectmask[i] & z_src[i]) | (~zselectmask[i] & z_dst[i]) */ - z_dst = lp_build_select_bitwise(&bld, zselectmask, z_src, z_dst); + z_dst = lp_build_select_bitwise(&z_bld, zselectmask, z_src, z_dst); } if (stencil[0].enabled) { @@ -729,14 +730,14 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef z_fail_mask, z_pass_mask; /* apply Z-fail operator */ - z_fail_mask = lp_build_andnot(&bld, orig_mask, z_pass); - stencil_vals = lp_build_stencil_op(&sbld, stencil, Z_FAIL_OP, + z_fail_mask = lp_build_andnot(&z_bld, orig_mask, z_pass); + stencil_vals = lp_build_stencil_op(&s_bld, stencil, Z_FAIL_OP, stencil_refs, stencil_vals, z_fail_mask, front_facing); /* apply Z-pass operator */ - z_pass_mask = LLVMBuildAnd(bld.builder, orig_mask, z_pass, ""); - stencil_vals = lp_build_stencil_op(&sbld, stencil, Z_PASS_OP, + z_pass_mask = LLVMBuildAnd(z_bld.builder, orig_mask, z_pass, ""); + stencil_vals = lp_build_stencil_op(&s_bld, stencil, Z_PASS_OP, stencil_refs, stencil_vals, z_pass_mask, front_facing); } @@ -745,8 +746,8 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, /* No depth test: apply Z-pass operator to stencil buffer values which * passed the stencil test. */ - s_pass_mask = LLVMBuildAnd(bld.builder, orig_mask, s_pass_mask, ""); - stencil_vals = lp_build_stencil_op(&sbld, stencil, Z_PASS_OP, + s_pass_mask = LLVMBuildAnd(s_bld.builder, orig_mask, s_pass_mask, ""); + stencil_vals = lp_build_stencil_op(&s_bld, stencil, Z_PASS_OP, stencil_refs, stencil_vals, s_pass_mask, front_facing); } @@ -755,7 +756,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, * stencil bits before ORing Z with Stencil to make the final pixel value. */ if (stencil_vals && stencil_shift) - stencil_vals = LLVMBuildShl(bld.builder, stencil_vals, + stencil_vals = LLVMBuildShl(s_bld.builder, stencil_vals, stencil_shift, ""); /* Finally, merge/store the z/stencil values */ @@ -763,7 +764,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, (stencil[0].enabled && stencil[0].writemask)) { if (z_dst && stencil_vals) - zs_dst = LLVMBuildOr(bld.builder, z_dst, stencil_vals, ""); + zs_dst = LLVMBuildOr(z_bld.builder, z_dst, stencil_vals, ""); else if (z_dst) zs_dst = z_dst; else @@ -784,6 +785,18 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } +void +lp_build_depth_write(LLVMBuilderRef builder, + const struct util_format_description *format_desc, + LLVMValueRef zs_dst_ptr, + LLVMValueRef zs_value) +{ + zs_dst_ptr = LLVMBuildBitCast(builder, zs_dst_ptr, + LLVMPointerType(LLVMTypeOf(zs_value), 0), ""); + + LLVMBuildStore(builder, zs_value, zs_dst_ptr); +} + void lp_build_deferred_depth_write(LLVMBuilderRef builder, @@ -793,17 +806,20 @@ lp_build_deferred_depth_write(LLVMBuilderRef builder, LLVMValueRef zs_dst_ptr, LLVMValueRef zs_value) { - struct lp_type type; - struct lp_build_context bld; + struct lp_type z_type; + struct lp_build_context z_bld; LLVMValueRef z_dst; /* XXX: pointlessly redo type logic: */ - type = lp_depth_type(format_desc, z_src_type.width*z_src_type.length); - lp_build_context_init(&bld, builder, type); + z_type = lp_depth_type(format_desc, z_src_type.width*z_src_type.length); + lp_build_context_init(&z_bld, builder, z_type); + + zs_dst_ptr = LLVMBuildBitCast(builder, zs_dst_ptr, + LLVMPointerType(z_bld.vec_type, 0), ""); z_dst = LLVMBuildLoad(builder, zs_dst_ptr, "zsbufval"); - z_dst = lp_build_select(&bld, lp_build_mask_value(mask), zs_value, z_dst); + z_dst = lp_build_select(&z_bld, lp_build_mask_value(mask), zs_value, z_dst); LLVMBuildStore(builder, z_dst, zs_dst_ptr); } diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.h b/src/gallium/drivers/llvmpipe/lp_bld_depth.h index 0f89668123a..a54ef3a711e 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.h @@ -64,6 +64,12 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef *zs_value, boolean do_branch); +void +lp_build_depth_write(LLVMBuilderRef builder, + const struct util_format_description *format_desc, + LLVMValueRef zs_dst_ptr, + LLVMValueRef zs_value); + void lp_build_deferred_depth_write(LLVMBuilderRef builder, struct lp_type z_src_type, diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 6872f2d3c6a..c09835635dd 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -325,8 +325,9 @@ generate_fs(struct llvmpipe_context *lp, &zs_value, !simple_shader); - if (depth_mode & EARLY_DEPTH_WRITE) - LLVMBuildStore(builder, zs_value, depth_ptr); + if (depth_mode & EARLY_DEPTH_WRITE) { + lp_build_depth_write(builder, zs_format_desc, depth_ptr, zs_value); + } } lp_build_interp_soa_update_inputs(interp, i); @@ -379,8 +380,9 @@ generate_fs(struct llvmpipe_context *lp, &zs_value, !simple_shader); /* Late Z write */ - if (depth_mode & LATE_DEPTH_WRITE) - LLVMBuildStore(builder, zs_value, depth_ptr); + if (depth_mode & LATE_DEPTH_WRITE) { + lp_build_depth_write(builder, zs_format_desc, depth_ptr, zs_value); + } } else if ((depth_mode & EARLY_DEPTH_TEST) && (depth_mode & LATE_DEPTH_WRITE)) @@ -534,6 +536,7 @@ generate_fragment(struct llvmpipe_context *lp, LLVMValueRef blend_mask; LLVMValueRef function; LLVMValueRef facing; + const struct util_format_description *zs_format_desc; unsigned num_fs; unsigned i; unsigned chan; @@ -579,7 +582,7 @@ generate_fragment(struct llvmpipe_context *lp, arg_types[5] = LLVMPointerType(fs_elem_type, 0); /* dadx */ arg_types[6] = LLVMPointerType(fs_elem_type, 0); /* dady */ arg_types[7] = LLVMPointerType(LLVMPointerType(blend_vec_type, 0), 0); /* color */ - arg_types[8] = LLVMPointerType(fs_int_vec_type, 0); /* depth */ + arg_types[8] = LLVMPointerType(LLVMInt8Type(), 0); /* depth */ arg_types[9] = LLVMInt32Type(); /* mask_input */ arg_types[10] = LLVMPointerType(LLVMInt32Type(), 0);/* counter */ @@ -648,12 +651,16 @@ generate_fragment(struct llvmpipe_context *lp, sampler = lp_llvm_sampler_soa_create(key->sampler, context_ptr); /* loop over quads in the block */ + zs_format_desc = util_format_description(key->zsbuf_format); + for(i = 0; i < num_fs; ++i) { - LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0); + LLVMValueRef depth_offset = LLVMConstInt(LLVMInt32Type(), + i*fs_type.length*zs_format_desc->block.bits/8, + 0); LLVMValueRef out_color[PIPE_MAX_COLOR_BUFS][NUM_CHANNELS]; LLVMValueRef depth_ptr_i; - depth_ptr_i = LLVMBuildGEP(builder, depth_ptr, &index, 1, ""); + depth_ptr_i = LLVMBuildGEP(builder, depth_ptr, &depth_offset, 1, ""); generate_fs(lp, shader, key, builder, -- cgit v1.2.3 From bee22ed6b9425fa4681211e84d0a61467975195f Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 13 Oct 2010 11:18:40 -0700 Subject: gallivm: Remove unnecessary header. --- src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c index d1f82610025..ad514463de0 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c @@ -29,7 +29,6 @@ #include "util/u_memory.h" #include "util/u_math.h" #include "tgsi/tgsi_parse.h" -#include "tgsi/tgsi_text.h" #include "tgsi/tgsi_util.h" #include "tgsi/tgsi_dump.h" #include "lp_bld_debug.h" -- cgit v1.2.3 From e487b665aa6f3d6f290916d1205107dd2dea971d Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 13 Oct 2010 12:35:38 -0600 Subject: gallivm: work-around trilinear mipmap filtering regression with LLVM 2.8 The bug only happens on the AOS / fixed-pt path. --- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index 641d24b5b6d..d3e3b242af4 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -873,6 +873,26 @@ lp_build_sample_mipmap(struct lp_build_sample_context *bld, lod_fpart = LLVMBuildTrunc(builder, lod_fpart, h16_bld.elem_type, ""); lod_fpart = lp_build_broadcast_scalar(&h16_bld, lod_fpart); +#if HAVE_LLVM == 0x208 + /* This is a work-around for a bug in LLVM 2.8. + * Evidently, something goes wrong in the construction of the + * lod_fpart short[8] vector. Adding this no-effect shuffle seems + * to force the vector to be properly constructed. + * Tested with mesa-demos/src/tests/mipmap_limits.c (press t, f). + */ + { + LLVMValueRef shuffles[8], shuffle; + int i; + assert(h16_bld.type.length <= Elements(shuffles)); + for (i = 0; i < h16_bld.type.length; i++) + shuffles[i] = lp_build_const_int32(2 * (i & 1)); + shuffle = LLVMConstVector(shuffles, h16_bld.type.length); + lod_fpart = LLVMBuildShuffleVector(builder, + lod_fpart, lod_fpart, + shuffle, ""); + } +#endif + colors0_lo = lp_build_lerp(&h16_bld, lod_fpart, colors0_lo, colors1_lo); colors0_hi = lp_build_lerp(&h16_bld, lod_fpart, -- cgit v1.2.3 From 60c5d4735d5fa5642c84f6d7c3847ac213efcb53 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 13 Oct 2010 15:45:24 +0100 Subject: gallivm: More accurate float -> 24bit & 32bit unorm conversion. --- src/gallium/auxiliary/gallivm/lp_bld_conv.c | 126 +++++++++++++++++++--------- 1 file changed, 86 insertions(+), 40 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 20aa93e7781..6967dd26225 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -97,58 +97,104 @@ lp_build_clamped_float_to_unsigned_norm(LLVMBuilderRef builder, LLVMTypeRef int_vec_type = lp_build_int_vec_type(src_type); LLVMValueRef res; unsigned mantissa; - unsigned n; - unsigned long long ubound; - unsigned long long mask; - double scale; - double bias; assert(src_type.floating); + assert(dst_width <= src_type.width); + src_type.sign = FALSE; mantissa = lp_mantissa(src_type); - /* We cannot carry more bits than the mantissa */ - n = MIN2(mantissa, dst_width); + if (dst_width <= mantissa) { + /* + * Apply magic coefficients that will make the desired result to appear + * in the lowest significant bits of the mantissa, with correct rounding. + * + * This only works if the destination width fits in the mantissa. + */ - /* This magic coefficients will make the desired result to appear in the - * lowest significant bits of the mantissa. - */ - ubound = ((unsigned long long)1 << n); - mask = ubound - 1; - scale = (double)mask/ubound; - bias = (double)((unsigned long long)1 << (mantissa - n)); + unsigned long long ubound; + unsigned long long mask; + double scale; + double bias; + + ubound = (1ULL << dst_width); + mask = ubound - 1; + scale = (double)mask/ubound; + bias = (double)(1ULL << (mantissa - dst_width)); + + res = LLVMBuildFMul(builder, src, lp_build_const_vec(src_type, scale), ""); + res = LLVMBuildFAdd(builder, res, lp_build_const_vec(src_type, bias), ""); + res = LLVMBuildBitCast(builder, res, int_vec_type, ""); + res = LLVMBuildAnd(builder, res, lp_build_const_int_vec(src_type, mask), ""); + } + else if (dst_width == (mantissa + 1)) { + /* + * The destination width matches exactly what can be represented in + * floating point (i.e., mantissa + 1 bits). So do a straight + * multiplication followed by casting. No further rounding is necessary. + */ - res = LLVMBuildFMul(builder, src, lp_build_const_vec(src_type, scale), ""); - res = LLVMBuildFAdd(builder, res, lp_build_const_vec(src_type, bias), ""); - res = LLVMBuildBitCast(builder, res, int_vec_type, ""); + double scale; - if(dst_width > n) { - int shift = dst_width - n; - res = LLVMBuildShl(builder, res, lp_build_const_int_vec(src_type, shift), ""); + scale = (double)((1ULL << dst_width) - 1); - /* TODO: Fill in the empty lower bits for additional precision? */ - /* YES: this fixes progs/trivial/tri-z-eq.c. - * Otherwise vertex Z=1.0 values get converted to something like - * 0xfffffb00 and the test for equality with 0xffffffff fails. + res = LLVMBuildFMul(builder, src, lp_build_const_vec(src_type, scale), ""); + res = LLVMBuildFPToSI(builder, res, int_vec_type, ""); + } + else { + /* + * The destination exceeds what can be represented in the floating point. + * So multiply by the largest power two we get away with, and when + * subtract the most significant bit to rescale to normalized values. + * + * The largest power of two factor we can get away is + * (1 << (src_type.width - 1)), because we need to use signed . In theory it + * should be (1 << (src_type.width - 2)), but IEEE 754 rules states + * INT_MIN should be returned in FPToSI, which is the correct result for + * values near 1.0! + * + * This means we get (src_type.width - 1) correct bits for values near 0.0, + * and (mantissa + 1) correct bits for values near 1.0. Equally or more + * important, we also get exact results for 0.0 and 1.0. */ -#if 0 - { - LLVMValueRef msb; - msb = LLVMBuildLShr(builder, res, lp_build_const_int_vec(src_type, dst_width - 1), ""); - msb = LLVMBuildShl(builder, msb, lp_build_const_int_vec(src_type, shift), ""); - msb = LLVMBuildSub(builder, msb, lp_build_const_int_vec(src_type, 1), ""); - res = LLVMBuildOr(builder, res, msb, ""); - } -#elif 0 - while(shift > 0) { - res = LLVMBuildOr(builder, res, LLVMBuildLShr(builder, res, lp_build_const_int_vec(src_type, n), ""), ""); - shift -= n; - n *= 2; + + unsigned n = MIN2(src_type.width - 1, dst_width); + + double scale = (double)(1ULL << n); + unsigned lshift = dst_width - n; + unsigned rshift = n; + LLVMValueRef lshifted; + LLVMValueRef rshifted; + + res = LLVMBuildFMul(builder, src, lp_build_const_vec(src_type, scale), ""); + res = LLVMBuildFPToSI(builder, res, int_vec_type, ""); + + /* + * Align the most significant bit to its final place. + * + * This will cause 1.0 to overflow to 0, but the later adjustment will + * get it right. + */ + if (lshift) { + lshifted = LLVMBuildShl(builder, res, + lp_build_const_int_vec(src_type, lshift), ""); + } else { + lshifted = res; } -#endif + + /* + * Align the most significant bit to the right. + */ + rshifted = LLVMBuildAShr(builder, res, + lp_build_const_int_vec(src_type, rshift), ""); + + /* + * Subtract the MSB to the LSB, therefore re-scaling from + * (1 << dst_width) to ((1 << dst_width) - 1). + */ + + res = LLVMBuildSub(builder, lshifted, rshifted, ""); } - else - res = LLVMBuildAnd(builder, res, lp_build_const_int_vec(src_type, mask), ""); return res; } -- cgit v1.2.3 From ae00e34e4b0d3be247b0538b60810176397c7915 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 13 Oct 2010 20:25:17 +0100 Subject: llvmpipe: Generalize the x8z24 fast path to all depth formats. Together with the previous commit, this generalize the benefits of d2cf757f44f4ee5554243f3279483a25886d9927 to all depth formats, in particular: - simpler float -> 24unorm conversion - avoid unsigned comparisons (not directly supported on SSE) by aligning to the least significant bit - avoid unecessary/repeated mask ANDing Verified with trivial/tri-z that the exact same assembly is produced for X8Z24. --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 193 ++++++++++++---------------- 1 file changed, 82 insertions(+), 111 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 3162f3e1c2e..e4cfa97aa3f 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -304,8 +304,13 @@ lp_depth_type(const struct util_format_description *format_desc, } else if(format_desc->channel[swizzle].type == UTIL_FORMAT_TYPE_UNSIGNED) { assert(format_desc->block.bits <= 32); - if(format_desc->channel[swizzle].normalized) - type.norm = TRUE; + assert(format_desc->channel[swizzle].normalized); + if (format_desc->channel[swizzle].size < format_desc->block.bits) { + /* Prefer signed integers when possible, as SSE has less support + * for unsigned comparison; + */ + type.sign = TRUE; + } } else assert(0); @@ -325,9 +330,9 @@ lp_depth_type(const struct util_format_description *format_desc, * in the Z buffer (typically 0xffffff00 or 0x00ffffff). That lets us * get by with fewer bit twiddling steps. */ -static boolean +static void get_z_shift_and_mask(const struct util_format_description *format_desc, - unsigned *shift, unsigned *mask) + unsigned *shift, unsigned *width, unsigned *mask) { const unsigned total_bits = format_desc->block.bits; unsigned z_swizzle; @@ -340,15 +345,16 @@ get_z_shift_and_mask(const struct util_format_description *format_desc, z_swizzle = format_desc->swizzle[0]; - if (z_swizzle == UTIL_FORMAT_SWIZZLE_NONE) - return FALSE; + assert(z_swizzle != UTIL_FORMAT_SWIZZLE_NONE); + + *width = format_desc->channel[z_swizzle].size; padding_right = 0; for (chan = 0; chan < z_swizzle; ++chan) padding_right += format_desc->channel[chan].size; padding_left = - total_bits - (padding_right + format_desc->channel[z_swizzle].size); + total_bits - (padding_right + *width); if (padding_left || padding_right) { unsigned long long mask_left = (1ULL << (total_bits - padding_left)) - 1; @@ -359,9 +365,7 @@ get_z_shift_and_mask(const struct util_format_description *format_desc, *mask = 0xffffffff; } - *shift = padding_left; - - return TRUE; + *shift = padding_right; } @@ -462,6 +466,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, struct lp_build_context z_bld; struct lp_build_context s_bld; struct lp_type s_type; + unsigned z_shift, z_width, z_mask; LLVMValueRef zs_dst, z_dst = NULL; LLVMValueRef stencil_vals = NULL; LLVMValueRef z_bitmask = NULL, stencil_shift = NULL; @@ -469,67 +474,6 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMValueRef orig_mask = lp_build_mask_value(mask); LLVMValueRef front_facing = NULL; - /* Prototype a simpler path: - */ - if (z_src_type.floating && - format_desc->format == PIPE_FORMAT_X8Z24_UNORM && - depth->enabled) - { - LLVMValueRef zscaled; - LLVMValueRef const_ffffff_float; - LLVMValueRef const_8_int; - LLVMTypeRef int32_vec_type; - - /* We know the values in z_dst are all >= 0, so allow - * lp_build_compare to use signed compare intrinsics: - */ - z_type.floating = 0; - z_type.fixed = 0; - z_type.sign = 1; - z_type.norm = 1; - z_type.width = 32; - z_type.length = z_src_type.length; - - int32_vec_type = LLVMVectorType(LLVMInt32Type(), z_src_type.length); - - const_8_int = lp_build_const_int_vec(z_type, 8); - const_ffffff_float = lp_build_const_vec(z_src_type, (float)0xffffff); - - zscaled = LLVMBuildFMul(builder, z_src, const_ffffff_float, "zscaled"); - z_src = LLVMBuildFPToSI(builder, zscaled, int32_vec_type, "z_src"); - - /* Load current z/stencil value from z/stencil buffer */ - zs_dst_ptr = LLVMBuildBitCast(builder, - zs_dst_ptr, - LLVMPointerType(int32_vec_type, 0), ""); - z_dst = LLVMBuildLoad(builder, zs_dst_ptr, "zsbufval"); - z_dst = LLVMBuildLShr(builder, z_dst, const_8_int, "z_dst"); - - /* compare src Z to dst Z, returning 'pass' mask */ - z_pass = lp_build_compare(builder, - z_type, - depth->func, z_src, z_dst); - - lp_build_mask_update(mask, z_pass); - - if (do_branch) - lp_build_mask_check(mask); - - /* No need to worry about old stencil contents, just blend the - * old and new values and shift into the correct position for - * storage. - */ - if (depth->writemask) { - z_type.sign = 1; - lp_build_context_init(&z_bld, builder, z_type); - - z_dst = lp_build_select(&z_bld, lp_build_mask_value(mask), z_src, z_dst); - z_dst = LLVMBuildShl(builder, z_dst, const_8_int, "z_dst"); - *zs_value = z_dst; - } - - return; - } /* * Depths are expected to be between 0 and 1, even if they are stored in @@ -552,10 +496,6 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, assert(z_type.width == z_src_type.width); assert(z_type.length == z_src_type.length); - /* Convert fragment Z from float to integer */ - lp_build_conv(builder, z_src_type, z_type, &z_src, 1, &z_src, 1); - - /* Sanity checking */ { const unsigned z_swizzle = format_desc->swizzle[0]; @@ -589,8 +529,6 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, UTIL_FORMAT_TYPE_UNSIGNED); assert(format_desc->channel[z_swizzle].normalized); assert(!z_type.fixed); - assert(!z_type.sign); - assert(z_type.norm); } } @@ -608,34 +546,14 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, LLVMPointerType(z_bld.vec_type, 0), ""); zs_dst = LLVMBuildLoad(builder, zs_dst_ptr, ""); - lp_build_name(zs_dst, "zsbufval"); + lp_build_name(zs_dst, "zs_dst"); /* Compute and apply the Z/stencil bitmasks and shifts. */ { - unsigned z_shift, z_mask; unsigned s_shift, s_mask; - if (get_z_shift_and_mask(format_desc, &z_shift, &z_mask)) { - if (z_shift) { - LLVMValueRef shift = lp_build_const_int_vec(z_type, z_shift); - z_src = LLVMBuildLShr(builder, z_src, shift, ""); - } - - if (z_mask != 0xffffffff) { - LLVMValueRef mask = lp_build_const_int_vec(z_type, z_mask); - z_src = LLVMBuildAnd(builder, z_src, mask, ""); - z_dst = LLVMBuildAnd(builder, zs_dst, mask, ""); - z_bitmask = mask; /* used below */ - } - else { - z_dst = zs_dst; - } - - lp_build_name(z_dst, "zsbuf.z"); - } - if (get_s_shift_and_mask(format_desc, &s_shift, &s_mask)) { if (s_shift) { LLVMValueRef shift = lp_build_const_int_vec(s_type, s_shift); @@ -651,7 +569,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, stencil_vals = LLVMBuildAnd(builder, stencil_vals, mask, ""); } - lp_build_name(stencil_vals, "stencil"); + lp_build_name(stencil_vals, "s_dst"); } } @@ -687,6 +605,62 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } if (depth->enabled) { + get_z_shift_and_mask(format_desc, &z_shift, &z_width, &z_mask); + + /* + * Convert fragment Z to the desired type, aligning the LSB to the right. + */ + + assert(z_type.width == z_src_type.width); + assert(z_type.length == z_src_type.length); + assert(lp_check_value(z_src_type, z_src)); + if (z_src_type.floating) { + /* + * Convert from floating point values + */ + + if (!z_type.floating) { + z_src = lp_build_clamped_float_to_unsigned_norm(builder, + z_src_type, + z_width, + z_src); + } + } else { + /* + * Convert from unsigned normalized values. + */ + + assert(!z_src_type.sign); + assert(!z_src_type.fixed); + assert(z_src_type.norm); + assert(!z_type.floating); + if (z_src_type.width > z_width) { + LLVMValueRef shift = lp_build_const_int_vec(z_src_type, + z_src_type.width - z_width); + z_src = LLVMBuildLShr(builder, z_src, shift, ""); + } + } + assert(lp_check_value(z_type, z_src)); + + lp_build_name(z_src, "z_src"); + + if (z_mask != 0xffffffff) { + z_bitmask = lp_build_const_int_vec(z_type, z_mask); + } + + /* + * Align the framebuffer Z 's LSB to the right. + */ + if (z_shift) { + LLVMValueRef shift = lp_build_const_int_vec(z_type, z_shift); + z_dst = LLVMBuildLShr(builder, zs_dst, shift, "z_dst"); + } else if (z_bitmask) { + z_dst = LLVMBuildAnd(builder, zs_dst, z_bitmask, "z_dst"); + } else { + z_dst = zs_dst; + lp_build_name(z_dst, "z_dst"); + } + /* compare src Z to dst Z, returning 'pass' mask */ z_pass = lp_build_cmp(&z_bld, depth->func, z_src, z_dst); @@ -704,25 +678,20 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } if (depth->writemask) { - LLVMValueRef zselectmask = lp_build_mask_value(mask); + LLVMValueRef zselectmask; /* mask off bits that failed Z test */ - zselectmask = LLVMBuildAnd(builder, zselectmask, z_pass, ""); + zselectmask = LLVMBuildAnd(builder, orig_mask, z_pass, ""); /* mask off bits that failed stencil test */ if (s_pass_mask) { zselectmask = LLVMBuildAnd(builder, zselectmask, s_pass_mask, ""); } - /* if combined Z/stencil format, mask off the stencil bits */ - if (z_bitmask) { - zselectmask = LLVMBuildAnd(builder, zselectmask, z_bitmask, ""); - } - /* Mix the old and new Z buffer values. - * z_dst[i] = (zselectmask[i] & z_src[i]) | (~zselectmask[i] & z_dst[i]) + * z_dst[i] = zselectmask[i] ? z_src[i] : z_dst[i] */ - z_dst = lp_build_select_bitwise(&z_bld, zselectmask, z_src, z_dst); + z_dst = lp_build_select(&z_bld, zselectmask, z_src, z_dst); } if (stencil[0].enabled) { @@ -752,9 +721,11 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, s_pass_mask, front_facing); } - /* The Z bits are already in the right place but we may need to shift the - * stencil bits before ORing Z with Stencil to make the final pixel value. - */ + /* Put Z and ztencil bits in the right place */ + if (z_dst && z_shift) { + LLVMValueRef shift = lp_build_const_int_vec(z_type, z_shift); + z_dst = LLVMBuildShl(builder, z_dst, shift, ""); + } if (stencil_vals && stencil_shift) stencil_vals = LLVMBuildShl(s_bld.builder, stencil_vals, stencil_shift, ""); -- cgit v1.2.3 From 26dacce2c0b33a2a6aff77e6094c06e385e1a541 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 09:10:16 +1000 Subject: r600g: drop unused context members --- src/gallium/drivers/r600/r600_pipe.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 87317867696..47a1b3070e9 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -123,8 +123,6 @@ struct r600_pipe_context { struct pipe_stencil_ref stencil_ref; struct pipe_viewport_state viewport; struct pipe_clip_state clip; - unsigned vs_nconst; - unsigned ps_nconst; struct r600_pipe_state *vs_resource; struct r600_pipe_state *ps_resource; struct r600_pipe_state config; -- cgit v1.2.3 From a21a2748beb1f42d21e14858eee9a1323d85a00f Mon Sep 17 00:00:00 2001 From: Fredrik Höglund Date: Wed, 13 Oct 2010 17:49:15 +0200 Subject: r600g: Fix texture sampling with swizzled coords Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600_shader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 470f355cde2..4a9d9beaba5 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -1860,7 +1860,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) memset(&alu, 0, sizeof(struct r600_bc_alu)); alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV); alu.src[0].sel = src_gpr; - alu.src[0].chan = i; + alu.src[0].chan = tgsi_chan(&inst->Src[0], i); alu.dst.sel = ctx->temp_reg; alu.dst.chan = i; if (i == 3) -- cgit v1.2.3 From 8a9f02c5d503089bdcc90ff934f6269e59356d52 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 13:29:11 +1000 Subject: r600g: only pick centroid coordinate when asked. TGSI tells us when to use this, its not hooked up from GLSL to MESA to TGSI yet though. --- src/gallium/drivers/r600/r600_shader.c | 4 +++- src/gallium/drivers/r600/r600_shader.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 4a9d9beaba5..512cc4a32f4 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -115,7 +115,8 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade for (i = 0; i < rshader->ninput; i++) { tmp = S_028644_SEMANTIC(r600_find_vs_semantic_index(&rctx->vs_shader->shader, rshader, i)); - tmp |= S_028644_SEL_CENTROID(1); + if (rshader->input[i].centroid) + tmp |= S_028644_SEL_CENTROID(1); if (rshader->input[i].name == TGSI_SEMANTIC_POSITION) have_pos = TRUE; if (rshader->input[i].name == TGSI_SEMANTIC_COLOR || @@ -439,6 +440,7 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx) ctx->shader->input[i].name = d->Semantic.Name; ctx->shader->input[i].sid = d->Semantic.Index; ctx->shader->input[i].interpolate = d->Declaration.Interpolate; + ctx->shader->input[i].centroid = d->Declaration.Centroid; ctx->shader->input[i].gpr = ctx->file_offset[TGSI_FILE_INPUT] + i; if (ctx->type == TGSI_PROCESSOR_VERTEX) { /* turn input into fetch */ diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h index 6e2620f2012..a341cca0836 100644 --- a/src/gallium/drivers/r600/r600_shader.h +++ b/src/gallium/drivers/r600/r600_shader.h @@ -31,6 +31,7 @@ struct r600_shader_io { unsigned done; int sid; unsigned interpolate; + boolean centroid; }; struct r600_shader { -- cgit v1.2.3 From 1e82c28fcf76bf79ceb5a1eaf29b3d6d25909ddd Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 14:14:22 +1000 Subject: r600g: fixup pos/face ena/address properly --- src/gallium/drivers/r600/r600_shader.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 512cc4a32f4..42878a43f38 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -107,8 +107,8 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state *rstate = &shader->rstate; struct r600_shader *rshader = &shader->shader; - unsigned i, tmp, exports_ps, num_cout, spi_ps_in_control_0, spi_input_z; - boolean have_pos = FALSE, have_face = FALSE; + unsigned i, tmp, exports_ps, num_cout, spi_ps_in_control_0, spi_input_z, spi_ps_in_control_1; + int pos_index = -1, face_index = -1; /* clear previous register */ rstate->nregs = 0; @@ -118,14 +118,14 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade if (rshader->input[i].centroid) tmp |= S_028644_SEL_CENTROID(1); if (rshader->input[i].name == TGSI_SEMANTIC_POSITION) - have_pos = TRUE; + pos_index = i; if (rshader->input[i].name == TGSI_SEMANTIC_COLOR || rshader->input[i].name == TGSI_SEMANTIC_BCOLOR || rshader->input[i].name == TGSI_SEMANTIC_POSITION) { tmp |= S_028644_FLAT_SHADE(rshader->flat_shade); } if (rshader->input[i].name == TGSI_SEMANTIC_FACE) - have_face = TRUE; + face_index = i; if (rshader->input[i].name == TGSI_SEMANTIC_GENERIC && rctx->sprite_coord_enable & (1 << rshader->input[i].sid)) { tmp |= S_028644_PT_SPRITE_TEX(1); @@ -163,13 +163,22 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade spi_ps_in_control_0 = S_0286CC_NUM_INTERP(rshader->ninput) | S_0286CC_PERSP_GRADIENT_ENA(1); spi_input_z = 0; - if (have_pos) { - spi_ps_in_control_0 |= S_0286CC_POSITION_ENA(1) | - S_0286CC_BARYC_SAMPLE_CNTL(1); + if (pos_index != -1) { + spi_ps_in_control_0 |= (S_0286CC_POSITION_ENA(1) | + S_0286CC_POSITION_CENTROID(rshader->input[pos_index].centroid) | + S_0286CC_POSITION_ADDR(rshader->input[pos_index].gpr) | + S_0286CC_BARYC_SAMPLE_CNTL(1)); spi_input_z |= 1; } + + spi_ps_in_control_1 = 0; + if (face_index != -1) { + spi_ps_in_control_1 |= S_0286D0_FRONT_FACE_ENA(1) | + S_286D0_FRONT_FACE_ADDR(rshader->input[face_index].gpr); + } + r600_pipe_state_add_reg(rstate, R_0286CC_SPI_PS_IN_CONTROL_0, spi_ps_in_control_0, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, R_0286D0_SPI_PS_IN_CONTROL_1, S_0286D0_FRONT_FACE_ENA(have_face), 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_0286D0_SPI_PS_IN_CONTROL_1, spi_ps_in_control_1, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_0286D8_SPI_INPUT_Z, spi_input_z, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028840_SQ_PGM_START_PS, -- cgit v1.2.3 From 0637044add50b3a4aee8e915b84c18813c9130f3 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 14:19:37 +1000 Subject: r600g: fixup typo in macro name --- src/gallium/drivers/r600/r600_shader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 42878a43f38..d6f73cb7432 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -174,7 +174,7 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade spi_ps_in_control_1 = 0; if (face_index != -1) { spi_ps_in_control_1 |= S_0286D0_FRONT_FACE_ENA(1) | - S_286D0_FRONT_FACE_ADDR(rshader->input[face_index].gpr); + S_0286D0_FRONT_FACE_ADDR(rshader->input[face_index].gpr); } r600_pipe_state_add_reg(rstate, R_0286CC_SPI_PS_IN_CONTROL_0, spi_ps_in_control_0, 0xFFFFFFFF, NULL); -- cgit v1.2.3 From 68014c8d19559576d368e158932278df05fe659b Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 14:27:34 +1000 Subject: r600g: select linear interpolate if tgsi input requests it --- src/gallium/drivers/r600/r600_shader.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index d6f73cb7432..141adcc54be 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -117,6 +117,9 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade tmp = S_028644_SEMANTIC(r600_find_vs_semantic_index(&rctx->vs_shader->shader, rshader, i)); if (rshader->input[i].centroid) tmp |= S_028644_SEL_CENTROID(1); + if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR) + tmp |= S_028644_SEL_LINEAR(1); + if (rshader->input[i].name == TGSI_SEMANTIC_POSITION) pos_index = i; if (rshader->input[i].name == TGSI_SEMANTIC_COLOR || -- cgit v1.2.3 From c97c77d8698ddab1c8a2900fe7c82e1d111ccb8a Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 14 Oct 2010 17:06:21 +0800 Subject: st/egl: Access _EGLConfig directly. Drop the use of SET_CONFIG_ATTRIB. Fix the value of EGL_SAMPLE_BUFFERS along the way. --- src/gallium/state_trackers/egl/common/egl_g3d.c | 57 +++++++++++-------------- 1 file changed, 26 insertions(+), 31 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c b/src/gallium/state_trackers/egl/common/egl_g3d.c index bfbb431058b..aaa2ff6bb2f 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c @@ -194,53 +194,48 @@ init_config_attributes(_EGLConfig *conf, const struct native_config *nconf, if (nconf->buffer_mask & (1 << NATIVE_ATTACHMENT_BACK_LEFT)) surface_type |= EGL_PBUFFER_BIT; - SET_CONFIG_ATTRIB(conf, EGL_CONFORMANT, api_mask); - SET_CONFIG_ATTRIB(conf, EGL_RENDERABLE_TYPE, api_mask); + conf->Conformant = api_mask; + conf->RenderableType = api_mask; - SET_CONFIG_ATTRIB(conf, EGL_RED_SIZE, rgba[0]); - SET_CONFIG_ATTRIB(conf, EGL_GREEN_SIZE, rgba[1]); - SET_CONFIG_ATTRIB(conf, EGL_BLUE_SIZE, rgba[2]); - SET_CONFIG_ATTRIB(conf, EGL_ALPHA_SIZE, rgba[3]); - SET_CONFIG_ATTRIB(conf, EGL_BUFFER_SIZE, buffer_size); + conf->RedSize = rgba[0]; + conf->GreenSize = rgba[1]; + conf->BlueSize = rgba[2]; + conf->AlphaSize = rgba[3]; + conf->BufferSize = buffer_size; - SET_CONFIG_ATTRIB(conf, EGL_DEPTH_SIZE, depth_stencil[0]); - SET_CONFIG_ATTRIB(conf, EGL_STENCIL_SIZE, depth_stencil[1]); + conf->DepthSize = depth_stencil[0]; + conf->StencilSize = depth_stencil[1]; - SET_CONFIG_ATTRIB(conf, EGL_SURFACE_TYPE, surface_type); + conf->SurfaceType = surface_type; - SET_CONFIG_ATTRIB(conf, EGL_NATIVE_RENDERABLE, EGL_TRUE); + conf->NativeRenderable = EGL_TRUE; if (surface_type & EGL_WINDOW_BIT) { - SET_CONFIG_ATTRIB(conf, EGL_NATIVE_VISUAL_ID, nconf->native_visual_id); - SET_CONFIG_ATTRIB(conf, EGL_NATIVE_VISUAL_TYPE, - nconf->native_visual_type); + conf->NativeVisualID = nconf->native_visual_id; + conf->NativeVisualType = nconf->native_visual_type; } if (surface_type & EGL_PBUFFER_BIT) { - SET_CONFIG_ATTRIB(conf, EGL_BIND_TO_TEXTURE_RGB, EGL_TRUE); + conf->BindToTextureRGB = EGL_TRUE; if (rgba[3]) - SET_CONFIG_ATTRIB(conf, EGL_BIND_TO_TEXTURE_RGBA, EGL_TRUE); + conf->BindToTextureRGBA = EGL_TRUE; - SET_CONFIG_ATTRIB(conf, EGL_MAX_PBUFFER_WIDTH, 4096); - SET_CONFIG_ATTRIB(conf, EGL_MAX_PBUFFER_HEIGHT, 4096); - SET_CONFIG_ATTRIB(conf, EGL_MAX_PBUFFER_PIXELS, 4096 * 4096); + conf->MaxPbufferWidth = 4096; + conf->MaxPbufferHeight = 4096; + conf->MaxPbufferPixels = 4096 * 4096; } - SET_CONFIG_ATTRIB(conf, EGL_LEVEL, nconf->level); - SET_CONFIG_ATTRIB(conf, EGL_SAMPLES, nconf->samples); - SET_CONFIG_ATTRIB(conf, EGL_SAMPLE_BUFFERS, 1); + conf->Level = nconf->level; + conf->Samples = nconf->samples; + conf->SampleBuffers = 0; if (nconf->slow_config) - SET_CONFIG_ATTRIB(conf, EGL_CONFIG_CAVEAT, EGL_SLOW_CONFIG); + conf->ConfigCaveat = EGL_SLOW_CONFIG; if (nconf->transparent_rgb) { - rgba[0] = nconf->transparent_rgb_values[0]; - rgba[1] = nconf->transparent_rgb_values[1]; - rgba[2] = nconf->transparent_rgb_values[2]; - - SET_CONFIG_ATTRIB(conf, EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RGB); - SET_CONFIG_ATTRIB(conf, EGL_TRANSPARENT_RED_VALUE, rgba[0]); - SET_CONFIG_ATTRIB(conf, EGL_TRANSPARENT_GREEN_VALUE, rgba[1]); - SET_CONFIG_ATTRIB(conf, EGL_TRANSPARENT_BLUE_VALUE, rgba[2]); + conf->TransparentType = EGL_TRANSPARENT_RGB; + conf->TransparentRedValue = nconf->transparent_rgb_values[0]; + conf->TransparentGreenValue = nconf->transparent_rgb_values[1]; + conf->TransparentBlueValue = nconf->transparent_rgb_values[2]; } return _eglValidateConfig(conf, EGL_FALSE); -- cgit v1.2.3 From d6de1f44a0cdcc739d3b319b5f102e1733e5b4e3 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 14 Oct 2010 17:13:36 +0800 Subject: st/egl: Do not finish a fence that is NULL. i915g would dereference the NULL pointer. --- src/gallium/state_trackers/egl/common/egl_g3d_api.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c b/src/gallium/state_trackers/egl/common/egl_g3d_api.c index c0164daf9c1..3bde39737ba 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c @@ -609,8 +609,10 @@ egl_g3d_wait_client(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx) gctx->stctxi->flush(gctx->stctxi, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, &fence); - screen->fence_finish(screen, fence, 0); - screen->fence_reference(screen, &fence, NULL); + if (fence) { + screen->fence_finish(screen, fence, 0); + screen->fence_reference(screen, &fence, NULL); + } return EGL_TRUE; } -- cgit v1.2.3 From f0bd76f28d17da6eabf977a7e619e4ff943a70c7 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 14 Oct 2010 13:15:28 +0100 Subject: llvmpipe: don't try to emit non-existent color outputs --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index c09835635dd..6e3c27e78e9 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -406,14 +406,15 @@ generate_fs(struct llvmpipe_context *lp, if (shader->info.base.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR) { unsigned cbuf = shader->info.base.output_semantic_index[attrib]; - for(chan = 0; chan < NUM_CHANNELS; ++chan) - { - /* XXX: just initialize outputs to point at colors[] and - * skip this. - */ - LLVMValueRef out = LLVMBuildLoad(builder, outputs[attrib][chan], ""); - lp_build_name(out, "color%u.%u.%c", i, attrib, "rgba"[chan]); - LLVMBuildStore(builder, out, color[cbuf][chan]); + for(chan = 0; chan < NUM_CHANNELS; ++chan) { + if(outputs[attrib][chan]) { + /* XXX: just initialize outputs to point at colors[] and + * skip this. + */ + LLVMValueRef out = LLVMBuildLoad(builder, outputs[attrib][chan], ""); + lp_build_name(out, "color%u.%u.%c", i, attrib, "rgba"[chan]); + LLVMBuildStore(builder, out, color[cbuf][chan]); + } } } } -- cgit v1.2.3 From 26ff7523b69ddb377ade29296d20abfc46e69489 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Thu, 14 Oct 2010 14:04:39 +0100 Subject: draw: sanitize llvm variant key Fixes recompilation, but seems to be broken with llvm 2.8. --- src/gallium/auxiliary/draw/draw_llvm.c | 1 + src/gallium/auxiliary/draw/draw_llvm.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 5f11b82bb99..1c18d907434 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -1430,6 +1430,7 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store) key->enable_d3dclipping = (boolean)!llvm->draw->rasterizer->gl_rasterization_rules; key->need_edgeflags = (llvm->draw->vs.edgeflag_output ? TRUE : FALSE); key->nr_planes = llvm->draw->nr_planes; + key->pad = 0; /* All variants of this shader will have the same value for * nr_samplers. Not yet trying to compact away holes in the diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index fc7885499ef..def068179fd 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -168,7 +168,8 @@ struct draw_llvm_variant_key unsigned bypass_viewport:1; unsigned enable_d3dclipping:1; unsigned need_edgeflags:1; - unsigned nr_planes; + unsigned nr_planes:4; + unsigned pad:26; /* Variable number of vertex elements: */ -- cgit v1.2.3 From cbf2fb55432b8239ea9792338ee1d2fea89648ea Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 14 Oct 2010 16:42:38 +0100 Subject: r600/drm: fix segfaults in winsys create failure path Would try to destroy radeon->cman, radeon->kman both which were still NULL. Signed-off-by: Dave Airlie --- src/gallium/winsys/r600/drm/r600_drm.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/r600_drm.c b/src/gallium/winsys/r600/drm/r600_drm.c index 5f175a4df98..4916843fd6d 100644 --- a/src/gallium/winsys/r600/drm/r600_drm.c +++ b/src/gallium/winsys/r600/drm/r600_drm.c @@ -179,9 +179,15 @@ struct radeon *radeon_decref(struct radeon *radeon) return NULL; } - radeon->cman->destroy(radeon->cman); - radeon->kman->destroy(radeon->kman); - drmClose(radeon->fd); + if (radeon->cman) + radeon->cman->destroy(radeon->cman); + + if (radeon->kman) + radeon->kman->destroy(radeon->kman); + + if (radeon->fd >= 0) + drmClose(radeon->fd); + free(radeon); return NULL; } -- cgit v1.2.3 From c28f7645722ed3da1a04d3187f9cfa5d8e5e489d Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 14 Oct 2010 16:42:39 +0100 Subject: r600g: emit hardware linewidth Tested with demos/pixeltest - line rasterization doesn't seem to be set up for GL conventions yet, but at least width is respected now. Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600_state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 7b0aaef770f..2c0a2005cf7 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -499,7 +499,10 @@ static void *r600_create_rs_state(struct pipe_context *ctx, tmp = (unsigned)(state->point_size * 8.0); r600_pipe_state_add_reg(rstate, R_028A00_PA_SU_POINT_SIZE, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX, 0x80000000, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, 0x00000008, 0xFFFFFFFF, NULL); + + tmp = (unsigned)(state->line_width * 8.0); + r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp), 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_028A0C_PA_SC_LINE_STIPPLE, 0x00000005, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028A48_PA_SC_MPASS_PS_CNTL, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C00_PA_SC_LINE_CNTL, 0x00000400, 0xFFFFFFFF, NULL); -- cgit v1.2.3 From 8260ab93461eca3e18f9c17a9ca1961a11372071 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 14 Oct 2010 17:19:00 +0100 Subject: r600g: handle absolute modifier in shader translator This was being classed as unsupported in one place but used in others. Enabling it seems to work fine. Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600_shader.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 141adcc54be..b53d4780719 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -389,11 +389,9 @@ static int tgsi_is_supported(struct r600_shader_ctx *ctx) } #endif for (j = 0; j < i->Instruction.NumSrcRegs; j++) { - if (i->Src[j].Register.Dimension || - i->Src[j].Register.Absolute) { - R600_ERR("unsupported src %d (dimension %d|absolute %d)\n", j, - i->Src[j].Register.Dimension, - i->Src[j].Register.Absolute); + if (i->Src[j].Register.Dimension) { + R600_ERR("unsupported src %d (dimension %d)\n", j, + i->Src[j].Register.Dimension); return -EINVAL; } } @@ -760,6 +758,7 @@ static int tgsi_src(struct r600_shader_ctx *ctx, if (tgsi_src->Register.Indirect) r600_src->rel = V_SQ_REL_RELATIVE; r600_src->neg = tgsi_src->Register.Negate; + r600_src->abs = tgsi_src->Register.Absolute; r600_src->sel += ctx->file_offset[tgsi_src->Register.File]; return 0; } -- cgit v1.2.3 From 510c503762a228db2b3d6804f5f5c7af9be1a920 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 15 Oct 2010 08:46:16 +1000 Subject: r300g: clean up warning due to unknown cap. --- src/gallium/drivers/r300/r300_screen.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index 7f41ff0e2ec..b448924f85e 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -124,6 +124,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_INDEP_BLEND_FUNC: case PIPE_CAP_DEPTH_CLAMP: /* XXX implemented, but breaks Regnum Online */ case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: + case PIPE_CAP_SHADER_STENCIL_EXPORT: return 0; /* Texturing. */ -- cgit v1.2.3 From 62450b3c490e3f16aa18135d5b1767911861ae4a Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 14 Oct 2010 16:21:32 -0600 Subject: gallivm: add compile-time option to emit inst addrs and/or line numbers Disabling address printing is helpful for diffing. --- src/gallium/auxiliary/gallivm/lp_bld_debug.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.c b/src/gallium/auxiliary/gallivm/lp_bld_debug.c index 8c1df0d8e30..93e56553d7b 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.c @@ -57,6 +57,8 @@ lp_disassemble(const void* func) #ifdef HAVE_UDIS86 ud_t ud_obj; uint64_t max_jmp_pc; + uint inst_no; + boolean emit_addrs = TRUE, emit_line_nos = FALSE; ud_init(&ud_obj); @@ -76,13 +78,18 @@ lp_disassemble(const void* func) while (ud_disassemble(&ud_obj)) { + if (emit_addrs) { #ifdef PIPE_ARCH_X86 - debug_printf("0x%08lx:\t", (unsigned long)ud_insn_off(&ud_obj)); + debug_printf("0x%08lx:\t", (unsigned long)ud_insn_off(&ud_obj)); #endif #ifdef PIPE_ARCH_X86_64 - debug_printf("0x%016llx:\t", (unsigned long long)ud_insn_off(&ud_obj)); + debug_printf("0x%016llx:\t", (unsigned long long)ud_insn_off(&ud_obj)); #endif - + } + else if (emit_line_nos) { + debug_printf("%6d:\t", inst_no); + inst_no++; + } #if 0 debug_printf("%-16s ", ud_insn_hex(&ud_obj)); #endif -- cgit v1.2.3 From 3d7479d70568c84354338d0da0b7bed4d296c169 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 14 Oct 2010 16:31:54 -0600 Subject: llvmpipe: code to dump bytecode to file (disabled) --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 6e3c27e78e9..d2fbe277083 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -99,6 +99,7 @@ #include +#include static unsigned fs_no = 0; @@ -778,6 +779,11 @@ generate_fragment(struct llvmpipe_context *lp, debug_printf("\n"); } + /* Dump byte code to a file */ + if (0) { + LLVMWriteBitcodeToFile(lp_build_module, "llvmpipe.bc"); + } + /* * Translate the LLVM IR into machine code. */ -- cgit v1.2.3 From 07a30e3d18a528a2dc8a247af5c43e7428be1743 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 14:40:24 +1000 Subject: tgsi: add scanner support for centroid inputs --- src/gallium/auxiliary/tgsi/tgsi_scan.c | 1 + src/gallium/auxiliary/tgsi/tgsi_scan.h | 1 + 2 files changed, 2 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c index 538274887b9..6585da3e838 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.c +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c @@ -147,6 +147,7 @@ tgsi_scan_shader(const struct tgsi_token *tokens, info->input_semantic_name[reg] = (ubyte)fulldecl->Semantic.Name; info->input_semantic_index[reg] = (ubyte)fulldecl->Semantic.Index; info->input_interpolate[reg] = (ubyte)fulldecl->Declaration.Interpolate; + info->input_centroid[reg] = (ubyte)fulldecl->Declaration.Centroid; info->input_cylindrical_wrap[reg] = (ubyte)fulldecl->Declaration.CylindricalWrap; info->num_inputs++; } diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h index 374c7ed551d..104097fbc03 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.h +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h @@ -45,6 +45,7 @@ struct tgsi_shader_info ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS]; /**< TGSI_SEMANTIC_x */ ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS]; ubyte input_interpolate[PIPE_MAX_SHADER_INPUTS]; + ubyte input_centroid[PIPE_MAX_SHADER_INPUTS]; ubyte input_usage_mask[PIPE_MAX_SHADER_INPUTS]; ubyte input_cylindrical_wrap[PIPE_MAX_SHADER_INPUTS]; ubyte output_semantic_name[PIPE_MAX_SHADER_OUTPUTS]; /**< TGSI_SEMANTIC_x */ -- cgit v1.2.3 From fc6caef4cb67fb13642c5ebccee53019d1764df6 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 14:40:51 +1000 Subject: r600g: evergreen interpolation support. On evergreen, interpolation has moved into the fragment shader, with the interpolation parmaters being passed via GPRs and LDS entries. This works out the number of interps required and reserves GPR/LDS storage for them, it also correctly routes face/position values which aren't interpolated from the vertex shader. Also if we noticed nothing is to be interpolated we always setup perspective interpolation for one value otherwise the GPU appears to lockup. This fixes about 15 piglit tests on evergreen. --- src/gallium/drivers/r600/evergreen_state.c | 74 ++++++++++++++++++----- src/gallium/drivers/r600/r600_shader.c | 95 ++++++++++++++++++++++++++++-- src/gallium/drivers/r600/r600_shader.h | 2 + 3 files changed, 149 insertions(+), 22 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 542df11db66..935496c04af 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -1529,23 +1529,39 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state *rstate = &shader->rstate; struct r600_shader *rshader = &shader->shader; - unsigned i, tmp, exports_ps, num_cout, spi_ps_in_control_0, spi_input_z; - boolean have_pos = FALSE, have_face = FALSE; + unsigned i, tmp, exports_ps, num_cout, spi_ps_in_control_0, spi_input_z, spi_ps_in_control_1; + int pos_index = -1, face_index = -1; + int ninterp = 0; + boolean have_linear = FALSE, have_centroid = FALSE, have_perspective = FALSE; + unsigned spi_baryc_cntl; /* clear previous register */ rstate->nregs = 0; for (i = 0; i < rshader->ninput; i++) { tmp = S_028644_SEMANTIC(r600_find_vs_semantic_index(&rctx->vs_shader->shader, rshader, i)); + /* evergreen NUM_INTERP only contains values interpolated into the LDS, + POSITION goes via GPRs from the SC so isn't counted */ if (rshader->input[i].name == TGSI_SEMANTIC_POSITION) - have_pos = TRUE; + pos_index = i; + else if (rshader->input[i].name == TGSI_SEMANTIC_FACE) + face_index = i; + else { + if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR || + rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE) + ninterp++; + if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR) + have_linear = TRUE; + if (rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE) + have_perspective = TRUE; + if (rshader->input[i].centroid) + have_centroid = TRUE; + } if (rshader->input[i].name == TGSI_SEMANTIC_COLOR || rshader->input[i].name == TGSI_SEMANTIC_BCOLOR || rshader->input[i].name == TGSI_SEMANTIC_POSITION) { tmp |= S_028644_FLAT_SHADE(rshader->flat_shade); } - if (rshader->input[i].name == TGSI_SEMANTIC_FACE) - have_face = TRUE; if (rshader->input[i].name == TGSI_SEMANTIC_GENERIC && rctx->sprite_coord_enable & (1 << rshader->input[i].sid)) { tmp |= S_028644_PT_SPRITE_TEX(1); @@ -1568,7 +1584,8 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader exports_ps = 0; num_cout = 0; for (i = 0; i < rshader->noutput; i++) { - if (rshader->output[i].name == TGSI_SEMANTIC_POSITION || rshader->output[i].name == TGSI_SEMANTIC_STENCIL) + if (rshader->output[i].name == TGSI_SEMANTIC_POSITION || + rshader->output[i].name == TGSI_SEMANTIC_STENCIL) exports_ps |= 1; else if (rshader->output[i].name == TGSI_SEMANTIC_COLOR) { num_cout++; @@ -1580,18 +1597,48 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader exports_ps = 2; } - spi_ps_in_control_0 = S_0286CC_NUM_INTERP(rshader->ninput) | - S_0286CC_PERSP_GRADIENT_ENA(1); + if (ninterp == 0) { + ninterp = 1; + have_perspective = TRUE; + } + + spi_ps_in_control_0 = S_0286CC_NUM_INTERP(ninterp) | + S_0286CC_PERSP_GRADIENT_ENA(have_perspective) | + S_0286CC_LINEAR_GRADIENT_ENA(have_linear); spi_input_z = 0; - if (have_pos) { - spi_ps_in_control_0 |= S_0286CC_POSITION_ENA(1); + if (pos_index != -1) { + spi_ps_in_control_0 |= S_0286CC_POSITION_ENA(1) | + S_0286CC_POSITION_CENTROID(rshader->input[pos_index].centroid) | + S_0286CC_POSITION_ADDR(rshader->input[pos_index].gpr); spi_input_z |= 1; } + + spi_ps_in_control_1 = 0; + if (face_index != -1) { + spi_ps_in_control_1 |= S_0286D0_FRONT_FACE_ENA(1) | + S_0286D0_FRONT_FACE_ADDR(rshader->input[face_index].gpr); + } + + spi_baryc_cntl = 0; + if (have_perspective) + spi_baryc_cntl |= S_0286E0_PERSP_CENTER_ENA(1) | + S_0286E0_PERSP_CENTROID_ENA(have_centroid); + if (have_linear) + spi_baryc_cntl |= S_0286E0_LINEAR_CENTER_ENA(1) | + S_0286E0_LINEAR_CENTROID_ENA(have_centroid); + r600_pipe_state_add_reg(rstate, R_0286CC_SPI_PS_IN_CONTROL_0, spi_ps_in_control_0, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_0286D0_SPI_PS_IN_CONTROL_1, - S_0286D0_FRONT_FACE_ENA(have_face), 0xFFFFFFFF, NULL); + spi_ps_in_control_1, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_0286E4_SPI_PS_IN_CONTROL_2, + 0, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_0286D8_SPI_INPUT_Z, spi_input_z, 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, + R_0286E0_SPI_BARYC_CNTL, + spi_baryc_cntl, + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_028840_SQ_PGM_START_PS, (r600_bo_offset(shader->bo)) >> 8, 0xFFFFFFFF, shader->bo); @@ -1607,11 +1654,6 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader r600_pipe_state_add_reg(rstate, R_02884C_SQ_PGM_EXPORTS_PS, exports_ps, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, - R_0286E0_SPI_BARYC_CNTL, - S_0286E0_PERSP_CENTROID_ENA(1) | - S_0286E0_LINEAR_CENTROID_ENA(1), - 0xFFFFFFFF, NULL); if (rshader->uses_kill) { /* only set some bits here, the other bits are set in the dsa state */ diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index b53d4780719..94c9cbd9234 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -357,6 +357,11 @@ struct r600_shader_ctx { u32 *literals; u32 nliterals; u32 max_driver_temp_used; + /* needed for evergreen interpolation */ + boolean input_centroid; + boolean input_linear; + boolean input_perspective; + int num_interp_gpr; }; struct r600_shader_tgsi_instruction { @@ -404,10 +409,33 @@ static int tgsi_is_supported(struct r600_shader_ctx *ctx) return 0; } -static int evergreen_interp_alu(struct r600_shader_ctx *ctx, int gpr) +static int evergreen_interp_alu(struct r600_shader_ctx *ctx, int input) { int i, r; struct r600_bc_alu alu; + int gpr = 0, base_chan = 0; + int ij_index = 0; + + if (ctx->shader->input[input].interpolate == TGSI_INTERPOLATE_PERSPECTIVE) { + ij_index = 0; + if (ctx->shader->input[input].centroid) + ij_index++; + } else if (ctx->shader->input[input].interpolate == TGSI_INTERPOLATE_LINEAR) { + ij_index = 0; + /* if we have perspective add one */ + if (ctx->input_perspective) { + ij_index++; + /* if we have perspective centroid */ + if (ctx->input_centroid) + ij_index++; + } + if (ctx->shader->input[input].centroid) + ij_index++; + } + + /* work out gpr and base_chan from index */ + gpr = ij_index / 2; + base_chan = (2 * (ij_index % 2)) + 1; for (i = 0; i < 8; i++) { memset(&alu, 0, sizeof(struct r600_bc_alu)); @@ -418,13 +446,16 @@ static int evergreen_interp_alu(struct r600_shader_ctx *ctx, int gpr) alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INTERP_XY; if ((i > 1) && (i < 6)) { - alu.dst.sel = ctx->shader->input[gpr].gpr; + alu.dst.sel = ctx->shader->input[input].gpr; alu.dst.write = 1; } alu.dst.chan = i % 4; - alu.src[0].chan = (1 - (i % 2)); - alu.src[1].sel = V_SQ_ALU_SRC_PARAM_BASE + gpr; + + alu.src[0].sel = gpr; + alu.src[0].chan = (base_chan - (i % 2)); + + alu.src[1].sel = V_SQ_ALU_SRC_PARAM_BASE + ctx->shader->input[input].lds_pos; alu.bank_swizzle_force = SQ_ALU_VEC_210; if ((i % 4) == 3) @@ -474,7 +505,12 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx) } if (ctx->type == TGSI_PROCESSOR_FRAGMENT && ctx->bc->chiprev == 2) { /* turn input into interpolate on EG */ - evergreen_interp_alu(ctx, i); + if (ctx->shader->input[i].name != TGSI_SEMANTIC_POSITION) { + if (ctx->shader->input[i].interpolate > 0) { + ctx->shader->input[i].lds_pos = ctx->shader->nlds++; + evergreen_interp_alu(ctx, i); + } + } } break; case TGSI_FILE_OUTPUT: @@ -501,6 +537,53 @@ static int r600_get_temp(struct r600_shader_ctx *ctx) return ctx->temp_reg + ctx->max_driver_temp_used++; } +/* + * for evergreen we need to scan the shader to find the number of GPRs we need to + * reserve for interpolation. + * + * we need to know if we are going to emit + * any centroid inputs + * if perspective and linear are required +*/ +static int evergreen_gpr_count(struct r600_shader_ctx *ctx) +{ + int i; + int num_baryc; + + ctx->input_linear = FALSE; + ctx->input_perspective = FALSE; + ctx->input_centroid = FALSE; + ctx->num_interp_gpr = 1; + + /* any centroid inputs */ + for (i = 0; i < ctx->info.num_inputs; i++) { + /* skip position/face */ + if (ctx->info.input_semantic_name[i] == TGSI_SEMANTIC_POSITION || + ctx->info.input_semantic_name[i] == TGSI_SEMANTIC_FACE) + continue; + if (ctx->info.input_interpolate[i] == TGSI_INTERPOLATE_LINEAR) + ctx->input_linear = TRUE; + if (ctx->info.input_interpolate[i] == TGSI_INTERPOLATE_PERSPECTIVE) + ctx->input_perspective = TRUE; + if (ctx->info.input_centroid[i]) + ctx->input_centroid = TRUE; + } + + num_baryc = 0; + /* ignoring sample for now */ + if (ctx->input_perspective) + num_baryc++; + if (ctx->input_linear) + num_baryc++; + if (ctx->input_centroid) + num_baryc *= 2; + + ctx->num_interp_gpr += (num_baryc + 1) >> 1; + + /* TODO PULL MODEL and LINE STIPPLE, FIXED PT POS */ + return ctx->num_interp_gpr; +} + int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *shader) { struct tgsi_full_immediate *immediate; @@ -547,7 +630,7 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s ctx.file_offset[TGSI_FILE_INPUT] = 1; } if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chiprev == 2) { - ctx.file_offset[TGSI_FILE_INPUT] = 1; + ctx.file_offset[TGSI_FILE_INPUT] = evergreen_gpr_count(&ctx); } ctx.file_offset[TGSI_FILE_OUTPUT] = ctx.file_offset[TGSI_FILE_INPUT] + ctx.info.file_count[TGSI_FILE_INPUT]; diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h index a341cca0836..f8bc5951395 100644 --- a/src/gallium/drivers/r600/r600_shader.h +++ b/src/gallium/drivers/r600/r600_shader.h @@ -32,6 +32,7 @@ struct r600_shader_io { int sid; unsigned interpolate; boolean centroid; + unsigned lds_pos; /* for evergreen */ }; struct r600_shader { @@ -40,6 +41,7 @@ struct r600_shader { boolean flat_shade; unsigned ninput; unsigned noutput; + unsigned nlds; struct r600_shader_io input[32]; struct r600_shader_io output[32]; enum radeon_family family; -- cgit v1.2.3 From 4195febeecd2d2f5571afdb90cbb185a4759f50a Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 14 Oct 2010 23:28:10 +0100 Subject: llvmpipe: reintroduce SET_STATE binner command But bin lazily only into bins which are receiving geometry. --- src/gallium/drivers/llvmpipe/lp_rast.c | 13 +++++-- src/gallium/drivers/llvmpipe/lp_rast.h | 6 ++-- src/gallium/drivers/llvmpipe/lp_rast_debug.c | 35 +++++++++++------- src/gallium/drivers/llvmpipe/lp_rast_priv.h | 7 +++- src/gallium/drivers/llvmpipe/lp_scene.c | 4 ++- src/gallium/drivers/llvmpipe/lp_scene.h | 28 ++++++++++++++- src/gallium/drivers/llvmpipe/lp_setup_line.c | 1 - src/gallium/drivers/llvmpipe/lp_setup_point.c | 1 - src/gallium/drivers/llvmpipe/lp_setup_tri.c | 51 +++++++++++++++------------ 9 files changed, 100 insertions(+), 46 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index db9b2f9b128..35e2f731e89 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -334,7 +334,7 @@ lp_rast_shade_tile(struct lp_rasterizer_task *task, { const struct lp_scene *scene = task->scene; const struct lp_rast_shader_inputs *inputs = arg.shade_tile; - const struct lp_rast_state *state = inputs->state; + const struct lp_rast_state *state = task->state; struct lp_fragment_shader_variant *variant = state->variant; const unsigned tile_x = task->x, tile_y = task->y; unsigned x, y; @@ -414,7 +414,7 @@ lp_rast_shade_quads_mask(struct lp_rasterizer_task *task, unsigned x, unsigned y, unsigned mask) { - const struct lp_rast_state *state = inputs->state; + const struct lp_rast_state *state = task->state; struct lp_fragment_shader_variant *variant = state->variant; const struct lp_scene *scene = task->scene; uint8_t *color[PIPE_MAX_COLOR_BUFS]; @@ -490,6 +490,14 @@ lp_rast_end_query(struct lp_rasterizer_task *task, } +void +lp_rast_set_state(struct lp_rasterizer_task *task, + const union lp_rast_cmd_arg arg) +{ + task->state = arg.state; +} + + /** * Set top row and left column of the tile's pixels to white. For debugging. @@ -602,6 +610,7 @@ static lp_rast_cmd_func dispatch[LP_RAST_OP_MAX] = lp_rast_shade_tile_opaque, lp_rast_begin_query, lp_rast_end_query, + lp_rast_set_state, }; diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h index e2bcc450168..f74b198a66c 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.h +++ b/src/gallium/drivers/llvmpipe/lp_rast.h @@ -85,8 +85,6 @@ struct lp_rast_shader_inputs { float (*a0)[4]; float (*dadx)[4]; float (*dady)[4]; - - const struct lp_rast_state *state; }; /* Note: the order of these values is important as they are loaded by @@ -154,6 +152,7 @@ union lp_rast_cmd_arg { uint32_t value; uint32_t mask; } clear_zstencil; + const struct lp_rast_state *state; struct lp_fence *fence; struct llvmpipe_query *query_obj; }; @@ -245,8 +244,9 @@ lp_rast_arg_null( void ) #define LP_RAST_OP_SHADE_TILE_OPAQUE 0xe #define LP_RAST_OP_BEGIN_QUERY 0xf #define LP_RAST_OP_END_QUERY 0x10 +#define LP_RAST_OP_SET_STATE 0x11 -#define LP_RAST_OP_MAX 0x11 +#define LP_RAST_OP_MAX 0x12 #define LP_RAST_OP_MASK 0xff void diff --git a/src/gallium/drivers/llvmpipe/lp_rast_debug.c b/src/gallium/drivers/llvmpipe/lp_rast_debug.c index 6f4ba1c6fef..3113e196c40 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_debug.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_debug.c @@ -12,6 +12,7 @@ static INLINE int u_bit_scan(unsigned *mask) struct tile { int coverage; int overdraw; + const struct lp_rast_state *state; char data[TILE_SIZE][TILE_SIZE]; }; @@ -47,6 +48,7 @@ static const char *cmd_names[LP_RAST_OP_MAX] = "shade_tile_opaque", "begin_query", "end_query", + "set_state", }; static const char *cmd_name(unsigned cmd) @@ -56,31 +58,31 @@ static const char *cmd_name(unsigned cmd) } static const struct lp_fragment_shader_variant * -get_variant( const struct cmd_block *block, - int k ) +get_variant( const struct lp_rast_state *state, + const struct cmd_block *block, + int k ) { if (block->cmd[k] == LP_RAST_OP_SHADE_TILE || - block->cmd[k] == LP_RAST_OP_SHADE_TILE_OPAQUE) - return block->arg[k].shade_tile->state->variant; - - if (block->cmd[k] == LP_RAST_OP_TRIANGLE_1 || + block->cmd[k] == LP_RAST_OP_SHADE_TILE_OPAQUE || + block->cmd[k] == LP_RAST_OP_TRIANGLE_1 || block->cmd[k] == LP_RAST_OP_TRIANGLE_2 || block->cmd[k] == LP_RAST_OP_TRIANGLE_3 || block->cmd[k] == LP_RAST_OP_TRIANGLE_4 || block->cmd[k] == LP_RAST_OP_TRIANGLE_5 || block->cmd[k] == LP_RAST_OP_TRIANGLE_6 || block->cmd[k] == LP_RAST_OP_TRIANGLE_7) - return block->arg[k].triangle.tri->inputs.state->variant; + return state->variant; return NULL; } static boolean -is_blend( const struct cmd_block *block, +is_blend( const struct lp_rast_state *state, + const struct cmd_block *block, int k ) { - const struct lp_fragment_shader_variant *variant = get_variant(block, k); + const struct lp_fragment_shader_variant *variant = get_variant(state, block, k); if (variant) return variant->key.blend.rt[0].blend_enable; @@ -93,6 +95,7 @@ is_blend( const struct cmd_block *block, static void debug_bin( const struct cmd_bin *bin ) { + const struct lp_rast_state *state; const struct cmd_block *head = bin->head; int i, j = 0; @@ -100,9 +103,12 @@ debug_bin( const struct cmd_bin *bin ) while (head) { for (i = 0; i < head->count; i++, j++) { + if (head->cmd[i] == LP_RAST_OP_SET_STATE) + state = head->arg[i].state; + debug_printf("%d: %s %s\n", j, cmd_name(head->cmd[i]), - is_blend(head, i) ? "blended" : ""); + is_blend(state, head, i) ? "blended" : ""); } head = head->next; } @@ -134,7 +140,7 @@ debug_shade_tile(int x, int y, char val) { const struct lp_rast_shader_inputs *inputs = arg.shade_tile; - boolean blend = inputs->state->variant->key.blend.rt[0].blend_enable; + boolean blend = tile->state->variant->key.blend.rt[0].blend_enable; unsigned i,j; if (inputs->disable) @@ -176,7 +182,7 @@ debug_triangle(int tilex, int tiley, int x, y; int count = 0; unsigned i, nr_planes = 0; - boolean blend = tri->inputs.state->variant->key.blend.rt[0].blend_enable; + boolean blend = tile->state->variant->key.blend.rt[0].blend_enable; if (tri->inputs.disable) { /* This triangle was partially binned and has been disabled */ @@ -236,12 +242,15 @@ do_debug_bin( struct tile *tile, for (block = bin->head; block; block = block->next) { for (k = 0; k < block->count; k++, j++) { - boolean blend = is_blend(block, k); + boolean blend = is_blend(tile->state, block, k); char val = get_label(j); int count = 0; if (print_cmds) debug_printf("%c: %15s", val, cmd_name(block->cmd[k])); + + if (block->cmd[k] == LP_RAST_OP_SET_STATE) + tile->state = block->arg[k].state; if (block->cmd[k] == LP_RAST_OP_CLEAR_COLOR || block->cmd[k] == LP_RAST_OP_CLEAR_ZSTENCIL) diff --git a/src/gallium/drivers/llvmpipe/lp_rast_priv.h b/src/gallium/drivers/llvmpipe/lp_rast_priv.h index 104000a040c..7ffd735def2 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_priv.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_priv.h @@ -77,6 +77,7 @@ struct cmd_bin; struct lp_rasterizer_task { const struct cmd_bin *bin; + const struct lp_rast_state *state; struct lp_scene *scene; unsigned x, y; /**< Pos of this tile in framebuffer, in pixels */ @@ -244,7 +245,7 @@ lp_rast_shade_quads_all( struct lp_rasterizer_task *task, unsigned x, unsigned y ) { const struct lp_scene *scene = task->scene; - const struct lp_rast_state *state = inputs->state; + const struct lp_rast_state *state = task->state; struct lp_fragment_shader_variant *variant = state->variant; uint8_t *color[PIPE_MAX_COLOR_BUFS]; void *depth; @@ -297,6 +298,10 @@ void lp_rast_triangle_3_16( struct lp_rasterizer_task *, void lp_rast_triangle_4_16( struct lp_rasterizer_task *, const union lp_rast_cmd_arg ); +void +lp_rast_set_state(struct lp_rasterizer_task *task, + const union lp_rast_cmd_arg arg); + void lp_debug_bin( const struct cmd_bin *bin ); diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c index 8b504f23a33..a4fdf7cff36 100644 --- a/src/gallium/drivers/llvmpipe/lp_scene.c +++ b/src/gallium/drivers/llvmpipe/lp_scene.c @@ -203,7 +203,9 @@ lp_scene_end_rasterization(struct lp_scene *scene ) for (i = 0; i < scene->tiles_x; i++) { for (j = 0; j < scene->tiles_y; j++) { struct cmd_bin *bin = lp_scene_get_bin(scene, i, j); - bin->head = bin->tail = NULL; + bin->head = NULL; + bin->tail = NULL; + bin->last_state = NULL; } } diff --git a/src/gallium/drivers/llvmpipe/lp_scene.h b/src/gallium/drivers/llvmpipe/lp_scene.h index dbef7692e42..622c522f11a 100644 --- a/src/gallium/drivers/llvmpipe/lp_scene.h +++ b/src/gallium/drivers/llvmpipe/lp_scene.h @@ -41,6 +41,7 @@ #include "lp_debug.h" struct lp_scene_queue; +struct lp_rast_state; /* We're limited to 2K by 2K for 32bit fixed point rasterization. * Will need a 64-bit version for larger framebuffers. @@ -94,6 +95,7 @@ struct data_block { struct cmd_bin { ushort x; ushort y; + const struct lp_rast_state *last_state; /* most recent state set in bin */ struct cmd_block *head; struct cmd_block *tail; }; @@ -297,7 +299,7 @@ lp_scene_bin_command( struct lp_scene *scene, assert(x < scene->tiles_x); assert(y < scene->tiles_y); - assert(cmd <= LP_RAST_OP_END_QUERY); + assert(cmd < LP_RAST_OP_MAX); if (tail == NULL || tail->count == CMD_BLOCK_MAX) { tail = lp_scene_new_cmd_block( scene, bin ); @@ -318,6 +320,30 @@ lp_scene_bin_command( struct lp_scene *scene, } +static INLINE boolean +lp_scene_bin_cmd_with_state( struct lp_scene *scene, + unsigned x, unsigned y, + const struct lp_rast_state *state, + unsigned cmd, + union lp_rast_cmd_arg arg ) +{ + struct cmd_bin *bin = lp_scene_get_bin(scene, x, y); + + if (state != bin->last_state) { + bin->last_state = state; + if (!lp_scene_bin_command(scene, x, y, + LP_RAST_OP_SET_STATE, + lp_rast_arg_state(state))) + return FALSE; + } + + if (!lp_scene_bin_command( scene, x, y, cmd, arg )) + return FALSE; + + return TRUE; +} + + /* Add a command to all active bins. */ static INLINE boolean diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index 693ac281752..e4cff9aa42c 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -597,7 +597,6 @@ try_setup_line( struct lp_setup_context *setup, setup_line_coefficients( setup, line, &info); line->inputs.facing = 1.0F; - line->inputs.state = setup->fs.stored; line->inputs.disable = FALSE; line->inputs.opaque = FALSE; diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 64b24a88d54..93c3efe347e 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -374,7 +374,6 @@ try_setup_point( struct lp_setup_context *setup, setup_point_coefficients(setup, point, &info); point->inputs.facing = 1.0F; - point->inputs.state = setup->fs.stored; point->inputs.disable = FALSE; point->inputs.opaque = FALSE; diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 8fd034666c3..bc48eb8d1b5 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -200,14 +200,16 @@ lp_setup_whole_tile(struct lp_setup_context *setup, } LP_COUNT(nr_shade_opaque_64); - return lp_scene_bin_command( scene, tx, ty, - LP_RAST_OP_SHADE_TILE_OPAQUE, - lp_rast_arg_inputs(inputs) ); + return lp_scene_bin_cmd_with_state( scene, tx, ty, + setup->fs.stored, + LP_RAST_OP_SHADE_TILE_OPAQUE, + lp_rast_arg_inputs(inputs) ); } else { LP_COUNT(nr_shade_64); - return lp_scene_bin_command( scene, tx, ty, - LP_RAST_OP_SHADE_TILE, - lp_rast_arg_inputs(inputs) ); + return lp_scene_bin_cmd_with_state( scene, tx, ty, + setup->fs.stored, + LP_RAST_OP_SHADE_TILE, + lp_rast_arg_inputs(inputs) ); } } @@ -320,7 +322,6 @@ do_triangle_ccw(struct lp_setup_context *setup, tri->inputs.facing = frontfacing ? 1.0F : -1.0F; tri->inputs.disable = FALSE; tri->inputs.opaque = setup->fs.current.variant->opaque; - tri->inputs.state = setup->fs.stored; for (i = 0; i < 3; i++) { @@ -491,34 +492,36 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, { /* Triangle is contained in a single 4x4 stamp: */ - - return lp_scene_bin_command( scene, ix0, iy0, - LP_RAST_OP_TRIANGLE_3_4, - lp_rast_arg_triangle(tri, mask) ); + return lp_scene_bin_cmd_with_state( scene, ix0, iy0, + setup->fs.stored, + LP_RAST_OP_TRIANGLE_3_4, + lp_rast_arg_triangle(tri, mask) ); } if (sz < 16) { /* Triangle is contained in a single 16x16 block: */ - return lp_scene_bin_command( scene, ix0, iy0, - LP_RAST_OP_TRIANGLE_3_16, - lp_rast_arg_triangle(tri, mask) ); + return lp_scene_bin_cmd_with_state( scene, ix0, iy0, + setup->fs.stored, + LP_RAST_OP_TRIANGLE_3_16, + lp_rast_arg_triangle(tri, mask) ); } } else if (nr_planes == 4 && sz < 16) { - return lp_scene_bin_command( scene, ix0, iy0, - LP_RAST_OP_TRIANGLE_4_16, - lp_rast_arg_triangle(tri, mask) ); + return lp_scene_bin_cmd_with_state(scene, ix0, iy0, + setup->fs.stored, + LP_RAST_OP_TRIANGLE_4_16, + lp_rast_arg_triangle(tri, mask) ); } /* Triangle is contained in a single tile: */ - return lp_scene_bin_command( scene, ix0, iy0, - lp_rast_tri_tab[nr_planes], - lp_rast_arg_triangle(tri, (1<fs.stored, + lp_rast_tri_tab[nr_planes], + lp_rast_arg_triangle(tri, (1<fs.stored, + lp_rast_tri_tab[count], + lp_rast_arg_triangle(tri, partial) )) goto fail; LP_COUNT(nr_partially_covered_64); -- cgit v1.2.3 From 0a1c9001037a13b69b157994e7983aa3dee158d3 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 15 Oct 2010 00:12:19 +0100 Subject: llvmpipe: don't pass frontfacing as a float --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 8 ++++---- src/gallium/drivers/llvmpipe/lp_jit.h | 2 +- src/gallium/drivers/llvmpipe/lp_rast.c | 4 ++-- src/gallium/drivers/llvmpipe/lp_rast.h | 2 +- src/gallium/drivers/llvmpipe/lp_rast_priv.h | 2 +- src/gallium/drivers/llvmpipe/lp_setup_line.c | 2 +- src/gallium/drivers/llvmpipe/lp_setup_point.c | 2 +- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 2 +- src/gallium/drivers/llvmpipe/lp_state_fs.c | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index e4cfa97aa3f..ddf7da0b14d 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -446,7 +446,7 @@ lp_build_occlusion_count(LLVMBuilderRef builder, * \param stencil_refs the front/back stencil ref values (scalar) * \param z_src the incoming depth/stencil values (a 2x2 quad, float32) * \param zs_dst_ptr pointer to depth/stencil values in framebuffer - * \param facing contains float value indicating front/back facing polygon + * \param facing contains boolean value indicating front/back facing polygon */ void lp_build_depth_stencil_test(LLVMBuilderRef builder, @@ -576,10 +576,10 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, if (stencil[0].enabled) { if (face) { - LLVMValueRef zero = LLVMConstReal(LLVMFloatType(), 0.0); + LLVMValueRef zero = LLVMConstInt(LLVMInt32Type(), 0, 0); - /* front_facing = face > 0.0 ? ~0 : 0 */ - front_facing = LLVMBuildFCmp(builder, LLVMRealUGT, face, zero, ""); + /* front_facing = face != 0 ? ~0 : 0 */ + front_facing = LLVMBuildICmp(builder, LLVMIntNE, face, zero, ""); front_facing = LLVMBuildSExt(builder, front_facing, LLVMIntType(s_bld.type.length*s_bld.type.width), ""); diff --git a/src/gallium/drivers/llvmpipe/lp_jit.h b/src/gallium/drivers/llvmpipe/lp_jit.h index 16e04fce0cd..114f21f2d16 100644 --- a/src/gallium/drivers/llvmpipe/lp_jit.h +++ b/src/gallium/drivers/llvmpipe/lp_jit.h @@ -144,7 +144,7 @@ typedef void (*lp_jit_frag_func)(const struct lp_jit_context *context, uint32_t x, uint32_t y, - float facing, + uint32_t facing, const void *a0, const void *dadx, const void *dady, diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index 35e2f731e89..8e9be755e07 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -365,7 +365,7 @@ lp_rast_shade_tile(struct lp_rasterizer_task *task, BEGIN_JIT_CALL(state); variant->jit_function[RAST_WHOLE]( &state->jit_context, tile_x + x, tile_y + y, - inputs->facing, + inputs->frontfacing, inputs->a0, inputs->dadx, inputs->dady, @@ -446,7 +446,7 @@ lp_rast_shade_quads_mask(struct lp_rasterizer_task *task, BEGIN_JIT_CALL(state); variant->jit_function[RAST_EDGE_TEST](&state->jit_context, x, y, - inputs->facing, + inputs->frontfacing, inputs->a0, inputs->dadx, inputs->dady, diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h index f74b198a66c..c5fb15484c5 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.h +++ b/src/gallium/drivers/llvmpipe/lp_rast.h @@ -78,7 +78,7 @@ struct lp_rast_state { * These pointers point into the bin data buffer. */ struct lp_rast_shader_inputs { - float facing; /** Positive for front-facing, negative for back-facing */ + unsigned frontfacing; /** One for front-facing */ unsigned disable:1; /** Partially binned, disable this command */ unsigned opaque:1; /** Is opaque */ diff --git a/src/gallium/drivers/llvmpipe/lp_rast_priv.h b/src/gallium/drivers/llvmpipe/lp_rast_priv.h index 7ffd735def2..e5d04c65b00 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_priv.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_priv.h @@ -261,7 +261,7 @@ lp_rast_shade_quads_all( struct lp_rasterizer_task *task, BEGIN_JIT_CALL(state); variant->jit_function[RAST_WHOLE]( &state->jit_context, x, y, - inputs->facing, + inputs->frontfacing, inputs->a0, inputs->dadx, inputs->dady, diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index e4cff9aa42c..efc48eecfee 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -596,7 +596,7 @@ try_setup_line( struct lp_setup_context *setup, */ setup_line_coefficients( setup, line, &info); - line->inputs.facing = 1.0F; + line->inputs.frontfacing = TRUE; line->inputs.disable = FALSE; line->inputs.opaque = FALSE; diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 93c3efe347e..108c831e66e 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -373,7 +373,7 @@ try_setup_point( struct lp_setup_context *setup, */ setup_point_coefficients(setup, point, &info); - point->inputs.facing = 1.0F; + point->inputs.frontfacing = TRUE; point->inputs.disable = FALSE; point->inputs.opaque = FALSE; diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index bc48eb8d1b5..3bf0b2d2522 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -319,7 +319,7 @@ do_triangle_ccw(struct lp_setup_context *setup, */ lp_setup_tri_coef( setup, &tri->inputs, v0, v1, v2, frontfacing ); - tri->inputs.facing = frontfacing ? 1.0F : -1.0F; + tri->inputs.frontfacing = frontfacing; tri->inputs.disable = FALSE; tri->inputs.opaque = setup->fs.current.variant->opaque; diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index d2fbe277083..8df807cec88 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -579,7 +579,7 @@ generate_fragment(struct llvmpipe_context *lp, arg_types[0] = screen->context_ptr_type; /* context */ arg_types[1] = LLVMInt32Type(); /* x */ arg_types[2] = LLVMInt32Type(); /* y */ - arg_types[3] = LLVMFloatType(); /* facing */ + arg_types[3] = LLVMInt32Type(); /* facing */ arg_types[4] = LLVMPointerType(fs_elem_type, 0); /* a0 */ arg_types[5] = LLVMPointerType(fs_elem_type, 0); /* dadx */ arg_types[6] = LLVMPointerType(fs_elem_type, 0); /* dady */ -- cgit v1.2.3 From 9bf8a55c4b29d55320fc2e7875ecf0e9ca164ee8 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 15 Oct 2010 12:23:22 +0100 Subject: llvmpipe: slightly shrink the size of a binned triangle --- src/gallium/drivers/llvmpipe/lp_rast.c | 12 +- src/gallium/drivers/llvmpipe/lp_rast.h | 30 ++-- src/gallium/drivers/llvmpipe/lp_rast_debug.c | 3 +- src/gallium/drivers/llvmpipe/lp_rast_priv.h | 6 +- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 4 +- src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h | 7 +- src/gallium/drivers/llvmpipe/lp_setup_coef.c | 67 ++++----- src/gallium/drivers/llvmpipe/lp_setup_coef.h | 4 + .../drivers/llvmpipe/lp_setup_coef_intrin.c | 52 ++++--- src/gallium/drivers/llvmpipe/lp_setup_line.c | 154 +++++++++++---------- src/gallium/drivers/llvmpipe/lp_setup_point.c | 141 ++++++++++--------- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 128 ++++++++--------- 12 files changed, 316 insertions(+), 292 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index 8e9be755e07..d358a983943 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -366,9 +366,9 @@ lp_rast_shade_tile(struct lp_rasterizer_task *task, variant->jit_function[RAST_WHOLE]( &state->jit_context, tile_x + x, tile_y + y, inputs->frontfacing, - inputs->a0, - inputs->dadx, - inputs->dady, + GET_A0(inputs), + GET_DADX(inputs), + GET_DADY(inputs), color, depth, 0xffff, @@ -447,9 +447,9 @@ lp_rast_shade_quads_mask(struct lp_rasterizer_task *task, variant->jit_function[RAST_EDGE_TEST](&state->jit_context, x, y, inputs->frontfacing, - inputs->a0, - inputs->dadx, - inputs->dady, + GET_A0(inputs), + GET_DADX(inputs), + GET_DADY(inputs), color, depth, mask, diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h index c5fb15484c5..8d8b6210ec7 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.h +++ b/src/gallium/drivers/llvmpipe/lp_rast.h @@ -78,13 +78,14 @@ struct lp_rast_state { * These pointers point into the bin data buffer. */ struct lp_rast_shader_inputs { - unsigned frontfacing; /** One for front-facing */ - unsigned disable:1; /** Partially binned, disable this command */ - unsigned opaque:1; /** Is opaque */ - - float (*a0)[4]; - float (*dadx)[4]; - float (*dady)[4]; + unsigned frontfacing:1; /** True for front-facing */ + unsigned disable:1; /** Partially binned, disable this command */ + unsigned opaque:1; /** Is opaque */ + unsigned pad0:29; /* wasted space */ + unsigned stride; /* how much to advance data between a0, dadx, dady */ + unsigned pad2; /* wasted space */ + unsigned pad3; /* wasted space */ + /* followed by a0, dadx, dady and planes[] */ }; /* Note: the order of these values is important as they are loaded by @@ -111,17 +112,24 @@ struct lp_rast_plane { * Objects of this type are put into the lp_setup_context::data buffer. */ struct lp_rast_triangle { - /* inputs for the shader */ - struct lp_rast_shader_inputs inputs; - #ifdef DEBUG float v[3][2]; + float pad0; + float pad1; #endif - struct lp_rast_plane plane[8]; /* NOTE: may allocate fewer planes */ + /* inputs for the shader */ + struct lp_rast_shader_inputs inputs; + /* planes are also allocated here */ }; +#define GET_A0(inputs) ((float (*)[4])((inputs)+1)) +#define GET_DADX(inputs) ((float (*)[4])((char *)((inputs) + 1) + (inputs)->stride)) +#define GET_DADY(inputs) ((float (*)[4])((char *)((inputs) + 1) + 2 * (inputs)->stride)) +#define GET_PLANES(tri) ((struct lp_rast_plane *)((char *)(&(tri)->inputs + 1) + 3 * (tri)->inputs.stride)) + + struct lp_rasterizer * lp_rast_create( unsigned num_threads ); diff --git a/src/gallium/drivers/llvmpipe/lp_rast_debug.c b/src/gallium/drivers/llvmpipe/lp_rast_debug.c index 3113e196c40..e2783aa5683 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_debug.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_debug.c @@ -178,6 +178,7 @@ debug_triangle(int tilex, int tiley, { const struct lp_rast_triangle *tri = arg.triangle.tri; unsigned plane_mask = arg.triangle.plane_mask; + const struct lp_rast_plane *tri_plane = GET_PLANES(tri); struct lp_rast_plane plane[8]; int x, y; int count = 0; @@ -190,7 +191,7 @@ debug_triangle(int tilex, int tiley, } while (plane_mask) { - plane[nr_planes] = tri->plane[u_bit_scan(&plane_mask)]; + plane[nr_planes] = tri_plane[u_bit_scan(&plane_mask)]; plane[nr_planes].c = (plane[nr_planes].c + plane[nr_planes].dcdy * tiley - plane[nr_planes].dcdx * tilex); diff --git a/src/gallium/drivers/llvmpipe/lp_rast_priv.h b/src/gallium/drivers/llvmpipe/lp_rast_priv.h index e5d04c65b00..b30408f097b 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_priv.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_priv.h @@ -262,9 +262,9 @@ lp_rast_shade_quads_all( struct lp_rasterizer_task *task, variant->jit_function[RAST_WHOLE]( &state->jit_context, x, y, inputs->frontfacing, - inputs->a0, - inputs->dadx, - inputs->dady, + GET_A0(inputs), + GET_DADX(inputs), + GET_DADY(inputs), color, depth, 0xffff, diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index bae772b9c50..5bdf19712f4 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -311,7 +311,7 @@ lp_rast_triangle_3_16(struct lp_rasterizer_task *task, const union lp_rast_cmd_arg arg) { const struct lp_rast_triangle *tri = arg.triangle.tri; - const struct lp_rast_plane *plane = tri->plane; + const struct lp_rast_plane *plane = GET_PLANES(tri); int x = (arg.triangle.plane_mask & 0xff) + task->x; int y = (arg.triangle.plane_mask >> 8) + task->y; unsigned i, j; @@ -421,7 +421,7 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task, const union lp_rast_cmd_arg arg) { const struct lp_rast_triangle *tri = arg.triangle.tri; - const struct lp_rast_plane *plane = tri->plane; + const struct lp_rast_plane *plane = GET_PLANES(tri); int x = (arg.triangle.plane_mask & 0xff) + task->x; int y = (arg.triangle.plane_mask >> 8) + task->y; diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h index 2f032295126..9976996719a 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h @@ -156,6 +156,7 @@ TAG(lp_rast_triangle)(struct lp_rasterizer_task *task, { const struct lp_rast_triangle *tri = arg.triangle.tri; unsigned plane_mask = arg.triangle.plane_mask; + const struct lp_rast_plane *tri_plane = GET_PLANES(tri); const int x = task->x, y = task->y; struct lp_rast_plane plane[NR_PLANES]; int c[NR_PLANES]; @@ -172,7 +173,7 @@ TAG(lp_rast_triangle)(struct lp_rasterizer_task *task, while (plane_mask) { int i = ffs(plane_mask) - 1; - plane[j] = tri->plane[i]; + plane[j] = tri_plane[i]; plane_mask &= ~(1 << i); c[j] = plane[j].c + plane[j].dcdy * y - plane[j].dcdx * x; @@ -255,7 +256,7 @@ TRI_16(struct lp_rasterizer_task *task, const union lp_rast_cmd_arg arg) { const struct lp_rast_triangle *tri = arg.triangle.tri; - const struct lp_rast_plane *plane = tri->plane; + const struct lp_rast_plane *plane = GET_PLANES(tri); unsigned mask = arg.triangle.plane_mask; unsigned outmask, partial_mask; unsigned j; @@ -328,7 +329,7 @@ TRI_4(struct lp_rasterizer_task *task, const union lp_rast_cmd_arg arg) { const struct lp_rast_triangle *tri = arg.triangle.tri; - const struct lp_rast_plane *plane = tri->plane; + const struct lp_rast_plane *plane = GET_PLANES(tri); unsigned mask = arg.triangle.plane_mask; const int x = task->x + (mask & 0xff); const int y = task->y + (mask >> 8); diff --git a/src/gallium/drivers/llvmpipe/lp_setup_coef.c b/src/gallium/drivers/llvmpipe/lp_setup_coef.c index 8dc2688ddb6..a835df6af24 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_coef.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_coef.c @@ -42,20 +42,19 @@ /** * Compute a0 for a constant-valued coefficient (GL_FLAT shading). */ -static void constant_coef( struct lp_rast_shader_inputs *inputs, +static void constant_coef( struct lp_tri_info *info, unsigned slot, const float value, unsigned i ) { - inputs->a0[slot][i] = value; - inputs->dadx[slot][i] = 0.0f; - inputs->dady[slot][i] = 0.0f; + info->a0[slot][i] = value; + info->dadx[slot][i] = 0.0f; + info->dady[slot][i] = 0.0f; } -static void linear_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +static void linear_coef( struct lp_tri_info *info, unsigned slot, unsigned vert_attr, unsigned i) @@ -69,8 +68,8 @@ static void linear_coef( struct lp_rast_shader_inputs *inputs, float dadx = (da01 * info->dy20_ooa - info->dy01_ooa * da20); float dady = (da20 * info->dx01_ooa - info->dx20_ooa * da01); - inputs->dadx[slot][i] = dadx; - inputs->dady[slot][i] = dady; + info->dadx[slot][i] = dadx; + info->dady[slot][i] = dady; /* calculate a0 as the value which would be sampled for the * fragment at (0,0), taking into account that we want to sample at @@ -84,7 +83,7 @@ static void linear_coef( struct lp_rast_shader_inputs *inputs, * to define a0 as the sample at a pixel center somewhere near vmin * instead - i'll switch to this later. */ - inputs->a0[slot][i] = a0 - (dadx * info->x0_center + + info->a0[slot][i] = a0 - (dadx * info->x0_center + dady * info->y0_center); } @@ -97,8 +96,7 @@ static void linear_coef( struct lp_rast_shader_inputs *inputs, * Later, when we compute the value at a particular fragment position we'll * divide the interpolated value by the interpolated W at that fragment. */ -static void perspective_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +static void perspective_coef( struct lp_tri_info *info, unsigned slot, unsigned vert_attr, unsigned i) @@ -113,9 +111,9 @@ static void perspective_coef( struct lp_rast_shader_inputs *inputs, float dadx = da01 * info->dy20_ooa - info->dy01_ooa * da20; float dady = da20 * info->dx01_ooa - info->dx20_ooa * da01; - inputs->dadx[slot][i] = dadx; - inputs->dady[slot][i] = dady; - inputs->a0[slot][i] = a0 - (dadx * info->x0_center + + info->dadx[slot][i] = dadx; + info->dady[slot][i] = dady; + info->a0[slot][i] = a0 - (dadx * info->x0_center + dady * info->y0_center); } @@ -127,23 +125,22 @@ static void perspective_coef( struct lp_rast_shader_inputs *inputs, * We could do a bit less work if we'd examine gl_FragCoord's swizzle mask. */ static void -setup_fragcoord_coef(struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +setup_fragcoord_coef(struct lp_tri_info *info, unsigned slot, unsigned usage_mask) { /*X*/ if (usage_mask & TGSI_WRITEMASK_X) { - inputs->a0[slot][0] = 0.0; - inputs->dadx[slot][0] = 1.0; - inputs->dady[slot][0] = 0.0; + info->a0[slot][0] = 0.0; + info->dadx[slot][0] = 1.0; + info->dady[slot][0] = 0.0; } /*Y*/ if (usage_mask & TGSI_WRITEMASK_Y) { - inputs->a0[slot][1] = 0.0; - inputs->dadx[slot][1] = 0.0; - inputs->dady[slot][1] = 1.0; + info->a0[slot][1] = 0.0; + info->dadx[slot][1] = 0.0; + info->dady[slot][1] = 1.0; } /*Z*/ @@ -162,23 +159,23 @@ setup_fragcoord_coef(struct lp_rast_shader_inputs *inputs, * Setup the fragment input attribute with the front-facing value. * \param frontface is the triangle front facing? */ -static void setup_facing_coef( struct lp_rast_shader_inputs *inputs, +static void setup_facing_coef( struct lp_tri_info *info, unsigned slot, boolean frontface, unsigned usage_mask) { /* convert TRUE to 1.0 and FALSE to -1.0 */ if (usage_mask & TGSI_WRITEMASK_X) - constant_coef( inputs, slot, 2.0f * frontface - 1.0f, 0 ); + constant_coef( info, slot, 2.0f * frontface - 1.0f, 0 ); if (usage_mask & TGSI_WRITEMASK_Y) - constant_coef( inputs, slot, 0.0f, 1 ); /* wasted */ + constant_coef( info, slot, 0.0f, 1 ); /* wasted */ if (usage_mask & TGSI_WRITEMASK_Z) - constant_coef( inputs, slot, 0.0f, 2 ); /* wasted */ + constant_coef( info, slot, 0.0f, 2 ); /* wasted */ if (usage_mask & TGSI_WRITEMASK_W) - constant_coef( inputs, slot, 0.0f, 3 ); /* wasted */ + constant_coef( info, slot, 0.0f, 3 ); /* wasted */ } @@ -212,6 +209,10 @@ void lp_setup_tri_coef( struct lp_setup_context *setup, info.dx20_ooa = dx20 * oneoverarea; info.dy01_ooa = dy01 * oneoverarea; info.dy20_ooa = dy20 * oneoverarea; + info.a0 = GET_A0(inputs); + info.dadx = GET_DADX(inputs); + info.dady = GET_DADY(inputs); + /* setup interpolation for all the remaining attributes: @@ -225,25 +226,25 @@ void lp_setup_tri_coef( struct lp_setup_context *setup, if (setup->flatshade_first) { for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - constant_coef(inputs, slot+1, info.v0[vert_attr][i], i); + constant_coef(&info, slot+1, info.v0[vert_attr][i], i); } else { for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - constant_coef(inputs, slot+1, info.v2[vert_attr][i], i); + constant_coef(&info, slot+1, info.v2[vert_attr][i], i); } break; case LP_INTERP_LINEAR: for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - linear_coef(inputs, &info, slot+1, vert_attr, i); + linear_coef(&info, slot+1, vert_attr, i); break; case LP_INTERP_PERSPECTIVE: for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - perspective_coef(inputs, &info, slot+1, vert_attr, i); + perspective_coef(&info, slot+1, vert_attr, i); fragcoord_usage_mask |= TGSI_WRITEMASK_W; break; @@ -257,7 +258,7 @@ void lp_setup_tri_coef( struct lp_setup_context *setup, break; case LP_INTERP_FACING: - setup_facing_coef(inputs, slot+1, info.frontfacing, usage_mask); + setup_facing_coef(&info, slot+1, info.frontfacing, usage_mask); break; default: @@ -267,7 +268,7 @@ void lp_setup_tri_coef( struct lp_setup_context *setup, /* The internal position input is in slot zero: */ - setup_fragcoord_coef(inputs, &info, 0, fragcoord_usage_mask); + setup_fragcoord_coef(&info, 0, fragcoord_usage_mask); } #else diff --git a/src/gallium/drivers/llvmpipe/lp_setup_coef.h b/src/gallium/drivers/llvmpipe/lp_setup_coef.h index 87a3255ccc6..7b5b78edd53 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_coef.h +++ b/src/gallium/drivers/llvmpipe/lp_setup_coef.h @@ -52,6 +52,10 @@ struct lp_tri_info { const float (*v2)[4]; boolean frontfacing; /* remove eventually */ + + float (*a0)[4]; + float (*dadx)[4]; + float (*dady)[4]; }; void lp_setup_tri_coef( struct lp_setup_context *setup, diff --git a/src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c b/src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c index 3742fd672b2..29714e27687 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c @@ -40,14 +40,13 @@ #include -static void constant_coef4( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +static void constant_coef4( struct lp_tri_info *info, unsigned slot, const float *attr) { - *(__m128 *)inputs->a0[slot] = *(__m128 *)attr; - *(__m128 *)inputs->dadx[slot] = _mm_set1_ps(0.0); - *(__m128 *)inputs->dady[slot] = _mm_set1_ps(0.0); + *(__m128 *)info->a0[slot] = *(__m128 *)attr; + *(__m128 *)info->dadx[slot] = _mm_set1_ps(0.0); + *(__m128 *)info->dady[slot] = _mm_set1_ps(0.0); } @@ -56,8 +55,7 @@ static void constant_coef4( struct lp_rast_shader_inputs *inputs, * Setup the fragment input attribute with the front-facing value. * \param frontface is the triangle front facing? */ -static void setup_facing_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +static void setup_facing_coef( struct lp_tri_info *info, unsigned slot ) { /* XXX: just pass frontface directly to the shader, don't bother @@ -66,15 +64,14 @@ static void setup_facing_coef( struct lp_rast_shader_inputs *inputs, __m128 a0 = _mm_setr_ps(info->frontfacing ? 1.0 : -1.0, 0, 0, 0); - *(__m128 *)inputs->a0[slot] = a0; - *(__m128 *)inputs->dadx[slot] = _mm_set1_ps(0.0); - *(__m128 *)inputs->dady[slot] = _mm_set1_ps(0.0); + *(__m128 *)info->a0[slot] = a0; + *(__m128 *)info->dadx[slot] = _mm_set1_ps(0.0); + *(__m128 *)info->dady[slot] = _mm_set1_ps(0.0); } -static void calc_coef4( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +static void calc_coef4( const struct lp_tri_info *info, unsigned slot, __m128 a0, __m128 a1, @@ -96,14 +93,13 @@ static void calc_coef4( struct lp_rast_shader_inputs *inputs, __m128 attr_v0 = _mm_add_ps(dadx_x0, dady_y0); __m128 attr_0 = _mm_sub_ps(a0, attr_v0); - *(__m128 *)inputs->a0[slot] = attr_0; - *(__m128 *)inputs->dadx[slot] = dadx; - *(__m128 *)inputs->dady[slot] = dady; + *(__m128 *)info->a0[slot] = attr_0; + *(__m128 *)info->dadx[slot] = dadx; + *(__m128 *)info->dady[slot] = dady; } -static void linear_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +static void linear_coef( struct lp_tri_info *info, unsigned slot, unsigned vert_attr) { @@ -111,7 +107,7 @@ static void linear_coef( struct lp_rast_shader_inputs *inputs, __m128 a1 = *(const __m128 *)info->v1[vert_attr]; __m128 a2 = *(const __m128 *)info->v2[vert_attr]; - calc_coef4(inputs, info, slot, a0, a1, a2); + calc_coef4(info, slot, a0, a1, a2); } @@ -124,8 +120,7 @@ static void linear_coef( struct lp_rast_shader_inputs *inputs, * Later, when we compute the value at a particular fragment position we'll * divide the interpolated value by the interpolated W at that fragment. */ -static void perspective_coef( struct lp_rast_shader_inputs *inputs, - const struct lp_tri_info *info, +static void perspective_coef( const struct lp_tri_info *info, unsigned slot, unsigned vert_attr) { @@ -139,7 +134,7 @@ static void perspective_coef( struct lp_rast_shader_inputs *inputs, __m128 a1_oow = _mm_mul_ps(a1, _mm_set1_ps(info->v1[0][3])); __m128 a2_oow = _mm_mul_ps(a2, _mm_set1_ps(info->v2[0][3])); - calc_coef4(inputs, info, slot, a0_oow, a1_oow, a2_oow); + calc_coef4(info, slot, a0_oow, a1_oow, a2_oow); } @@ -174,11 +169,14 @@ void lp_setup_tri_coef( struct lp_setup_context *setup, info.dx20_ooa = dx20 * oneoverarea; info.dy01_ooa = dy01 * oneoverarea; info.dy20_ooa = dy20 * oneoverarea; + info.a0 = GET_A0(inputs); + info.dadx = GET_DADX(inputs); + info.dady = GET_DADY(inputs); /* The internal position input is in slot zero: */ - linear_coef(inputs, &info, 0, 0); + linear_coef(&info, 0, 0); /* setup interpolation for all the remaining attributes: */ @@ -188,19 +186,19 @@ void lp_setup_tri_coef( struct lp_setup_context *setup, switch (setup->fs.input[slot].interp) { case LP_INTERP_CONSTANT: if (setup->flatshade_first) { - constant_coef4(inputs, &info, slot+1, info.v0[vert_attr]); + constant_coef4(&info, slot+1, info.v0[vert_attr]); } else { - constant_coef4(inputs, &info, slot+1, info.v2[vert_attr]); + constant_coef4(&info, slot+1, info.v2[vert_attr]); } break; case LP_INTERP_LINEAR: - linear_coef(inputs, &info, slot+1, vert_attr); + linear_coef(&info, slot+1, vert_attr); break; case LP_INTERP_PERSPECTIVE: - perspective_coef(inputs, &info, slot+1, vert_attr); + perspective_coef(&info, slot+1, vert_attr); break; case LP_INTERP_POSITION: @@ -211,7 +209,7 @@ void lp_setup_tri_coef( struct lp_setup_context *setup, break; case LP_INTERP_FACING: - setup_facing_coef(inputs, &info, slot+1); + setup_facing_coef(&info, slot+1); break; default: diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index efc48eecfee..2fd9f2e2f2a 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -46,6 +46,10 @@ struct lp_line_info { const float (*v1)[4]; const float (*v2)[4]; + + float (*a0)[4]; + float (*dadx)[4]; + float (*dady)[4]; }; @@ -53,14 +57,14 @@ struct lp_line_info { * Compute a0 for a constant-valued coefficient (GL_FLAT shading). */ static void constant_coef( struct lp_setup_context *setup, - struct lp_rast_triangle *tri, + struct lp_line_info *info, unsigned slot, const float value, unsigned i ) { - tri->inputs.a0[slot][i] = value; - tri->inputs.dadx[slot][i] = 0.0f; - tri->inputs.dady[slot][i] = 0.0f; + info->a0[slot][i] = value; + info->dadx[slot][i] = 0.0f; + info->dady[slot][i] = 0.0f; } @@ -69,7 +73,6 @@ static void constant_coef( struct lp_setup_context *setup, * for a triangle. */ static void linear_coef( struct lp_setup_context *setup, - struct lp_rast_triangle *tri, struct lp_line_info *info, unsigned slot, unsigned vert_attr, @@ -82,10 +85,10 @@ static void linear_coef( struct lp_setup_context *setup, float dadx = da21 * info->dx * info->oneoverarea; float dady = da21 * info->dy * info->oneoverarea; - tri->inputs.dadx[slot][i] = dadx; - tri->inputs.dady[slot][i] = dady; + info->dadx[slot][i] = dadx; + info->dady[slot][i] = dady; - tri->inputs.a0[slot][i] = (a1 - + info->a0[slot][i] = (a1 - (dadx * (info->v1[0][0] - setup->pixel_offset) + dady * (info->v1[0][1] - setup->pixel_offset))); } @@ -100,7 +103,6 @@ static void linear_coef( struct lp_setup_context *setup, * divide the interpolated value by the interpolated W at that fragment. */ static void perspective_coef( struct lp_setup_context *setup, - struct lp_rast_triangle *tri, struct lp_line_info *info, unsigned slot, unsigned vert_attr, @@ -115,43 +117,42 @@ static void perspective_coef( struct lp_setup_context *setup, float dadx = da21 * info->dx * info->oneoverarea; float dady = da21 * info->dy * info->oneoverarea; - tri->inputs.dadx[slot][i] = dadx; - tri->inputs.dady[slot][i] = dady; + info->dadx[slot][i] = dadx; + info->dady[slot][i] = dady; - tri->inputs.a0[slot][i] = (a1 - - (dadx * (info->v1[0][0] - setup->pixel_offset) + - dady * (info->v1[0][1] - setup->pixel_offset))); + info->a0[slot][i] = (a1 - + (dadx * (info->v1[0][0] - setup->pixel_offset) + + dady * (info->v1[0][1] - setup->pixel_offset))); } static void setup_fragcoord_coef( struct lp_setup_context *setup, - struct lp_rast_triangle *tri, struct lp_line_info *info, unsigned slot, unsigned usage_mask) { /*X*/ if (usage_mask & TGSI_WRITEMASK_X) { - tri->inputs.a0[slot][0] = 0.0; - tri->inputs.dadx[slot][0] = 1.0; - tri->inputs.dady[slot][0] = 0.0; + info->a0[slot][0] = 0.0; + info->dadx[slot][0] = 1.0; + info->dady[slot][0] = 0.0; } /*Y*/ if (usage_mask & TGSI_WRITEMASK_Y) { - tri->inputs.a0[slot][1] = 0.0; - tri->inputs.dadx[slot][1] = 0.0; - tri->inputs.dady[slot][1] = 1.0; + info->a0[slot][1] = 0.0; + info->dadx[slot][1] = 0.0; + info->dady[slot][1] = 1.0; } /*Z*/ if (usage_mask & TGSI_WRITEMASK_Z) { - linear_coef(setup, tri, info, slot, 0, 2); + linear_coef(setup, info, slot, 0, 2); } /*W*/ if (usage_mask & TGSI_WRITEMASK_W) { - linear_coef(setup, tri, info, slot, 0, 3); + linear_coef(setup, info, slot, 0, 3); } } @@ -159,7 +160,6 @@ setup_fragcoord_coef( struct lp_setup_context *setup, * Compute the tri->coef[] array dadx, dady, a0 values. */ static void setup_line_coefficients( struct lp_setup_context *setup, - struct lp_rast_triangle *tri, struct lp_line_info *info) { unsigned fragcoord_usage_mask = TGSI_WRITEMASK_XYZ; @@ -177,25 +177,25 @@ static void setup_line_coefficients( struct lp_setup_context *setup, if (setup->flatshade_first) { for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - constant_coef(setup, tri, slot+1, info->v1[vert_attr][i], i); + constant_coef(setup, info, slot+1, info->v1[vert_attr][i], i); } else { for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - constant_coef(setup, tri, slot+1, info->v2[vert_attr][i], i); + constant_coef(setup, info, slot+1, info->v2[vert_attr][i], i); } break; case LP_INTERP_LINEAR: for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - linear_coef(setup, tri, info, slot+1, vert_attr, i); + linear_coef(setup, info, slot+1, vert_attr, i); break; case LP_INTERP_PERSPECTIVE: for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - perspective_coef(setup, tri, info, slot+1, vert_attr, i); + perspective_coef(setup, info, slot+1, vert_attr, i); fragcoord_usage_mask |= TGSI_WRITEMASK_W; break; @@ -211,7 +211,7 @@ static void setup_line_coefficients( struct lp_setup_context *setup, case LP_INTERP_FACING: for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - constant_coef(setup, tri, slot+1, 1.0, i); + constant_coef(setup, info, slot+1, 1.0, i); break; default: @@ -221,7 +221,7 @@ static void setup_line_coefficients( struct lp_setup_context *setup, /* The internal position input is in slot zero: */ - setup_fragcoord_coef(setup, tri, info, 0, + setup_fragcoord_coef(setup, info, 0, fragcoord_usage_mask); } @@ -276,6 +276,7 @@ try_setup_line( struct lp_setup_context *setup, { struct lp_scene *scene = setup->scene; struct lp_rast_triangle *line; + struct lp_rast_plane *plane; struct lp_line_info info; float width = MAX2(1.0, setup->line_width); struct u_rect bbox; @@ -581,32 +582,35 @@ try_setup_line( struct lp_setup_context *setup, #endif /* calculate the deltas */ - line->plane[0].dcdy = x[0] - x[1]; - line->plane[1].dcdy = x[1] - x[2]; - line->plane[2].dcdy = x[2] - x[3]; - line->plane[3].dcdy = x[3] - x[0]; + plane = GET_PLANES(line); + plane[0].dcdy = x[0] - x[1]; + plane[1].dcdy = x[1] - x[2]; + plane[2].dcdy = x[2] - x[3]; + plane[3].dcdy = x[3] - x[0]; - line->plane[0].dcdx = y[0] - y[1]; - line->plane[1].dcdx = y[1] - y[2]; - line->plane[2].dcdx = y[2] - y[3]; - line->plane[3].dcdx = y[3] - y[0]; + plane[0].dcdx = y[0] - y[1]; + plane[1].dcdx = y[1] - y[2]; + plane[2].dcdx = y[2] - y[3]; + plane[3].dcdx = y[3] - y[0]; /* Setup parameter interpolants: */ - setup_line_coefficients( setup, line, &info); + info.a0 = GET_A0(&line->inputs); + info.dadx = GET_DADX(&line->inputs); + info.dady = GET_DADY(&line->inputs); + setup_line_coefficients(setup, &info); line->inputs.frontfacing = TRUE; line->inputs.disable = FALSE; line->inputs.opaque = FALSE; for (i = 0; i < 4; i++) { - struct lp_rast_plane *plane = &line->plane[i]; /* half-edge constants, will be interated over the whole render * target. */ - plane->c = plane->dcdx * x[i] - plane->dcdy * y[i]; + plane[i].c = plane[i].dcdx * x[i] - plane[i].dcdy * y[i]; /* correct for top-left vs. bottom-left fill convention. @@ -622,38 +626,38 @@ try_setup_line( struct lp_setup_context *setup, * to its usual method, in which case it will probably want * to use the opposite, top-left convention. */ - if (plane->dcdx < 0) { + if (plane[i].dcdx < 0) { /* both fill conventions want this - adjust for left edges */ - plane->c++; + plane[i].c++; } - else if (plane->dcdx == 0) { + else if (plane[i].dcdx == 0) { if (setup->pixel_offset == 0) { /* correct for top-left fill convention: */ - if (plane->dcdy > 0) plane->c++; + if (plane[i].dcdy > 0) plane[i].c++; } else { /* correct for bottom-left fill convention: */ - if (plane->dcdy < 0) plane->c++; + if (plane[i].dcdy < 0) plane[i].c++; } } - plane->dcdx *= FIXED_ONE; - plane->dcdy *= FIXED_ONE; + plane[i].dcdx *= FIXED_ONE; + plane[i].dcdy *= FIXED_ONE; /* find trivial reject offsets for each edge for a single-pixel * sized block. These will be scaled up at each recursive level to * match the active blocksize. Scaling in this way works best if * the blocks are square. */ - plane->eo = 0; - if (plane->dcdx < 0) plane->eo -= plane->dcdx; - if (plane->dcdy > 0) plane->eo += plane->dcdy; + plane[i].eo = 0; + if (plane[i].dcdx < 0) plane[i].eo -= plane[i].dcdx; + if (plane[i].dcdy > 0) plane[i].eo += plane[i].dcdy; /* Calculate trivial accept offsets from the above. */ - plane->ei = plane->dcdy - plane->dcdx - plane->eo; + plane[i].ei = plane[i].dcdy - plane[i].dcdx - plane[i].eo; } @@ -676,29 +680,29 @@ try_setup_line( struct lp_setup_context *setup, * these planes elsewhere. */ if (nr_planes == 8) { - line->plane[4].dcdx = -1; - line->plane[4].dcdy = 0; - line->plane[4].c = 1-bbox.x0; - line->plane[4].ei = 0; - line->plane[4].eo = 1; - - line->plane[5].dcdx = 1; - line->plane[5].dcdy = 0; - line->plane[5].c = bbox.x1+1; - line->plane[5].ei = -1; - line->plane[5].eo = 0; - - line->plane[6].dcdx = 0; - line->plane[6].dcdy = 1; - line->plane[6].c = 1-bbox.y0; - line->plane[6].ei = 0; - line->plane[6].eo = 1; - - line->plane[7].dcdx = 0; - line->plane[7].dcdy = -1; - line->plane[7].c = bbox.y1+1; - line->plane[7].ei = -1; - line->plane[7].eo = 0; + plane[4].dcdx = -1; + plane[4].dcdy = 0; + plane[4].c = 1-bbox.x0; + plane[4].ei = 0; + plane[4].eo = 1; + + plane[5].dcdx = 1; + plane[5].dcdy = 0; + plane[5].c = bbox.x1+1; + plane[5].ei = -1; + plane[5].eo = 0; + + plane[6].dcdx = 0; + plane[6].dcdy = 1; + plane[6].c = 1-bbox.y0; + plane[6].ei = 0; + plane[6].eo = 1; + + plane[7].dcdx = 0; + plane[7].dcdy = -1; + plane[7].c = bbox.y1+1; + plane[7].ei = -1; + plane[7].eo = 0; } return lp_setup_bin_triangle(setup, line, &bbox, nr_planes); diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 108c831e66e..e30e70e16d2 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -45,6 +45,10 @@ struct point_info { int dx01, dx12; const float (*v0)[4]; + + float (*a0)[4]; + float (*dadx)[4]; + float (*dady)[4]; }; @@ -53,20 +57,19 @@ struct point_info { */ static void constant_coef(struct lp_setup_context *setup, - struct lp_rast_triangle *point, + struct point_info *info, unsigned slot, const float value, unsigned i) { - point->inputs.a0[slot][i] = value; - point->inputs.dadx[slot][i] = 0.0f; - point->inputs.dady[slot][i] = 0.0f; + info->a0[slot][i] = value; + info->dadx[slot][i] = 0.0f; + info->dady[slot][i] = 0.0f; } static void point_persp_coeff(struct lp_setup_context *setup, - struct lp_rast_triangle *point, const struct point_info *info, unsigned slot, unsigned i) @@ -82,9 +85,9 @@ point_persp_coeff(struct lp_setup_context *setup, assert(i < 4); - point->inputs.a0[slot][i] = info->v0[slot][i]*w0; - point->inputs.dadx[slot][i] = 0.0f; - point->inputs.dady[slot][i] = 0.0f; + info->a0[slot][i] = info->v0[slot][i]*w0; + info->dadx[slot][i] = 0.0f; + info->dady[slot][i] = 0.0f; } @@ -98,7 +101,6 @@ point_persp_coeff(struct lp_setup_context *setup, */ static void texcoord_coef(struct lp_setup_context *setup, - struct lp_rast_triangle *point, const struct point_info *info, unsigned slot, unsigned i, @@ -115,14 +117,14 @@ texcoord_coef(struct lp_setup_context *setup, float x0 = info->v0[0][0] - setup->pixel_offset; float y0 = info->v0[0][1] - setup->pixel_offset; - point->inputs.dadx[slot][0] = dadx; - point->inputs.dady[slot][0] = dady; - point->inputs.a0[slot][0] = 0.5 - (dadx * x0 + dady * y0); + info->dadx[slot][0] = dadx; + info->dady[slot][0] = dady; + info->a0[slot][0] = 0.5 - (dadx * x0 + dady * y0); if (perspective) { - point->inputs.dadx[slot][0] *= w0; - point->inputs.dady[slot][0] *= w0; - point->inputs.a0[slot][0] *= w0; + info->dadx[slot][0] *= w0; + info->dady[slot][0] *= w0; + info->a0[slot][0] *= w0; } } else if (i == 1) { @@ -135,25 +137,25 @@ texcoord_coef(struct lp_setup_context *setup, dady = -dady; } - point->inputs.dadx[slot][1] = dadx; - point->inputs.dady[slot][1] = dady; - point->inputs.a0[slot][1] = 0.5 - (dadx * x0 + dady * y0); + info->dadx[slot][1] = dadx; + info->dady[slot][1] = dady; + info->a0[slot][1] = 0.5 - (dadx * x0 + dady * y0); if (perspective) { - point->inputs.dadx[slot][1] *= w0; - point->inputs.dady[slot][1] *= w0; - point->inputs.a0[slot][1] *= w0; + info->dadx[slot][1] *= w0; + info->dady[slot][1] *= w0; + info->a0[slot][1] *= w0; } } else if (i == 2) { - point->inputs.a0[slot][2] = 0.0f; - point->inputs.dadx[slot][2] = 0.0f; - point->inputs.dady[slot][2] = 0.0f; + info->a0[slot][2] = 0.0f; + info->dadx[slot][2] = 0.0f; + info->dady[slot][2] = 0.0f; } else { - point->inputs.a0[slot][3] = perspective ? w0 : 1.0f; - point->inputs.dadx[slot][3] = 0.0f; - point->inputs.dady[slot][3] = 0.0f; + info->a0[slot][3] = perspective ? w0 : 1.0f; + info->dadx[slot][3] = 0.0f; + info->dady[slot][3] = 0.0f; } } @@ -166,33 +168,32 @@ texcoord_coef(struct lp_setup_context *setup, */ static void setup_point_fragcoord_coef(struct lp_setup_context *setup, - struct lp_rast_triangle *point, - const struct point_info *info, + struct point_info *info, unsigned slot, unsigned usage_mask) { /*X*/ if (usage_mask & TGSI_WRITEMASK_X) { - point->inputs.a0[slot][0] = 0.0; - point->inputs.dadx[slot][0] = 1.0; - point->inputs.dady[slot][0] = 0.0; + info->a0[slot][0] = 0.0; + info->dadx[slot][0] = 1.0; + info->dady[slot][0] = 0.0; } /*Y*/ if (usage_mask & TGSI_WRITEMASK_Y) { - point->inputs.a0[slot][1] = 0.0; - point->inputs.dadx[slot][1] = 0.0; - point->inputs.dady[slot][1] = 1.0; + info->a0[slot][1] = 0.0; + info->dadx[slot][1] = 0.0; + info->dady[slot][1] = 1.0; } /*Z*/ if (usage_mask & TGSI_WRITEMASK_Z) { - constant_coef(setup, point, slot, info->v0[0][2], 2); + constant_coef(setup, info, slot, info->v0[0][2], 2); } /*W*/ if (usage_mask & TGSI_WRITEMASK_W) { - constant_coef(setup, point, slot, info->v0[0][3], 3); + constant_coef(setup, info, slot, info->v0[0][3], 3); } } @@ -202,8 +203,7 @@ setup_point_fragcoord_coef(struct lp_setup_context *setup, */ static void setup_point_coefficients( struct lp_setup_context *setup, - struct lp_rast_triangle *point, - const struct point_info *info) + struct point_info *info) { const struct lp_fragment_shader *shader = setup->fs.current.variant->shader; unsigned fragcoord_usage_mask = TGSI_WRITEMASK_XYZ; @@ -248,7 +248,7 @@ setup_point_coefficients( struct lp_setup_context *setup, (setup->sprite_coord_enable & (1 << semantic_index))) { for (i = 0; i < NUM_CHANNELS; i++) { if (usage_mask & (1 << i)) { - texcoord_coef(setup, point, info, slot + 1, i, + texcoord_coef(setup, info, slot + 1, i, setup->sprite_coord_origin, perspective); } @@ -261,10 +261,10 @@ setup_point_coefficients( struct lp_setup_context *setup, for (i = 0; i < NUM_CHANNELS; i++) { if (usage_mask & (1 << i)) { if (perspective) { - point_persp_coeff(setup, point, info, slot+1, i); + point_persp_coeff(setup, info, slot+1, i); } else { - constant_coef(setup, point, slot+1, info->v0[vert_attr][i], i); + constant_coef(setup, info, slot+1, info->v0[vert_attr][i], i); } } } @@ -273,7 +273,7 @@ setup_point_coefficients( struct lp_setup_context *setup, case LP_INTERP_FACING: for (i = 0; i < NUM_CHANNELS; i++) if (usage_mask & (1 << i)) - constant_coef(setup, point, slot+1, 1.0, i); + constant_coef(setup, info, slot+1, 1.0, i); break; default: @@ -284,7 +284,7 @@ setup_point_coefficients( struct lp_setup_context *setup, /* The internal position input is in slot zero: */ - setup_point_fragcoord_coef(setup, point, info, 0, + setup_point_fragcoord_coef(setup, info, 0, fragcoord_usage_mask); } @@ -368,39 +368,44 @@ try_setup_point( struct lp_setup_context *setup, info.dx12 = fixed_width; info.dy01 = fixed_width; info.dy12 = 0; + info.a0 = GET_A0(&point->inputs); + info.dadx = GET_DADX(&point->inputs); + info.dady = GET_DADY(&point->inputs); /* Setup parameter interpolants: */ - setup_point_coefficients(setup, point, &info); + setup_point_coefficients(setup, &info); point->inputs.frontfacing = TRUE; point->inputs.disable = FALSE; point->inputs.opaque = FALSE; { - point->plane[0].dcdx = -1; - point->plane[0].dcdy = 0; - point->plane[0].c = 1-bbox.x0; - point->plane[0].ei = 0; - point->plane[0].eo = 1; - - point->plane[1].dcdx = 1; - point->plane[1].dcdy = 0; - point->plane[1].c = bbox.x1+1; - point->plane[1].ei = -1; - point->plane[1].eo = 0; - - point->plane[2].dcdx = 0; - point->plane[2].dcdy = 1; - point->plane[2].c = 1-bbox.y0; - point->plane[2].ei = 0; - point->plane[2].eo = 1; - - point->plane[3].dcdx = 0; - point->plane[3].dcdy = -1; - point->plane[3].c = bbox.y1+1; - point->plane[3].ei = -1; - point->plane[3].eo = 0; + struct lp_rast_plane *plane = GET_PLANES(point); + + plane[0].dcdx = -1; + plane[0].dcdy = 0; + plane[0].c = 1-bbox.x0; + plane[0].ei = 0; + plane[0].eo = 1; + + plane[1].dcdx = 1; + plane[1].dcdy = 0; + plane[1].c = bbox.x1+1; + plane[1].ei = -1; + plane[1].eo = 0; + + plane[2].dcdx = 0; + plane[2].dcdy = 1; + plane[2].c = 1-bbox.y0; + plane[2].ei = 0; + plane[2].eo = 1; + + plane[3].dcdx = 0; + plane[3].dcdy = -1; + plane[3].c = bbox.y1+1; + plane[3].ei = -1; + plane[3].eo = 0; } return lp_setup_bin_triangle(setup, point, &bbox, nr_planes); diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 3bf0b2d2522..937821b4c3a 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -75,24 +75,25 @@ lp_setup_alloc_triangle(struct lp_scene *scene, unsigned *tri_size) { unsigned input_array_sz = NUM_CHANNELS * (nr_inputs + 1) * sizeof(float); + unsigned plane_sz = nr_planes * sizeof(struct lp_rast_plane); struct lp_rast_triangle *tri; - unsigned tri_bytes, bytes; - char *inputs; - tri_bytes = align(Offset(struct lp_rast_triangle, plane[nr_planes]), 16); - bytes = tri_bytes + (3 * input_array_sz); - - tri = lp_scene_alloc_aligned( scene, bytes, 16 ); + *tri_size = (sizeof(struct lp_rast_triangle) + + 3 * input_array_sz + + plane_sz); + tri = lp_scene_alloc_aligned( scene, *tri_size, 16 ); if (tri) { - inputs = ((char *)tri) + tri_bytes; - tri->inputs.a0 = (float (*)[4]) inputs; - tri->inputs.dadx = (float (*)[4]) (inputs + input_array_sz); - tri->inputs.dady = (float (*)[4]) (inputs + 2 * input_array_sz); + tri->inputs.stride = input_array_sz; + } - *tri_size = bytes; + { + char *a = (char *)tri; + char *b = (char *)&GET_PLANES(tri)[nr_planes]; + assert(b - a == *tri_size); } + return tri; } @@ -228,6 +229,7 @@ do_triangle_ccw(struct lp_setup_context *setup, { struct lp_scene *scene = setup->scene; struct lp_rast_triangle *tri; + struct lp_rast_plane *plane; int x[3]; int y[3]; struct u_rect bbox; @@ -296,7 +298,7 @@ do_triangle_ccw(struct lp_setup_context *setup, if (!tri) return FALSE; -#ifdef DEBUG +#if 0 tri->v[0][0] = v0[0][0]; tri->v[1][0] = v1[0][0]; tri->v[2][0] = v2[0][0]; @@ -305,13 +307,14 @@ do_triangle_ccw(struct lp_setup_context *setup, tri->v[2][1] = v2[0][1]; #endif - tri->plane[0].dcdy = x[0] - x[1]; - tri->plane[1].dcdy = x[1] - x[2]; - tri->plane[2].dcdy = x[2] - x[0]; + plane = GET_PLANES(tri); + plane[0].dcdy = x[0] - x[1]; + plane[1].dcdy = x[1] - x[2]; + plane[2].dcdy = x[2] - x[0]; - tri->plane[0].dcdx = y[0] - y[1]; - tri->plane[1].dcdx = y[1] - y[2]; - tri->plane[2].dcdx = y[2] - y[0]; + plane[0].dcdx = y[0] - y[1]; + plane[1].dcdx = y[1] - y[2]; + plane[2].dcdx = y[2] - y[0]; LP_COUNT(nr_tris); @@ -325,12 +328,10 @@ do_triangle_ccw(struct lp_setup_context *setup, for (i = 0; i < 3; i++) { - struct lp_rast_plane *plane = &tri->plane[i]; - /* half-edge constants, will be interated over the whole render * target. */ - plane->c = plane->dcdx * x[i] - plane->dcdy * y[i]; + plane[i].c = plane[i].dcdx * x[i] - plane[i].dcdy * y[i]; /* correct for top-left vs. bottom-left fill convention. * @@ -345,38 +346,38 @@ do_triangle_ccw(struct lp_setup_context *setup, * to its usual method, in which case it will probably want * to use the opposite, top-left convention. */ - if (plane->dcdx < 0) { + if (plane[i].dcdx < 0) { /* both fill conventions want this - adjust for left edges */ - plane->c++; + plane[i].c++; } - else if (plane->dcdx == 0) { + else if (plane[i].dcdx == 0) { if (setup->pixel_offset == 0) { /* correct for top-left fill convention: */ - if (plane->dcdy > 0) plane->c++; + if (plane[i].dcdy > 0) plane[i].c++; } else { /* correct for bottom-left fill convention: */ - if (plane->dcdy < 0) plane->c++; + if (plane[i].dcdy < 0) plane[i].c++; } } - plane->dcdx *= FIXED_ONE; - plane->dcdy *= FIXED_ONE; + plane[i].dcdx *= FIXED_ONE; + plane[i].dcdy *= FIXED_ONE; /* find trivial reject offsets for each edge for a single-pixel * sized block. These will be scaled up at each recursive level to * match the active blocksize. Scaling in this way works best if * the blocks are square. */ - plane->eo = 0; - if (plane->dcdx < 0) plane->eo -= plane->dcdx; - if (plane->dcdy > 0) plane->eo += plane->dcdy; + plane[i].eo = 0; + if (plane[i].dcdx < 0) plane[i].eo -= plane[i].dcdx; + if (plane[i].dcdy > 0) plane[i].eo += plane[i].dcdy; /* Calculate trivial accept offsets from the above. */ - plane->ei = plane->dcdy - plane->dcdx - plane->eo; + plane[i].ei = plane[i].dcdy - plane[i].dcdx - plane[i].eo; } @@ -399,29 +400,29 @@ do_triangle_ccw(struct lp_setup_context *setup, * these planes elsewhere. */ if (nr_planes == 7) { - tri->plane[3].dcdx = -1; - tri->plane[3].dcdy = 0; - tri->plane[3].c = 1-bbox.x0; - tri->plane[3].ei = 0; - tri->plane[3].eo = 1; - - tri->plane[4].dcdx = 1; - tri->plane[4].dcdy = 0; - tri->plane[4].c = bbox.x1+1; - tri->plane[4].ei = -1; - tri->plane[4].eo = 0; - - tri->plane[5].dcdx = 0; - tri->plane[5].dcdy = 1; - tri->plane[5].c = 1-bbox.y0; - tri->plane[5].ei = 0; - tri->plane[5].eo = 1; - - tri->plane[6].dcdx = 0; - tri->plane[6].dcdy = -1; - tri->plane[6].c = bbox.y1+1; - tri->plane[6].ei = -1; - tri->plane[6].eo = 0; + plane[3].dcdx = -1; + plane[3].dcdy = 0; + plane[3].c = 1-bbox.x0; + plane[3].ei = 0; + plane[3].eo = 1; + + plane[4].dcdx = 1; + plane[4].dcdy = 0; + plane[4].c = bbox.x1+1; + plane[4].ei = -1; + plane[4].eo = 0; + + plane[5].dcdx = 0; + plane[5].dcdy = 1; + plane[5].c = 1-bbox.y0; + plane[5].ei = 0; + plane[5].eo = 1; + + plane[6].dcdx = 0; + plane[6].dcdy = -1; + plane[6].c = bbox.y1+1; + plane[6].ei = -1; + plane[6].eo = 0; } return lp_setup_bin_triangle( setup, tri, &bbox, nr_planes ); @@ -525,6 +526,7 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, } else { + struct lp_rast_plane *plane = GET_PLANES(tri); int c[MAX_PLANES]; int ei[MAX_PLANES]; int eo[MAX_PLANES]; @@ -538,14 +540,14 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, int iy1 = bbox->y1 / TILE_SIZE; for (i = 0; i < nr_planes; i++) { - c[i] = (tri->plane[i].c + - tri->plane[i].dcdy * iy0 * TILE_SIZE - - tri->plane[i].dcdx * ix0 * TILE_SIZE); - - ei[i] = tri->plane[i].ei << TILE_ORDER; - eo[i] = tri->plane[i].eo << TILE_ORDER; - xstep[i] = -(tri->plane[i].dcdx << TILE_ORDER); - ystep[i] = tri->plane[i].dcdy << TILE_ORDER; + c[i] = (plane[i].c + + plane[i].dcdy * iy0 * TILE_SIZE - + plane[i].dcdx * ix0 * TILE_SIZE); + + ei[i] = plane[i].ei << TILE_ORDER; + eo[i] = plane[i].eo << TILE_ORDER; + xstep[i] = -(plane[i].dcdx << TILE_ORDER); + ystep[i] = plane[i].dcdy << TILE_ORDER; } -- cgit v1.2.3 From 8965f042b327ad8697963e757f4607f4bb13a045 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 15 Oct 2010 13:04:19 +0100 Subject: llvmpipe: don't store plane.ei value in binned data Further reduce the size of a binned triangle. --- src/gallium/drivers/llvmpipe/lp_rast.h | 3 --- src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h | 6 ++++-- src/gallium/drivers/llvmpipe/lp_setup_line.c | 8 -------- src/gallium/drivers/llvmpipe/lp_setup_point.c | 4 ---- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 13 ++++--------- 5 files changed, 8 insertions(+), 26 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h index 8d8b6210ec7..a64c152cf83 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.h +++ b/src/gallium/drivers/llvmpipe/lp_rast.h @@ -100,9 +100,6 @@ struct lp_rast_plane { /* one-pixel sized trivial reject offsets for each plane */ int eo; - - /* one-pixel sized trivial accept offsets for each plane */ - int ei; }; /** diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h index 9976996719a..4825d651c04 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h @@ -82,7 +82,8 @@ TAG(do_block_16)(struct lp_rasterizer_task *task, const int dcdx = -plane[j].dcdx * 4; const int dcdy = plane[j].dcdy * 4; const int cox = plane[j].eo * 4; - const int cio = plane[j].ei * 4 - 1; + const int ei = plane[j].dcdy - plane[j].dcdx - plane[j].eo; + const int cio = ei * 4 - 1; build_masks(c[j] + cox, cio - cox, @@ -181,7 +182,8 @@ TAG(lp_rast_triangle)(struct lp_rasterizer_task *task, const int dcdx = -plane[j].dcdx * 16; const int dcdy = plane[j].dcdy * 16; const int cox = plane[j].eo * 16; - const int cio = plane[j].ei * 16 - 1; + const int ei = plane[j].dcdy - plane[j].dcdx - plane[j].eo; + const int cio = ei * 16 - 1; build_masks(c[j] + cox, cio - cox, diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index 2fd9f2e2f2a..ece8638b5a6 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -654,10 +654,6 @@ try_setup_line( struct lp_setup_context *setup, plane[i].eo = 0; if (plane[i].dcdx < 0) plane[i].eo -= plane[i].dcdx; if (plane[i].dcdy > 0) plane[i].eo += plane[i].dcdy; - - /* Calculate trivial accept offsets from the above. - */ - plane[i].ei = plane[i].dcdy - plane[i].dcdx - plane[i].eo; } @@ -683,25 +679,21 @@ try_setup_line( struct lp_setup_context *setup, plane[4].dcdx = -1; plane[4].dcdy = 0; plane[4].c = 1-bbox.x0; - plane[4].ei = 0; plane[4].eo = 1; plane[5].dcdx = 1; plane[5].dcdy = 0; plane[5].c = bbox.x1+1; - plane[5].ei = -1; plane[5].eo = 0; plane[6].dcdx = 0; plane[6].dcdy = 1; plane[6].c = 1-bbox.y0; - plane[6].ei = 0; plane[6].eo = 1; plane[7].dcdx = 0; plane[7].dcdy = -1; plane[7].c = bbox.y1+1; - plane[7].ei = -1; plane[7].eo = 0; } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index e30e70e16d2..16d21df35e2 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -386,25 +386,21 @@ try_setup_point( struct lp_setup_context *setup, plane[0].dcdx = -1; plane[0].dcdy = 0; plane[0].c = 1-bbox.x0; - plane[0].ei = 0; plane[0].eo = 1; plane[1].dcdx = 1; plane[1].dcdy = 0; plane[1].c = bbox.x1+1; - plane[1].ei = -1; plane[1].eo = 0; plane[2].dcdx = 0; plane[2].dcdy = 1; plane[2].c = 1-bbox.y0; - plane[2].ei = 0; plane[2].eo = 1; plane[3].dcdx = 0; plane[3].dcdy = -1; plane[3].c = bbox.y1+1; - plane[3].ei = -1; plane[3].eo = 0; } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 937821b4c3a..6ceda80a716 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -374,10 +374,6 @@ do_triangle_ccw(struct lp_setup_context *setup, plane[i].eo = 0; if (plane[i].dcdx < 0) plane[i].eo -= plane[i].dcdx; if (plane[i].dcdy > 0) plane[i].eo += plane[i].dcdy; - - /* Calculate trivial accept offsets from the above. - */ - plane[i].ei = plane[i].dcdy - plane[i].dcdx - plane[i].eo; } @@ -403,25 +399,21 @@ do_triangle_ccw(struct lp_setup_context *setup, plane[3].dcdx = -1; plane[3].dcdy = 0; plane[3].c = 1-bbox.x0; - plane[3].ei = 0; plane[3].eo = 1; plane[4].dcdx = 1; plane[4].dcdy = 0; plane[4].c = bbox.x1+1; - plane[4].ei = -1; plane[4].eo = 0; plane[5].dcdx = 0; plane[5].dcdy = 1; plane[5].c = 1-bbox.y0; - plane[5].ei = 0; plane[5].eo = 1; plane[6].dcdx = 0; plane[6].dcdy = -1; plane[6].c = bbox.y1+1; - plane[6].ei = -1; plane[6].eo = 0; } @@ -544,7 +536,10 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, plane[i].dcdy * iy0 * TILE_SIZE - plane[i].dcdx * ix0 * TILE_SIZE); - ei[i] = plane[i].ei << TILE_ORDER; + ei[i] = (plane[i].dcdy - + plane[i].dcdx - + plane[i].eo) << TILE_ORDER; + eo[i] = plane[i].eo << TILE_ORDER; xstep[i] = -(plane[i].dcdx << TILE_ORDER); ystep[i] = plane[i].dcdy << TILE_ORDER; -- cgit v1.2.3 From 15f4e3a8b98b5f4ca2833c02192ed9e6c237c5c7 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 12 Oct 2010 18:58:05 +0100 Subject: gallium: move some intrinsics helpers to u_sse.h --- src/gallium/auxiliary/util/u_sse.h | 74 ++++++++++++++++++++++++++++++ src/gallium/drivers/llvmpipe/lp_rast_tri.c | 58 ----------------------- 2 files changed, 74 insertions(+), 58 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_sse.h b/src/gallium/auxiliary/util/u_sse.h index 8fd0e52a3a4..1df6c872677 100644 --- a/src/gallium/auxiliary/util/u_sse.h +++ b/src/gallium/auxiliary/util/u_sse.h @@ -71,6 +71,12 @@ _mm_castps_si128(__m128 a) #endif /* defined(_MSC_VER) && _MSC_VER < 1500 */ +union m128i { + __m128i m; + ubyte ub[16]; + ushort us[8]; + uint ui[4]; +}; static INLINE void u_print_epi8(const char *name, __m128i r) { @@ -149,6 +155,12 @@ static INLINE void u_print_ps(const char *name, __m128 r) } +#define U_DUMP_EPI32(a) u_print_epi32(#a, a) +#define U_DUMP_EPI16(a) u_print_epi16(#a, a) +#define U_DUMP_EPI8(a) u_print_epi8(#a, a) +#define U_DUMP_PS(a) u_print_ps(#a, a) + + #if defined(PIPE_ARCH_SSSE3) @@ -176,6 +188,68 @@ _mm_shuffle_epi8(__m128i a, __m128i mask) #endif /* !PIPE_ARCH_SSSE3 */ + + +/* Provide an SSE2 implementation of _mm_mullo_epi32() in terms of + * _mm_mul_epu32(). + * + * I suspect this works fine for us because one of our operands is + * always positive, but not sure that this can be used for general + * signed integer multiplication. + * + * This seems close enough to the speed of SSE4 and the real + * _mm_mullo_epi32() intrinsic as to not justify adding an sse4 + * dependency at this point. + */ +static INLINE __m128i mm_mullo_epi32(const __m128i a, const __m128i b) +{ + __m128i a4 = _mm_srli_epi64(a, 32); /* shift by one dword */ + __m128i b4 = _mm_srli_epi64(b, 32); /* shift by one dword */ + __m128i ba = _mm_mul_epu32(b, a); /* multply dwords 0, 2 */ + __m128i b4a4 = _mm_mul_epu32(b4, a4); /* multiply dwords 1, 3 */ + + /* Interleave the results, either with shuffles or (slightly + * faster) direct bit operations: + */ +#if 0 + __m128i ba8 = _mm_shuffle_epi32(ba, 8); + __m128i b4a48 = _mm_shuffle_epi32(b4a4, 8); + __m128i result = _mm_unpacklo_epi32(ba8, b4a48); +#else + __m128i mask = _mm_setr_epi32(~0,0,~0,0); + __m128i ba_mask = _mm_and_si128(ba, mask); + __m128i b4a4_mask_shift = _mm_slli_epi64(b4a4, 32); + __m128i result = _mm_or_si128(ba_mask, b4a4_mask_shift); +#endif + + return result; +} + + +static INLINE void +transpose4_epi32(const __m128i * restrict a, + const __m128i * restrict b, + const __m128i * restrict c, + const __m128i * restrict d, + __m128i * restrict o, + __m128i * restrict p, + __m128i * restrict q, + __m128i * restrict r) +{ + __m128i t0 = _mm_unpacklo_epi32(*a, *b); + __m128i t1 = _mm_unpacklo_epi32(*c, *d); + __m128i t2 = _mm_unpackhi_epi32(*a, *b); + __m128i t3 = _mm_unpackhi_epi32(*c, *d); + + *o = _mm_unpacklo_epi64(t0, t1); + *p = _mm_unpackhi_epi64(t0, t1); + *q = _mm_unpacklo_epi64(t2, t3); + *r = _mm_unpackhi_epi64(t2, t3); +} + +#define SCALAR_EPI32(m, i) _mm_shuffle_epi32((m), _MM_SHUFFLE(i,i,i,i)) + + #endif /* PIPE_ARCH_SSE */ #endif /* U_SSE_H_ */ diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index 5bdf19712f4..659eb1cac3a 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -240,68 +240,10 @@ sign_bits4(const __m128i *cstep, int cdiff) } -static INLINE void -transpose4_epi32(const __m128i * restrict a, - const __m128i * restrict b, - const __m128i * restrict c, - const __m128i * restrict d, - __m128i * restrict o, - __m128i * restrict p, - __m128i * restrict q, - __m128i * restrict r) -{ - __m128i t0 = _mm_unpacklo_epi32(*a, *b); - __m128i t1 = _mm_unpacklo_epi32(*c, *d); - __m128i t2 = _mm_unpackhi_epi32(*a, *b); - __m128i t3 = _mm_unpackhi_epi32(*c, *d); - - *o = _mm_unpacklo_epi64(t0, t1); - *p = _mm_unpackhi_epi64(t0, t1); - *q = _mm_unpacklo_epi64(t2, t3); - *r = _mm_unpackhi_epi64(t2, t3); -} - - -#define SCALAR_EPI32(m, i) _mm_shuffle_epi32((m), _MM_SHUFFLE(i,i,i,i)) - #define NR_PLANES 3 -/* Provide an SSE2 implementation of _mm_mullo_epi32() in terms of - * _mm_mul_epu32(). - * - * I suspect this works fine for us because one of our operands is - * always positive, but not sure that this can be used for general - * signed integer multiplication. - * - * This seems close enough to the speed of SSE4 and the real - * _mm_mullo_epi32() intrinsic as to not justify adding an sse4 - * dependency at this point. - */ -static INLINE __m128i mm_mullo_epi32(const __m128i a, const __m128i b) -{ - __m128i a4 = _mm_srli_epi64(a, 32); /* shift by one dword */ - __m128i b4 = _mm_srli_epi64(b, 32); /* shift by one dword */ - __m128i ba = _mm_mul_epu32(b, a); /* multply dwords 0, 2 */ - __m128i b4a4 = _mm_mul_epu32(b4, a4); /* multiply dwords 1, 3 */ - - /* Interleave the results, either with shuffles or (slightly - * faster) direct bit operations: - */ -#if 0 - __m128i ba8 = _mm_shuffle_epi32(ba, 8); - __m128i b4a48 = _mm_shuffle_epi32(b4a4, 8); - __m128i result = _mm_unpacklo_epi32(ba8, b4a48); -#else - __m128i mask = _mm_setr_epi32(~0,0,~0,0); - __m128i ba_mask = _mm_and_si128(ba, mask); - __m128i b4a4_mask_shift = _mm_slli_epi64(b4a4, 32); - __m128i result = _mm_or_si128(ba_mask, b4a4_mask_shift); -#endif - - return result; -} -- cgit v1.2.3 From 9f9a17eba8d6080bf30f17c8a7eaed97b10a559f Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 12 Oct 2010 18:59:15 +0100 Subject: llvmpipe: do plane calculations with intrinsics This is a step towards moving this code into the rasterizer. --- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 205 ++++++++++++++++++++-------- 1 file changed, 148 insertions(+), 57 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 6ceda80a716..49ded9e0452 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -32,6 +32,7 @@ #include "util/u_math.h" #include "util/u_memory.h" #include "util/u_rect.h" +#include "util/u_sse.h" #include "lp_perf.h" #include "lp_setup_context.h" #include "lp_setup_coef.h" @@ -40,7 +41,9 @@ #define NUM_CHANNELS 4 - +#if defined(PIPE_ARCH_SSE) +#include +#endif static INLINE int subpixel_snap(float a) @@ -230,11 +233,10 @@ do_triangle_ccw(struct lp_setup_context *setup, struct lp_scene *scene = setup->scene; struct lp_rast_triangle *tri; struct lp_rast_plane *plane; - int x[3]; - int y[3]; + int x[4]; + int y[4]; struct u_rect bbox; unsigned tri_bytes; - int i; int nr_planes = 3; if (0) @@ -251,10 +253,12 @@ do_triangle_ccw(struct lp_setup_context *setup, x[0] = subpixel_snap(v0[0][0] - setup->pixel_offset); x[1] = subpixel_snap(v1[0][0] - setup->pixel_offset); x[2] = subpixel_snap(v2[0][0] - setup->pixel_offset); + x[3] = 0; y[0] = subpixel_snap(v0[0][1] - setup->pixel_offset); y[1] = subpixel_snap(v1[0][1] - setup->pixel_offset); y[2] = subpixel_snap(v2[0][1] - setup->pixel_offset); - + y[3] = 0; + /* Bounding rectangle (in pixels) */ { @@ -307,15 +311,6 @@ do_triangle_ccw(struct lp_setup_context *setup, tri->v[2][1] = v2[0][1]; #endif - plane = GET_PLANES(tri); - plane[0].dcdy = x[0] - x[1]; - plane[1].dcdy = x[1] - x[2]; - plane[2].dcdy = x[2] - x[0]; - - plane[0].dcdx = y[0] - y[1]; - plane[1].dcdx = y[1] - y[2]; - plane[2].dcdx = y[2] - y[0]; - LP_COUNT(nr_tris); /* Setup parameter interpolants: @@ -326,54 +321,150 @@ do_triangle_ccw(struct lp_setup_context *setup, tri->inputs.disable = FALSE; tri->inputs.opaque = setup->fs.current.variant->opaque; - - for (i = 0; i < 3; i++) { - /* half-edge constants, will be interated over the whole render - * target. + plane = GET_PLANES(tri); + +#if defined(PIPE_ARCH_SSE) + { + __m128i vertx, verty; + __m128i shufx, shufy; + __m128i dcdx, dcdy, c; + __m128i unused; + __m128i dcdx_neg_mask; + __m128i dcdy_neg_mask; + __m128i dcdx_zero_mask; + __m128i top_left_flag; + __m128i c_inc_mask, c_inc; + __m128i eo, p0, p1, p2; + __m128i zero = _mm_setzero_si128(); + + vertx = _mm_loadu_si128((__m128i *)x); /* vertex x coords */ + verty = _mm_loadu_si128((__m128i *)y); /* vertex y coords */ + + shufx = _mm_shuffle_epi32(vertx, _MM_SHUFFLE(3,0,2,1)); + shufy = _mm_shuffle_epi32(verty, _MM_SHUFFLE(3,0,2,1)); + + dcdx = _mm_sub_epi32(verty, shufy); + dcdy = _mm_sub_epi32(vertx, shufx); + + dcdx_neg_mask = _mm_srai_epi32(dcdx, 31); + dcdx_zero_mask = _mm_cmpeq_epi32(dcdx, zero); + dcdy_neg_mask = _mm_srai_epi32(dcdy, 31); + + top_left_flag = _mm_set1_epi32((setup->pixel_offset == 0) ? ~0 : 0); + + c_inc_mask = _mm_or_si128(dcdx_neg_mask, + _mm_and_si128(dcdx_zero_mask, + _mm_xor_si128(dcdy_neg_mask, + top_left_flag))); + + c_inc = _mm_srli_epi32(c_inc_mask, 31); + + c = _mm_sub_epi32(mm_mullo_epi32(dcdx, vertx), + mm_mullo_epi32(dcdy, verty)); + + c = _mm_add_epi32(c, c_inc); + + /* Scale up to match c: */ - plane[i].c = plane[i].dcdx * x[i] - plane[i].dcdy * y[i]; - - /* correct for top-left vs. bottom-left fill convention. - * - * note that we're overloading gl_rasterization_rules to mean - * both (0.5,0.5) pixel centers *and* bottom-left filling - * convention. - * - * GL actually has a top-left filling convention, but GL's - * notion of "top" differs from gallium's... - * - * Also, sometimes (in FBO cases) GL will render upside down - * to its usual method, in which case it will probably want - * to use the opposite, top-left convention. - */ - if (plane[i].dcdx < 0) { - /* both fill conventions want this - adjust for left edges */ - plane[i].c++; - } - else if (plane[i].dcdx == 0) { - if (setup->pixel_offset == 0) { - /* correct for top-left fill convention: - */ - if (plane[i].dcdy > 0) plane[i].c++; + dcdx = _mm_slli_epi32(dcdx, FIXED_ORDER); + dcdy = _mm_slli_epi32(dcdy, FIXED_ORDER); + + /* Calculate trivial reject values: + */ + eo = _mm_sub_epi32(_mm_andnot_si128(dcdy_neg_mask, dcdy), + _mm_and_si128(dcdx_neg_mask, dcdx)); + + /* ei = _mm_sub_epi32(_mm_sub_epi32(dcdy, dcdx), eo); */ + + /* Pointless transpose which gets undone immediately in + * rasterization: + */ + transpose4_epi32(&c, &dcdx, &dcdy, &eo, + &p0, &p1, &p2, &unused); + + _mm_storeu_si128((__m128i *)&plane[0], p0); + _mm_storeu_si128((__m128i *)&plane[1], p1); + _mm_storeu_si128((__m128i *)&plane[2], p2); + } +#else + { + int i; + plane[0].dcdy = x[0] - x[1]; + plane[1].dcdy = x[1] - x[2]; + plane[2].dcdy = x[2] - x[0]; + plane[0].dcdx = y[0] - y[1]; + plane[1].dcdx = y[1] - y[2]; + plane[2].dcdx = y[2] - y[0]; + + for (i = 0; i < 3; i++) { + /* half-edge constants, will be interated over the whole render + * target. + */ + plane[i].c = plane[i].dcdx * x[i] - plane[i].dcdy * y[i]; + + /* correct for top-left vs. bottom-left fill convention. + * + * note that we're overloading gl_rasterization_rules to mean + * both (0.5,0.5) pixel centers *and* bottom-left filling + * convention. + * + * GL actually has a top-left filling convention, but GL's + * notion of "top" differs from gallium's... + * + * Also, sometimes (in FBO cases) GL will render upside down + * to its usual method, in which case it will probably want + * to use the opposite, top-left convention. + */ + if (plane[i].dcdx < 0) { + /* both fill conventions want this - adjust for left edges */ + plane[i].c++; } - else { - /* correct for bottom-left fill convention: - */ - if (plane[i].dcdy < 0) plane[i].c++; + else if (plane[i].dcdx == 0) { + if (setup->pixel_offset == 0) { + /* correct for top-left fill convention: + */ + if (plane[i].dcdy > 0) plane[i].c++; + } + else { + /* correct for bottom-left fill convention: + */ + if (plane[i].dcdy < 0) plane[i].c++; + } } - } - plane[i].dcdx *= FIXED_ONE; - plane[i].dcdy *= FIXED_ONE; + plane[i].dcdx *= FIXED_ONE; + plane[i].dcdy *= FIXED_ONE; - /* find trivial reject offsets for each edge for a single-pixel - * sized block. These will be scaled up at each recursive level to - * match the active blocksize. Scaling in this way works best if - * the blocks are square. - */ - plane[i].eo = 0; - if (plane[i].dcdx < 0) plane[i].eo -= plane[i].dcdx; - if (plane[i].dcdy > 0) plane[i].eo += plane[i].dcdy; + /* find trivial reject offsets for each edge for a single-pixel + * sized block. These will be scaled up at each recursive level to + * match the active blocksize. Scaling in this way works best if + * the blocks are square. + */ + plane[i].eo = 0; + if (plane[i].dcdx < 0) plane[i].eo -= plane[i].dcdx; + if (plane[i].dcdy > 0) plane[i].eo += plane[i].dcdy; + } + } +#endif + + if (0) { + debug_printf("p0: %08x/%08x/%08x/%08x\n", + plane[0].c, + plane[0].dcdx, + plane[0].dcdy, + plane[0].eo); + + debug_printf("p1: %08x/%08x/%08x/%08x\n", + plane[1].c, + plane[1].dcdx, + plane[1].dcdy, + plane[1].eo); + + debug_printf("p0: %08x/%08x/%08x/%08x\n", + plane[2].c, + plane[2].dcdx, + plane[2].dcdy, + plane[2].eo); } -- cgit v1.2.3 From 392b0954c265fdd66b2de99ab677d2e662935682 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 15 Oct 2010 13:52:00 +0100 Subject: llvmpipe: use aligned loads/stores for plane values --- src/gallium/drivers/llvmpipe/lp_rast_tri.c | 12 ++++++------ src/gallium/drivers/llvmpipe/lp_setup_tri.c | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index 659eb1cac3a..042c315635e 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -261,9 +261,9 @@ lp_rast_triangle_3_16(struct lp_rasterizer_task *task, struct { unsigned mask:16; unsigned i:8; unsigned j:8; } out[16]; unsigned nr = 0; - __m128i p0 = _mm_loadu_si128((__m128i *)&plane[0]); /* c, dcdx, dcdy, eo */ - __m128i p1 = _mm_loadu_si128((__m128i *)&plane[1]); /* c, dcdx, dcdy, eo */ - __m128i p2 = _mm_loadu_si128((__m128i *)&plane[2]); /* c, dcdx, dcdy, eo */ + __m128i p0 = _mm_load_si128((__m128i *)&plane[0]); /* c, dcdx, dcdy, eo */ + __m128i p1 = _mm_load_si128((__m128i *)&plane[1]); /* c, dcdx, dcdy, eo */ + __m128i p2 = _mm_load_si128((__m128i *)&plane[2]); /* c, dcdx, dcdy, eo */ __m128i zero = _mm_setzero_si128(); __m128i c; @@ -367,9 +367,9 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task, int x = (arg.triangle.plane_mask & 0xff) + task->x; int y = (arg.triangle.plane_mask >> 8) + task->y; - __m128i p0 = _mm_loadu_si128((__m128i *)&plane[0]); /* c, dcdx, dcdy, eo */ - __m128i p1 = _mm_loadu_si128((__m128i *)&plane[1]); /* c, dcdx, dcdy, eo */ - __m128i p2 = _mm_loadu_si128((__m128i *)&plane[2]); /* c, dcdx, dcdy, eo */ + __m128i p0 = _mm_load_si128((__m128i *)&plane[0]); /* c, dcdx, dcdy, eo */ + __m128i p1 = _mm_load_si128((__m128i *)&plane[1]); /* c, dcdx, dcdy, eo */ + __m128i p2 = _mm_load_si128((__m128i *)&plane[2]); /* c, dcdx, dcdy, eo */ __m128i zero = _mm_setzero_si128(); __m128i c; diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 49ded9e0452..c6cb9afda47 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -382,9 +382,9 @@ do_triangle_ccw(struct lp_setup_context *setup, transpose4_epi32(&c, &dcdx, &dcdy, &eo, &p0, &p1, &p2, &unused); - _mm_storeu_si128((__m128i *)&plane[0], p0); - _mm_storeu_si128((__m128i *)&plane[1], p1); - _mm_storeu_si128((__m128i *)&plane[2], p2); + _mm_store_si128((__m128i *)&plane[0], p0); + _mm_store_si128((__m128i *)&plane[1], p1); + _mm_store_si128((__m128i *)&plane[2], p2); } #else { -- cgit v1.2.3 From 39185efd3a891b0d66b1ded10d165dd9aee94464 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 15 Oct 2010 14:11:22 +0100 Subject: llvmpipe: fix non-sse build after recent changes --- src/gallium/drivers/llvmpipe/lp_setup_coef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_coef.c b/src/gallium/drivers/llvmpipe/lp_setup_coef.c index a835df6af24..95d6615bb95 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_coef.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_coef.c @@ -145,12 +145,12 @@ setup_fragcoord_coef(struct lp_tri_info *info, /*Z*/ if (usage_mask & TGSI_WRITEMASK_Z) { - linear_coef(inputs, info, slot, 0, 2); + linear_coef(info, slot, 0, 2); } /*W*/ if (usage_mask & TGSI_WRITEMASK_W) { - linear_coef(inputs, info, slot, 0, 3); + linear_coef(info, slot, 0, 3); } } -- cgit v1.2.3 From ffab84c9a27a229e6fa14c3de63868bb843c0f3e Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 15 Oct 2010 13:23:05 +0100 Subject: llvmpipe: check shader outputs are non-null before using --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 8df807cec88..c4b1b868b65 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -345,7 +345,7 @@ generate_fs(struct llvmpipe_context *lp, TGSI_SEMANTIC_COLOR, 0); - if (color0 != -1) { + if (color0 != -1 && outputs[color0][3]) { LLVMValueRef alpha = LLVMBuildLoad(builder, outputs[color0][3], "alpha"); LLVMValueRef alpha_ref_value; @@ -364,7 +364,7 @@ generate_fs(struct llvmpipe_context *lp, TGSI_SEMANTIC_POSITION, 0); - if (pos0 != -1) { + if (pos0 != -1 && outputs[pos0][2]) { z = LLVMBuildLoad(builder, outputs[pos0][2], "z"); lp_build_name(z, "output%u.%u.%c", i, pos0, "xyzw"[chan]); } -- cgit v1.2.3 From ac98519c4eed0daf770a9ba380056978e4420352 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 15 Oct 2010 13:23:30 +0100 Subject: llvmpipe: validate color outputs against key->nr_cbufs --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index c4b1b868b65..c070b55d3d1 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -404,7 +404,8 @@ generate_fs(struct llvmpipe_context *lp, /* Color write */ for (attrib = 0; attrib < shader->info.base.num_outputs; ++attrib) { - if (shader->info.base.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR) + if (shader->info.base.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR && + shader->info.base.output_semantic_index[attrib] < key->nr_cbufs) { unsigned cbuf = shader->info.base.output_semantic_index[attrib]; for(chan = 0; chan < NUM_CHANNELS; ++chan) { -- cgit v1.2.3 From 9c439e3c7af7fd1704d44e3ba1a013de7febde37 Mon Sep 17 00:00:00 2001 From: Xavier Chantry Date: Fri, 15 Oct 2010 15:53:13 +0200 Subject: nv50: apply layout_mask to tile_flags The tile_flags now store more than just nv50 page table entry bits. --- src/gallium/drivers/nv50/nv50_context.h | 3 +++ src/gallium/drivers/nv50/nv50_surface.c | 2 +- src/gallium/drivers/nv50/nv50_transfer.c | 10 +++++----- 3 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/nv50/nv50_context.h b/src/gallium/drivers/nv50/nv50_context.h index ac69c7848e9..bf6a577188b 100644 --- a/src/gallium/drivers/nv50/nv50_context.h +++ b/src/gallium/drivers/nv50/nv50_context.h @@ -26,6 +26,9 @@ #define NOUVEAU_MSG(fmt, args...) \ fprintf(stderr, "nouveau: "fmt, ##args); +#define nouveau_bo_tile_layout(nvbo) \ + ((nvbo)->tile_flags & NOUVEAU_BO_TILE_LAYOUT_MASK) + /* Constant buffer assignment */ #define NV50_CB_PMISC 0 #define NV50_CB_PVP 1 diff --git a/src/gallium/drivers/nv50/nv50_surface.c b/src/gallium/drivers/nv50/nv50_surface.c index 3f3166261b1..f70c138fe1a 100644 --- a/src/gallium/drivers/nv50/nv50_surface.c +++ b/src/gallium/drivers/nv50/nv50_surface.c @@ -92,7 +92,7 @@ nv50_surface_set(struct nv50_screen *screen, struct pipe_surface *ps, int dst) return 1; } - if (!bo->tile_flags) { + if (!nouveau_bo_tile_layout(bo)) { BEGIN_RING(chan, eng2d, mthd, 2); OUT_RING (chan, format); OUT_RING (chan, 1); diff --git a/src/gallium/drivers/nv50/nv50_transfer.c b/src/gallium/drivers/nv50/nv50_transfer.c index f973cf24b98..0cc2f4a837f 100644 --- a/src/gallium/drivers/nv50/nv50_transfer.c +++ b/src/gallium/drivers/nv50/nv50_transfer.c @@ -45,7 +45,7 @@ nv50_transfer_rect_m2mf(struct pipe_screen *pscreen, WAIT_RING (chan, 14); - if (!src_bo->tile_flags) { + if (!nouveau_bo_tile_layout(src_bo)) { BEGIN_RING(chan, m2mf, NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_IN, 1); OUT_RING (chan, 1); @@ -64,7 +64,7 @@ nv50_transfer_rect_m2mf(struct pipe_screen *pscreen, OUT_RING (chan, sz); /* copying only 1 zslice per call */ } - if (!dst_bo->tile_flags) { + if (!nouveau_bo_tile_layout(dst_bo)) { BEGIN_RING(chan, m2mf, NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_OUT, 1); OUT_RING (chan, 1); @@ -95,14 +95,14 @@ nv50_transfer_rect_m2mf(struct pipe_screen *pscreen, NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 2); OUT_RELOCl(chan, src_bo, src_offset, src_reloc); OUT_RELOCl(chan, dst_bo, dst_offset, dst_reloc); - if (src_bo->tile_flags) { + if (nouveau_bo_tile_layout(src_bo)) { BEGIN_RING(chan, m2mf, NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN, 1); OUT_RING (chan, (sy << 16) | (sx * cpp)); } else { src_offset += (line_count * src_pitch); } - if (dst_bo->tile_flags) { + if (nouveau_bo_tile_layout(dst_bo)) { BEGIN_RING(chan, m2mf, NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT, 1); OUT_RING (chan, (dy << 16) | (dx * cpp)); @@ -280,7 +280,7 @@ nv50_upload_sifc(struct nv50_context *nv50, MARK_RING (chan, 32, 2); /* flush on lack of space or relocs */ - if (bo->tile_flags) { + if (nouveau_bo_tile_layout(bo)) { BEGIN_RING(chan, eng2d, NV50_2D_DST_FORMAT, 5); OUT_RING (chan, dst_format); OUT_RING (chan, 0); -- cgit v1.2.3 From 992e7c72797545e5d7dac11c4714c107be07d41c Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Tue, 12 Oct 2010 18:41:24 +0100 Subject: llvmpipe: Move makefile include to before targets Or plain make inside of the directory wont build libllvmpipe.a --- src/gallium/drivers/llvmpipe/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/Makefile b/src/gallium/drivers/llvmpipe/Makefile index 55b877b4ab9..d71f09eeb37 100644 --- a/src/gallium/drivers/llvmpipe/Makefile +++ b/src/gallium/drivers/llvmpipe/Makefile @@ -63,12 +63,12 @@ PROGS := lp_test_format \ # Need this for the lp_test_*.o files CLEAN_EXTRA = *.o +include ../../Makefile.template + lp_test_sincos.o : sse_mathfun.h PROGS_DEPS := ../../auxiliary/libgallium.a -include ../../Makefile.template - lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxiliary/util/u_format_pack.py ../../auxiliary/util/u_format.csv python lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@ -- cgit v1.2.3 From f8f3baa43a3954b7078e5e24b41ae123f398bff8 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Fri, 15 Oct 2010 15:38:29 +0100 Subject: wrapper: Fix spelling --- src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h | 2 +- src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c | 2 +- src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h b/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h index 0b4e7404034..f686da6ac81 100644 --- a/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h +++ b/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h @@ -15,7 +15,7 @@ sw_screen_wrap(struct pipe_screen *screen) struct sw_winsys *sws; struct pipe_screen *sw_screen; - sws = wrapper_sw_winsys_warp_pipe_screen(screen); + sws = wrapper_sw_winsys_wrap_pipe_screen(screen); if (!sws) goto err; diff --git a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c index 3a76098b655..38cf29e6056 100644 --- a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c +++ b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c @@ -272,7 +272,7 @@ wsw_destroy(struct sw_winsys *ws) } struct sw_winsys * -wrapper_sw_winsys_warp_pipe_screen(struct pipe_screen *screen) +wrapper_sw_winsys_wrap_pipe_screen(struct pipe_screen *screen) { struct wrapper_sw_winsys *wsw = CALLOC_STRUCT(wrapper_sw_winsys); diff --git a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h index b5c25a3c50f..8a7086f19f5 100644 --- a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h +++ b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h @@ -30,6 +30,6 @@ struct sw_winsys; struct pipe_screen; -struct sw_winsys *wrapper_sw_winsys_warp_pipe_screen(struct pipe_screen *screen); +struct sw_winsys *wrapper_sw_winsys_wrap_pipe_screen(struct pipe_screen *screen); #endif -- cgit v1.2.3 From 44207ff71b3d53b30cf6c3e52c84ddc5cd44b424 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Fri, 15 Oct 2010 15:57:55 +0100 Subject: wrapper: Add a way to dewrap a pipe screen without destroying it --- .../auxiliary/target-helpers/inline_wrapper_sw_helper.h | 4 ++-- src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c | 13 +++++++++++++ src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h | 9 +++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h b/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h index f686da6ac81..f27e34a3002 100644 --- a/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h +++ b/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h @@ -26,9 +26,9 @@ sw_screen_wrap(struct pipe_screen *screen) return sw_screen; err_winsys: - sws->destroy(sws); + return wrapper_sw_winsys_dewrap_pipe_screen(sws); err: - return screen; + return screen; } #endif diff --git a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c index 38cf29e6056..bc2623e7b77 100644 --- a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c +++ b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c @@ -304,3 +304,16 @@ err_free: err: return NULL; } + +struct pipe_screen * +wrapper_sw_winsys_dewrap_pipe_screen(struct sw_winsys *ws) +{ + struct wrapper_sw_winsys *wsw = wrapper_sw_winsys(ws); + struct pipe_screen *screen = wsw->screen; + + wsw->pipe->destroy(wsw->pipe); + /* don't destroy the screen its needed later on */ + + FREE(wsw); + return screen; +} diff --git a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h index 8a7086f19f5..ae0196c432c 100644 --- a/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h +++ b/src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.h @@ -30,6 +30,15 @@ struct sw_winsys; struct pipe_screen; +/* + * Wrap a pipe screen. + */ struct sw_winsys *wrapper_sw_winsys_wrap_pipe_screen(struct pipe_screen *screen); +/* + * Destroy the sw_winsys and return the wrapped pipe_screen. + * Not destroying it as sw_winsys::destroy does. + */ +struct pipe_screen *wrapper_sw_winsys_dewrap_pipe_screen(struct sw_winsys *sw_winsys); + #endif -- cgit v1.2.3 From af729571eb4242bbe2e952e67a7dd54faf3245a8 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Fri, 15 Oct 2010 15:58:54 +0100 Subject: egl: Remove unnecessary headers --- src/gallium/targets/egl/pipe_i915.c | 1 - src/gallium/targets/egl/pipe_i965.c | 1 - 2 files changed, 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/targets/egl/pipe_i915.c b/src/gallium/targets/egl/pipe_i915.c index 758a921b481..cd74044d8c1 100644 --- a/src/gallium/targets/egl/pipe_i915.c +++ b/src/gallium/targets/egl/pipe_i915.c @@ -1,5 +1,4 @@ -#include "target-helpers/inline_wrapper_sw_helper.h" #include "target-helpers/inline_debug_helper.h" #include "state_tracker/drm_driver.h" #include "i915/drm/i915_drm_public.h" diff --git a/src/gallium/targets/egl/pipe_i965.c b/src/gallium/targets/egl/pipe_i965.c index 43bf646e825..ae452128b0b 100644 --- a/src/gallium/targets/egl/pipe_i965.c +++ b/src/gallium/targets/egl/pipe_i965.c @@ -1,5 +1,4 @@ -#include "target-helpers/inline_wrapper_sw_helper.h" #include "target-helpers/inline_debug_helper.h" #include "state_tracker/drm_driver.h" #include "i965/drm/i965_drm_public.h" -- cgit v1.2.3 From eb7cf3d2a64875d594e1c71b835a9e9704b7a8d6 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Fri, 15 Oct 2010 15:46:10 +0100 Subject: target-helpers: Remove per target software wrapper check Instead of having a NAME_SOFTWARE check just use the GALLIUM_DRIVER instead but set the default to native which is the same as not wrapped. --- .../auxiliary/target-helpers/inline_sw_helper.h | 39 +++++++++++++--------- .../target-helpers/inline_wrapper_sw_helper.h | 12 +++++-- src/gallium/targets/dri-i915/target.c | 3 +- src/gallium/targets/dri-i965/target.c | 3 +- src/gallium/targets/egl/pipe_i965.c | 3 +- src/gallium/targets/xorg-i965/intel_target.c | 3 +- 6 files changed, 37 insertions(+), 26 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h index 036c1ee48a8..34bfa527db0 100644 --- a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h +++ b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h @@ -23,25 +23,12 @@ #include "cell/ppu/cell_public.h" #endif + static INLINE struct pipe_screen * -sw_screen_create(struct sw_winsys *winsys) +sw_screen_create_named(struct sw_winsys *winsys, const char *driver) { - const char *default_driver; - const char *driver; struct pipe_screen *screen = NULL; -#if defined(GALLIUM_CELL) - default_driver = "cell"; -#elif defined(GALLIUM_LLVMPIPE) - default_driver = "llvmpipe"; -#elif defined(GALLIUM_SOFTPIPE) - default_driver = "softpipe"; -#else - default_driver = ""; -#endif - - driver = debug_get_option("GALLIUM_DRIVER", default_driver); - #if defined(GALLIUM_CELL) if (screen == NULL && strcmp(driver, "cell") == 0) screen = cell_create_screen(winsys); @@ -60,4 +47,26 @@ sw_screen_create(struct sw_winsys *winsys) return screen; } + +static INLINE struct pipe_screen * +sw_screen_create(struct sw_winsys *winsys) +{ + const char *default_driver; + const char *driver; + +#if defined(GALLIUM_CELL) + default_driver = "cell"; +#elif defined(GALLIUM_LLVMPIPE) + default_driver = "llvmpipe"; +#elif defined(GALLIUM_SOFTPIPE) + default_driver = "softpipe"; +#else + default_driver = ""; +#endif + + driver = debug_get_option("GALLIUM_DRIVER", default_driver); + return sw_screen_create_named(winsys, driver); +} + + #endif diff --git a/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h b/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h index f27e34a3002..e4effa713e9 100644 --- a/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h +++ b/src/gallium/auxiliary/target-helpers/inline_wrapper_sw_helper.h @@ -13,14 +13,20 @@ static INLINE struct pipe_screen * sw_screen_wrap(struct pipe_screen *screen) { struct sw_winsys *sws; - struct pipe_screen *sw_screen; + struct pipe_screen *sw_screen = NULL; + const char *driver; + + driver = debug_get_option("GALLIUM_DRIVER", "native"); + if (strcmp(driver, "native") == 0) + return screen; sws = wrapper_sw_winsys_wrap_pipe_screen(screen); if (!sws) goto err; - sw_screen = sw_screen_create(sws); - if (sw_screen == screen) + sw_screen = sw_screen_create_named(sws, driver); + + if (!sw_screen) goto err_winsys; return sw_screen; diff --git a/src/gallium/targets/dri-i915/target.c b/src/gallium/targets/dri-i915/target.c index 5ae6ca367d8..a27b7bd6d81 100644 --- a/src/gallium/targets/dri-i915/target.c +++ b/src/gallium/targets/dri-i915/target.c @@ -19,8 +19,7 @@ create_screen(int fd) if (!screen) return NULL; - if (debug_get_bool_option("I915_SOFTWARE", FALSE)) - screen = sw_screen_wrap(screen); + screen = sw_screen_wrap(screen); screen = debug_screen_wrap(screen); diff --git a/src/gallium/targets/dri-i965/target.c b/src/gallium/targets/dri-i965/target.c index ce97f820278..0632b97beaa 100644 --- a/src/gallium/targets/dri-i965/target.c +++ b/src/gallium/targets/dri-i965/target.c @@ -19,8 +19,7 @@ create_screen(int fd) if (!screen) return NULL; - if (debug_get_bool_option("BRW_SOFTPIPE", FALSE)) - screen = sw_screen_wrap(screen); + screen = sw_screen_wrap(screen); screen = debug_screen_wrap(screen); diff --git a/src/gallium/targets/egl/pipe_i965.c b/src/gallium/targets/egl/pipe_i965.c index ae452128b0b..6b886fb3f14 100644 --- a/src/gallium/targets/egl/pipe_i965.c +++ b/src/gallium/targets/egl/pipe_i965.c @@ -18,8 +18,7 @@ create_screen(int fd) if (!screen) return NULL; - if (debug_get_bool_option("BRW_SOFTPIPE", FALSE)) - screen = sw_screen_wrap(screen); + screen = sw_screen_wrap(screen); screen = debug_screen_wrap(screen); diff --git a/src/gallium/targets/xorg-i965/intel_target.c b/src/gallium/targets/xorg-i965/intel_target.c index ce97f820278..0632b97beaa 100644 --- a/src/gallium/targets/xorg-i965/intel_target.c +++ b/src/gallium/targets/xorg-i965/intel_target.c @@ -19,8 +19,7 @@ create_screen(int fd) if (!screen) return NULL; - if (debug_get_bool_option("BRW_SOFTPIPE", FALSE)) - screen = sw_screen_wrap(screen); + screen = sw_screen_wrap(screen); screen = debug_screen_wrap(screen); -- cgit v1.2.3 From 991f0c27638c4bc03a0c609244bf755a0820d46f Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 15 Oct 2010 08:41:31 -0600 Subject: gallivm: added lp_build_print_vec4() --- src/gallium/auxiliary/gallivm/lp_bld_printf.c | 20 ++++++++++++++++++++ src/gallium/auxiliary/gallivm/lp_bld_printf.h | 4 ++++ 2 files changed, 24 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.c b/src/gallium/auxiliary/gallivm/lp_bld_printf.c index 153ba5b15b1..0c16bcf3478 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_printf.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_printf.c @@ -29,6 +29,7 @@ #include "util/u_debug.h" #include "util/u_memory.h" +#include "lp_bld_const.h" #include "lp_bld_printf.h" @@ -119,3 +120,22 @@ lp_build_printf(LLVMBuilderRef builder, const char *fmt, ...) return LLVMBuildCall(builder, func_printf, params, argcount + 1, ""); } + + +/** + * Print a float[4] vector. + */ +LLVMValueRef +lp_build_print_vec4(LLVMBuilderRef builder, const char *msg, LLVMValueRef vec) +{ + char format[1000]; + LLVMValueRef x, y, z, w; + + x = LLVMBuildExtractElement(builder, vec, lp_build_const_int32(0), ""); + y = LLVMBuildExtractElement(builder, vec, lp_build_const_int32(1), ""); + z = LLVMBuildExtractElement(builder, vec, lp_build_const_int32(2), ""); + w = LLVMBuildExtractElement(builder, vec, lp_build_const_int32(3), ""); + + snprintf(format, sizeof(format), "%s %%f %%f %%f %%f\n", msg); + return lp_build_printf(builder, format, x, y, z, w); +} diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.h b/src/gallium/auxiliary/gallivm/lp_bld_printf.h index 83bd8f1d557..b6222c62ebe 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_printf.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_printf.h @@ -35,5 +35,9 @@ LLVMValueRef lp_build_const_string_variable(LLVMModuleRef module, const char *str, int len); LLVMValueRef lp_build_printf(LLVMBuilderRef builder, const char *fmt, ...); +LLVMValueRef +lp_build_print_vec4(LLVMBuilderRef builder, const char *msg, LLVMValueRef vec); + + #endif -- cgit v1.2.3 From fb8f3d7711557d34d8a171304c589891d5bda047 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 15 Oct 2010 11:55:21 -0600 Subject: gallivm: added lp_build_load_volatile() There's no LLVM C LLVMBuildLoadVolatile() function so roll our own. Not used anywhere at this time but can come in handy during debugging. --- src/gallium/auxiliary/gallivm/lp_bld_init.h | 6 ++++++ src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.h b/src/gallium/auxiliary/gallivm/lp_bld_init.h index f26fdac4663..0b4b1ca7d11 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.h @@ -47,4 +47,10 @@ lp_build_init(void); extern void lp_func_delete_body(LLVMValueRef func); + +extern LLVMValueRef +lp_build_load_volatile(LLVMBuilderRef B, LLVMValueRef PointerVal, + const char *Name); + + #endif /* !LP_BLD_INIT_H */ diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp index 48baf7c425c..f56ddee7fd7 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp @@ -178,3 +178,13 @@ lp_func_delete_body(LLVMValueRef FF) llvm::Function *func = llvm::unwrap(FF); func->deleteBody(); } + + +extern "C" +LLVMValueRef +lp_build_load_volatile(LLVMBuilderRef B, LLVMValueRef PointerVal, + const char *Name) +{ + return llvm::wrap(llvm::unwrap(B)->CreateLoad(llvm::unwrap(PointerVal), true, Name)); +} + -- cgit v1.2.3 From 46c2ee4fad7d960fb0ff396caff4430df6a4611e Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 15 Oct 2010 17:32:23 -0600 Subject: gallivm: use util_snprintf() --- src/gallium/auxiliary/gallivm/lp_bld_printf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.c b/src/gallium/auxiliary/gallivm/lp_bld_printf.c index 0c16bcf3478..f418e96aff4 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_printf.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_printf.c @@ -29,6 +29,7 @@ #include "util/u_debug.h" #include "util/u_memory.h" +#include "util/u_string.h" #include "lp_bld_const.h" #include "lp_bld_printf.h" @@ -136,6 +137,6 @@ lp_build_print_vec4(LLVMBuilderRef builder, const char *msg, LLVMValueRef vec) z = LLVMBuildExtractElement(builder, vec, lp_build_const_int32(2), ""); w = LLVMBuildExtractElement(builder, vec, lp_build_const_int32(3), ""); - snprintf(format, sizeof(format), "%s %%f %%f %%f %%f\n", msg); + util_snprintf(format, sizeof(format), "%s %%f %%f %%f %%f\n", msg); return lp_build_printf(builder, format, x, y, z, w); } -- cgit v1.2.3 From 98b3f27439ba3a48286ed0d6a4467e5482b41fec Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sun, 17 Oct 2010 16:45:15 +1000 Subject: r600g: add evergreen ARL support. Thanks to Alex Deucher for pointing out the FLT to int conversion is necessary and writing an initial patch, this brings about 20 piglits, and I think this is the last piece to make evergreen and r600 equal in terms of features. --- src/gallium/drivers/r600/r600_opcodes.h | 8 ++----- src/gallium/drivers/r600/r600_shader.c | 39 ++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_opcodes.h b/src/gallium/drivers/r600/r600_opcodes.h index 0cf9c1c401c..4f9b39a7fdc 100644 --- a/src/gallium/drivers/r600/r600_opcodes.h +++ b/src/gallium/drivers/r600/r600_opcodes.h @@ -233,12 +233,6 @@ #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_CEIL 0x00000012 #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RNDNE 0x00000013 #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLOOR 0x00000014 -/* same up to here */ -/* -#define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA 0x00000015 -#define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR 0x00000016 -#define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT 0x00000018 -*/ #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_ASHR_INT 0x00000015 #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LSHR_INT 0x00000016 #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LSHL_INT 0x00000017 @@ -336,9 +330,11 @@ #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIPSQRT_CLAMPED_64 0x00000098 #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SQRT_64 0x00000099 /* TODO Fill in more ALU */ +#define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR 0x000000B1 #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4 0x000000BE #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4_IEEE 0x000000BF #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_CUBE 0x000000C0 +#define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT 0x000000CC #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INTERP_XY 0x000000D6 #define EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INTERP_ZW 0x000000D7 diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 94c9cbd9234..d1143985ead 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -2610,7 +2610,40 @@ static int tgsi_log(struct r600_shader_ctx *ctx) } /* r6/7 only for now */ -static int tgsi_arl(struct r600_shader_ctx *ctx) +static int tgsi_eg_arl(struct r600_shader_ctx *ctx) +{ + struct tgsi_full_instruction *inst = &ctx->parse.FullToken.FullInstruction; + struct r600_bc_alu alu; + int r; + + memset(&alu, 0, sizeof(struct r600_bc_alu)); + + alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR; + r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]); + if (r) + return r; + alu.src[0].chan = tgsi_chan(&inst->Src[0], 0); + alu.last = 1; + alu.dst.chan = 0; + alu.dst.sel = ctx->temp_reg; + alu.dst.write = 1; + r = r600_bc_add_alu_type(ctx->bc, &alu, CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU)); + if (r) + return r; + memset(&alu, 0, sizeof(struct r600_bc_alu)); + alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT; + r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]); + if (r) + return r; + alu.src[0].sel = ctx->temp_reg; + alu.src[0].chan = 0; + alu.last = 1; + r = r600_bc_add_alu_type(ctx->bc, &alu, CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU)); + if (r) + return r; + return 0; +} +static int tgsi_r600_arl(struct r600_shader_ctx *ctx) { /* TODO from r600c, ar values don't persist between clauses */ struct tgsi_full_instruction *inst = &ctx->parse.FullToken.FullInstruction; @@ -2955,7 +2988,7 @@ static int tgsi_loop_brk_cont(struct r600_shader_ctx *ctx) } static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = { - {TGSI_OPCODE_ARL, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_arl}, + {TGSI_OPCODE_ARL, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_r600_arl}, {TGSI_OPCODE_MOV, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV, tgsi_op2}, {TGSI_OPCODE_LIT, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_lit}, @@ -3119,7 +3152,7 @@ static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = { }; static struct r600_shader_tgsi_instruction eg_shader_tgsi_instruction[] = { - {TGSI_OPCODE_ARL, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, + {TGSI_OPCODE_ARL, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_eg_arl}, {TGSI_OPCODE_MOV, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV, tgsi_op2}, {TGSI_OPCODE_LIT, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_lit}, {TGSI_OPCODE_RCP, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIP_IEEE, tgsi_trans_srcx_replicate}, -- cgit v1.2.3 From 914b0d34e89ee53ef3d7d8aac4baa794492a2064 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 17 Oct 2010 07:15:58 -0700 Subject: llvmpipe: Fix depth-stencil regression. If stencil is enabled then we need to load the z_dst, even if depth testing is disabled. This fixes reflect mesa demo. --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 47 ++++++++++++++++------------- 1 file changed, 26 insertions(+), 21 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index ddf7da0b14d..167ac0ed2e2 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -330,7 +330,7 @@ lp_depth_type(const struct util_format_description *format_desc, * in the Z buffer (typically 0xffffff00 or 0x00ffffff). That lets us * get by with fewer bit twiddling steps. */ -static void +static boolean get_z_shift_and_mask(const struct util_format_description *format_desc, unsigned *shift, unsigned *width, unsigned *mask) { @@ -345,7 +345,8 @@ get_z_shift_and_mask(const struct util_format_description *format_desc, z_swizzle = format_desc->swizzle[0]; - assert(z_swizzle != UTIL_FORMAT_SWIZZLE_NONE); + if (z_swizzle == UTIL_FORMAT_SWIZZLE_NONE) + return FALSE; *width = format_desc->channel[z_swizzle].size; @@ -366,6 +367,8 @@ get_z_shift_and_mask(const struct util_format_description *format_desc, } *shift = padding_right; + + return TRUE; } @@ -554,6 +557,27 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, { unsigned s_shift, s_mask; + if (get_z_shift_and_mask(format_desc, &z_shift, &z_width, &z_mask)) { + if (z_mask != 0xffffffff) { + z_bitmask = lp_build_const_int_vec(z_type, z_mask); + } + + /* + * Align the framebuffer Z 's LSB to the right. + */ + if (z_shift) { + LLVMValueRef shift = lp_build_const_int_vec(z_type, z_shift); + z_dst = LLVMBuildLShr(builder, zs_dst, shift, "z_dst"); + } else if (z_bitmask) { + /* TODO: Instead of loading a mask from memory and ANDing, it's + * probably faster to just shake the bits with two shifts. */ + z_dst = LLVMBuildAnd(builder, zs_dst, z_bitmask, "z_dst"); + } else { + z_dst = zs_dst; + lp_build_name(z_dst, "z_dst"); + } + } + if (get_s_shift_and_mask(format_desc, &s_shift, &s_mask)) { if (s_shift) { LLVMValueRef shift = lp_build_const_int_vec(s_type, s_shift); @@ -605,8 +629,6 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, } if (depth->enabled) { - get_z_shift_and_mask(format_desc, &z_shift, &z_width, &z_mask); - /* * Convert fragment Z to the desired type, aligning the LSB to the right. */ @@ -644,23 +666,6 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, lp_build_name(z_src, "z_src"); - if (z_mask != 0xffffffff) { - z_bitmask = lp_build_const_int_vec(z_type, z_mask); - } - - /* - * Align the framebuffer Z 's LSB to the right. - */ - if (z_shift) { - LLVMValueRef shift = lp_build_const_int_vec(z_type, z_shift); - z_dst = LLVMBuildLShr(builder, zs_dst, shift, "z_dst"); - } else if (z_bitmask) { - z_dst = LLVMBuildAnd(builder, zs_dst, z_bitmask, "z_dst"); - } else { - z_dst = zs_dst; - lp_build_name(z_dst, "z_dst"); - } - /* compare src Z to dst Z, returning 'pass' mask */ z_pass = lp_build_cmp(&z_bld, depth->func, z_src, z_dst); -- cgit v1.2.3 From 709699d2e25146ac16af7e939de4398fdc50307e Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 17 Oct 2010 07:45:08 -0700 Subject: llvmpipe: Ensure z_shift and z_width is initialized. --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 167ac0ed2e2..7eb76d4fb31 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -469,7 +469,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder, struct lp_build_context z_bld; struct lp_build_context s_bld; struct lp_type s_type; - unsigned z_shift, z_width, z_mask; + unsigned z_shift = 0, z_width = 0, z_mask = 0; LLVMValueRef zs_dst, z_dst = NULL; LLVMValueRef stencil_vals = NULL; LLVMValueRef z_bitmask = NULL, stencil_shift = NULL; -- cgit v1.2.3 From dc5bdbe0f96d288bc84d318d25a59dc13c1e81de Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 17 Oct 2010 09:32:41 -0700 Subject: gallivm: Fix SoA cubemap derivative computation. Derivatives are now scalar. Broken since 17dbd41cf23e7e7de2f27e5e9252d7f792d932f3. --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 8c03284621c..53cc0c5f345 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -963,12 +963,12 @@ lp_build_sample_general(struct lp_build_sample_context *bld, r = lp_build_broadcast_scalar(&bld->int_coord_bld, face); /* vec */ /* recompute ddx, ddy using the new (s,t) face texcoords */ - face_ddx[0] = lp_build_ddx(&bld->coord_bld, s); - face_ddx[1] = lp_build_ddx(&bld->coord_bld, t); + face_ddx[0] = lp_build_scalar_ddx(&bld->coord_bld, s); + face_ddx[1] = lp_build_scalar_ddx(&bld->coord_bld, t); face_ddx[2] = NULL; face_ddx[3] = NULL; - face_ddy[0] = lp_build_ddy(&bld->coord_bld, s); - face_ddy[1] = lp_build_ddy(&bld->coord_bld, t); + face_ddy[0] = lp_build_scalar_ddy(&bld->coord_bld, s); + face_ddy[1] = lp_build_scalar_ddy(&bld->coord_bld, t); face_ddy[2] = NULL; face_ddy[3] = NULL; ddx = face_ddx; -- cgit v1.2.3 From a0add0446ca9dce6d4a96014c42ba6cf3a73a44a Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 17 Oct 2010 09:58:04 -0700 Subject: llvmpipe: Fix bad refactoring. 'i' and 'chan' have random values here, which could cause a buffer overflow in debug builds, if chan > 4. --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index c070b55d3d1..7acbe7e86c3 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -365,8 +365,7 @@ generate_fs(struct llvmpipe_context *lp, 0); if (pos0 != -1 && outputs[pos0][2]) { - z = LLVMBuildLoad(builder, outputs[pos0][2], "z"); - lp_build_name(z, "output%u.%u.%c", i, pos0, "xyzw"[chan]); + z = LLVMBuildLoad(builder, outputs[pos0][2], "output.z"); } lp_build_depth_stencil_test(builder, -- cgit v1.2.3 From 4afad7d3edcaaa62b748cc9bd4d88a626ac0920a Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 17 Oct 2010 10:15:15 -0700 Subject: llvmpipe: Initialize bld ctx via lp_build_context_init instead of ad-hoc and broken code. --- src/gallium/drivers/llvmpipe/lp_test_round.c | 5 +---- src/gallium/drivers/llvmpipe/lp_test_sincos.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_test_round.c b/src/gallium/drivers/llvmpipe/lp_test_round.c index 57b0ee57767..0770c7ab9ac 100644 --- a/src/gallium/drivers/llvmpipe/lp_test_round.c +++ b/src/gallium/drivers/llvmpipe/lp_test_round.c @@ -75,10 +75,7 @@ add_test(LLVMModuleRef module, const char *name, lp_func_t lp_func) LLVMValueRef ret; struct lp_build_context bld; - bld.builder = builder; - bld.type.floating = 1; - bld.type.width = 32; - bld.type.length = 4; + lp_build_context_init(&bld, builder, lp_float32_vec4_type()); LLVMSetFunctionCallConv(func, LLVMCCallConv); diff --git a/src/gallium/drivers/llvmpipe/lp_test_sincos.c b/src/gallium/drivers/llvmpipe/lp_test_sincos.c index 7ab357f162e..79939b1a393 100644 --- a/src/gallium/drivers/llvmpipe/lp_test_sincos.c +++ b/src/gallium/drivers/llvmpipe/lp_test_sincos.c @@ -72,10 +72,7 @@ add_sincos_test(LLVMModuleRef module, boolean sin) LLVMValueRef ret; struct lp_build_context bld; - bld.builder = builder; - bld.type.floating = 1; - bld.type.width = 32; - bld.type.length = 4; + lp_build_context_init(&bld, builder, lp_float32_vec4_type()); LLVMSetFunctionCallConv(func, LLVMCCallConv); -- cgit v1.2.3 From c1d6b318661de2acdee38254d3750ed8dfc09e8b Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Sat, 16 Oct 2010 11:02:11 +0100 Subject: draw: corrections for w coordinate --- src/gallium/auxiliary/draw/draw_llvm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 1c18d907434..7afa37ba94c 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -800,9 +800,10 @@ generate_viewport(struct draw_llvm *llvm, /* for 1/w convention*/ out3 = LLVMBuildFDiv(builder, const1, out3, ""); - + LLVMBuildStore(builder, out3, outputs[0][3]); + /* Viewport Mapping */ - for (i=0; i<4; i++){ + for (i=0; i<3; i++){ LLVMValueRef out = LLVMBuildLoad(builder, outputs[0][i], ""); /*x0 x1 x2 x3*/ LLVMValueRef scale = lp_build_const_vec(f32_type, scaleA[i]); /*sx sx sx sx*/ LLVMValueRef trans = lp_build_const_vec(f32_type, transA[i]); /*tx tx tx tx*/ -- cgit v1.2.3 From c9d297162ad7efb87ab3e29c14259147d891baf9 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Sun, 17 Oct 2010 14:09:53 -0700 Subject: llvmpipe: Return non-zero exit code for lp_test_round failures. --- src/gallium/drivers/llvmpipe/lp_test_round.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_test_round.c b/src/gallium/drivers/llvmpipe/lp_test_round.c index 0770c7ab9ac..0ca27915923 100644 --- a/src/gallium/drivers/llvmpipe/lp_test_round.c +++ b/src/gallium/drivers/llvmpipe/lp_test_round.c @@ -97,9 +97,10 @@ printv(char* string, v4sf value) f[0], f[1], f[2], f[3]); } -static void +static boolean compare(v4sf x, v4sf y) { + boolean success = TRUE; float *xp = (float *) &x; float *yp = (float *) &y; if (xp[0] != yp[0] || @@ -107,7 +108,9 @@ compare(v4sf x, v4sf y) xp[2] != yp[2] || xp[3] != yp[3]) { printf(" Incorrect result! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); + success = FALSE; } + return success; } @@ -188,7 +191,7 @@ test_round(unsigned verbose, FILE *fp) y = round_func(x); printv("C round(x) ", ref); printv("LLVM round(x)", y); - compare(ref, y); + success = success && compare(ref, y); refp[0] = trunc(xp[0]); refp[1] = trunc(xp[1]); @@ -197,7 +200,7 @@ test_round(unsigned verbose, FILE *fp) y = trunc_func(x); printv("C trunc(x) ", ref); printv("LLVM trunc(x)", y); - compare(ref, y); + success = success && compare(ref, y); refp[0] = floor(xp[0]); refp[1] = floor(xp[1]); @@ -206,7 +209,7 @@ test_round(unsigned verbose, FILE *fp) y = floor_func(x); printv("C floor(x) ", ref); printv("LLVM floor(x)", y); - compare(ref, y); + success = success && compare(ref, y); refp[0] = ceil(xp[0]); refp[1] = ceil(xp[1]); @@ -215,7 +218,7 @@ test_round(unsigned verbose, FILE *fp) y = ceil_func(x); printv("C ceil(x) ", ref); printv("LLVM ceil(x) ", y); - compare(ref, y); + success = success && compare(ref, y); } LLVMFreeMachineCodeForFunction(engine, test_round); @@ -244,11 +247,7 @@ test_round(unsigned verbose, FILE *fp) boolean test_all(unsigned verbose, FILE *fp) { - boolean success = TRUE; - - test_round(verbose, fp); - - return success; + return test_round(verbose, fp); } -- cgit v1.2.3 From 82114ac02a2d5a764ce69711fc0a71f559ee9137 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 6 Oct 2010 12:49:26 +1000 Subject: r600g: switch to a common formats.h file since they are in different regs --- src/gallium/drivers/r600/eg_state_inlines.h | 37 +++++++++--------- src/gallium/drivers/r600/evergreend.h | 39 ------------------- src/gallium/drivers/r600/r600_formats.h | 56 +++++++++++++++++++++++++++ src/gallium/drivers/r600/r600_state_inlines.h | 47 +++++++++++----------- src/gallium/drivers/r600/r600_texture.c | 41 ++++++++++---------- src/gallium/drivers/r600/r600d.h | 40 +------------------ 6 files changed, 121 insertions(+), 139 deletions(-) create mode 100644 src/gallium/drivers/r600/r600_formats.h (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/eg_state_inlines.h b/src/gallium/drivers/r600/eg_state_inlines.h index 5a4e00aac38..be81c28b43f 100644 --- a/src/gallium/drivers/r600/eg_state_inlines.h +++ b/src/gallium/drivers/r600/eg_state_inlines.h @@ -25,6 +25,7 @@ #include "util/u_format.h" #include "evergreend.h" +#include "r600_formats.h" static INLINE uint32_t r600_translate_blend_function(int blend_func) { @@ -523,32 +524,32 @@ static INLINE uint32_t r600_translate_vertex_data_type(enum pipe_format format) case 16: switch (desc->nr_channels) { case 1: - result = V_030008_FMT_16_FLOAT; + result = FMT_16_FLOAT; break; case 2: - result = V_030008_FMT_16_16_FLOAT; + result = FMT_16_16_FLOAT; break; case 3: - result = V_030008_FMT_16_16_16_FLOAT; + result = FMT_16_16_16_FLOAT; break; case 4: - result = V_030008_FMT_16_16_16_16_FLOAT; + result = FMT_16_16_16_16_FLOAT; break; } break; case 32: switch (desc->nr_channels) { case 1: - result = V_030008_FMT_32_FLOAT; + result = FMT_32_FLOAT; break; case 2: - result = V_030008_FMT_32_32_FLOAT; + result = FMT_32_32_FLOAT; break; case 3: - result = V_030008_FMT_32_32_32_FLOAT; + result = FMT_32_32_32_FLOAT; break; case 4: - result = V_030008_FMT_32_32_32_32_FLOAT; + result = FMT_32_32_32_32_FLOAT; break; } break; @@ -564,48 +565,48 @@ static INLINE uint32_t r600_translate_vertex_data_type(enum pipe_format format) case 8: switch (desc->nr_channels) { case 1: - result = V_030008_FMT_8; + result = FMT_8; break; case 2: - result = V_030008_FMT_8_8; + result = FMT_8_8; break; case 3: // result = V_038008_FMT_8_8_8; /* fails piglit draw-vertices test */ // break; case 4: - result = V_030008_FMT_8_8_8_8; + result = FMT_8_8_8_8; break; } break; case 16: switch (desc->nr_channels) { case 1: - result = V_030008_FMT_16; + result = FMT_16; break; case 2: - result = V_030008_FMT_16_16; + result = FMT_16_16; break; case 3: // result = V_038008_FMT_16_16_16; /* fails piglit draw-vertices test */ // break; case 4: - result = V_030008_FMT_16_16_16_16; + result = FMT_16_16_16_16; break; } break; case 32: switch (desc->nr_channels) { case 1: - result = V_030008_FMT_32; + result = FMT_32; break; case 2: - result = V_030008_FMT_32_32; + result = FMT_32_32; break; case 3: - result = V_030008_FMT_32_32_32; + result = FMT_32_32_32; break; case 4: - result = V_030008_FMT_32_32_32_32; + result = FMT_32_32_32_32; break; } break; diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h index 5d07f532f09..8e96f9355e6 100644 --- a/src/gallium/drivers/r600/evergreend.h +++ b/src/gallium/drivers/r600/evergreend.h @@ -1050,45 +1050,6 @@ #define S_030008_DATA_FORMAT(x) (((x) & 0x3F) << 20) #define G_030008_DATA_FORMAT(x) (((x) >> 20) & 0x3F) #define C_030008_DATA_FORMAT 0xFC0FFFFF -#define V_030008_FMT_INVALID 0x00000000 -#define V_030008_FMT_8 0x00000001 -#define V_030008_FMT_4_4 0x00000002 -#define V_030008_FMT_3_3_2 0x00000003 -#define V_030008_FMT_16 0x00000005 -#define V_030008_FMT_16_FLOAT 0x00000006 -#define V_030008_FMT_8_8 0x00000007 -#define V_030008_FMT_5_6_5 0x00000008 -#define V_030008_FMT_6_5_5 0x00000009 -#define V_030008_FMT_1_5_5_5 0x0000000A -#define V_030008_FMT_4_4_4_4 0x0000000B -#define V_030008_FMT_5_5_5_1 0x0000000C -#define V_030008_FMT_32 0x0000000D -#define V_030008_FMT_32_FLOAT 0x0000000E -#define V_030008_FMT_16_16 0x0000000F -#define V_030008_FMT_16_16_FLOAT 0x00000010 -#define V_030008_FMT_8_24 0x00000011 -#define V_030008_FMT_8_24_FLOAT 0x00000012 -#define V_030008_FMT_24_8 0x00000013 -#define V_030008_FMT_24_8_FLOAT 0x00000014 -#define V_030008_FMT_10_11_11 0x00000015 -#define V_030008_FMT_10_11_11_FLOAT 0x00000016 -#define V_030008_FMT_11_11_10 0x00000017 -#define V_030008_FMT_11_11_10_FLOAT 0x00000018 -#define V_030008_FMT_2_10_10_10 0x00000019 -#define V_030008_FMT_8_8_8_8 0x0000001A -#define V_030008_FMT_10_10_10_2 0x0000001B -#define V_030008_FMT_X24_8_32_FLOAT 0x0000001C -#define V_030008_FMT_32_32 0x0000001D -#define V_030008_FMT_32_32_FLOAT 0x0000001E -#define V_030008_FMT_16_16_16_16 0x0000001F -#define V_030008_FMT_16_16_16_16_FLOAT 0x00000020 -#define V_030008_FMT_32_32_32_32 0x00000022 -#define V_030008_FMT_32_32_32_32_FLOAT 0x00000023 -#define V_030008_FMT_8_8_8 0x0000002c -#define V_030008_FMT_16_16_16 0x0000002d -#define V_030008_FMT_16_16_16_FLOAT 0x0000002e -#define V_030008_FMT_32_32_32 0x0000002f -#define V_030008_FMT_32_32_32_FLOAT 0x00000030 #define S_030008_NUM_FORMAT_ALL(x) (((x) & 0x3) << 26) #define G_030008_NUM_FORMAT_ALL(x) (((x) >> 26) & 0x3) #define C_030008_NUM_FORMAT_ALL 0xF3FFFFFF diff --git a/src/gallium/drivers/r600/r600_formats.h b/src/gallium/drivers/r600/r600_formats.h new file mode 100644 index 00000000000..0c91a212384 --- /dev/null +++ b/src/gallium/drivers/r600/r600_formats.h @@ -0,0 +1,56 @@ +#ifndef R600_FORMATS_H +#define R600_FORMATS_H + +/* list of formats from R700 ISA document - apply across GPUs in different registers */ +#define FMT_INVALID 0x00000000 +#define FMT_8 0x00000001 +#define FMT_4_4 0x00000002 +#define FMT_3_3_2 0x00000003 +#define FMT_16 0x00000005 +#define FMT_16_FLOAT 0x00000006 +#define FMT_8_8 0x00000007 +#define FMT_5_6_5 0x00000008 +#define FMT_6_5_5 0x00000009 +#define FMT_1_5_5_5 0x0000000A +#define FMT_4_4_4_4 0x0000000B +#define FMT_5_5_5_1 0x0000000C +#define FMT_32 0x0000000D +#define FMT_32_FLOAT 0x0000000E +#define FMT_16_16 0x0000000F +#define FMT_16_16_FLOAT 0x00000010 +#define FMT_8_24 0x00000011 +#define FMT_8_24_FLOAT 0x00000012 +#define FMT_24_8 0x00000013 +#define FMT_24_8_FLOAT 0x00000014 +#define FMT_10_11_11 0x00000015 +#define FMT_10_11_11_FLOAT 0x00000016 +#define FMT_11_11_10 0x00000017 +#define FMT_11_11_10_FLOAT 0x00000018 +#define FMT_2_10_10_10 0x00000019 +#define FMT_8_8_8_8 0x0000001A +#define FMT_10_10_10_2 0x0000001B +#define FMT_X24_8_32_FLOAT 0x0000001C +#define FMT_32_32 0x0000001D +#define FMT_32_32_FLOAT 0x0000001E +#define FMT_16_16_16_16 0x0000001F +#define FMT_16_16_16_16_FLOAT 0x00000020 +#define FMT_32_32_32_32 0x00000022 +#define FMT_32_32_32_32_FLOAT 0x00000023 +#define FMT_1 0x00000025 +#define FMT_GB_GR 0x00000027 +#define FMT_BG_RG 0x00000028 +#define FMT_32_AS_8 0x00000029 +#define FMT_32_AS_8_8 0x0000002a +#define FMT_5_9_9_9_SHAREDEXP 0x0000002b +#define FMT_8_8_8 0x0000002c +#define FMT_16_16_16 0x0000002d +#define FMT_16_16_16_FLOAT 0x0000002e +#define FMT_32_32_32 0x0000002f +#define FMT_32_32_32_FLOAT 0x00000030 +#define FMT_BC1 0x00000031 +#define FMT_BC2 0x00000032 +#define FMT_BC3 0x00000033 +#define FMT_BC4 0x00000034 +#define FMT_BC5 0x00000035 + +#endif diff --git a/src/gallium/drivers/r600/r600_state_inlines.h b/src/gallium/drivers/r600/r600_state_inlines.h index 29a29d87cd3..1c1978f8abb 100644 --- a/src/gallium/drivers/r600/r600_state_inlines.h +++ b/src/gallium/drivers/r600/r600_state_inlines.h @@ -25,6 +25,7 @@ #include "util/u_format.h" #include "r600d.h" +#include "r600_formats.h" static INLINE uint32_t r600_translate_blend_function(int blend_func) { @@ -352,13 +353,13 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) /* 64-bit buffers. */ case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: - // return V_0280A0_COLOR_16_16_16_16; + // return FMT_16_16_16_16; case PIPE_FORMAT_R16G16B16A16_FLOAT: - // return V_0280A0_COLOR_16_16_16_16_FLOAT; + // return FMT_16_16_16_16_FLOAT; /* 128-bit buffers. */ case PIPE_FORMAT_R32G32B32A32_FLOAT: - // return V_0280A0_COLOR_32_32_32_32_FLOAT; + // return FMT_32_32_32_32_FLOAT; return 0; default: R600_ERR("unsupported colorswap format %d\n", format); @@ -522,32 +523,32 @@ static INLINE uint32_t r600_translate_vertex_data_type(enum pipe_format format) case 16: switch (desc->nr_channels) { case 1: - result = V_038008_FMT_16_FLOAT; + result = FMT_16_FLOAT; break; case 2: - result = V_038008_FMT_16_16_FLOAT; + result = FMT_16_16_FLOAT; break; case 3: - result = V_038008_FMT_16_16_16_FLOAT; + result = FMT_16_16_16_FLOAT; break; case 4: - result = V_038008_FMT_16_16_16_16_FLOAT; + result = FMT_16_16_16_16_FLOAT; break; } break; case 32: switch (desc->nr_channels) { case 1: - result = V_038008_FMT_32_FLOAT; + result = FMT_32_FLOAT; break; case 2: - result = V_038008_FMT_32_32_FLOAT; + result = FMT_32_32_FLOAT; break; case 3: - result = V_038008_FMT_32_32_32_FLOAT; + result = FMT_32_32_32_FLOAT; break; case 4: - result = V_038008_FMT_32_32_32_32_FLOAT; + result = FMT_32_32_32_32_FLOAT; break; } break; @@ -563,48 +564,48 @@ static INLINE uint32_t r600_translate_vertex_data_type(enum pipe_format format) case 8: switch (desc->nr_channels) { case 1: - result = V_038008_FMT_8; + result = FMT_8; break; case 2: - result = V_038008_FMT_8_8; + result = FMT_8_8; break; case 3: - // result = V_038008_FMT_8_8_8; /* fails piglit draw-vertices test */ + // result = FMT_8_8_8; /* fails piglit draw-vertices test */ // break; case 4: - result = V_038008_FMT_8_8_8_8; + result = FMT_8_8_8_8; break; } break; case 16: switch (desc->nr_channels) { case 1: - result = V_038008_FMT_16; + result = FMT_16; break; case 2: - result = V_038008_FMT_16_16; + result = FMT_16_16; break; case 3: - // result = V_038008_FMT_16_16_16; /* fails piglit draw-vertices test */ + // result = FMT_16_16_16; /* fails piglit draw-vertices test */ // break; case 4: - result = V_038008_FMT_16_16_16_16; + result = FMT_16_16_16_16; break; } break; case 32: switch (desc->nr_channels) { case 1: - result = V_038008_FMT_32; + result = FMT_32; break; case 2: - result = V_038008_FMT_32_32; + result = FMT_32_32; break; case 3: - result = V_038008_FMT_32_32_32; + result = FMT_32_32_32; break; case 4: - result = V_038008_FMT_32_32_32_32; + result = FMT_32_32_32_32; break; } break; diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 22fe8bf0f39..152cd9210fd 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -35,6 +35,7 @@ #include "r600_resource.h" #include "r600_state_inlines.h" #include "r600d.h" +#include "r600_formats.h" extern struct u_resource_vtbl r600_texture_vtbl; @@ -565,19 +566,19 @@ uint32_t r600_translate_texformat(enum pipe_format format, case UTIL_FORMAT_COLORSPACE_ZS: switch (format) { case PIPE_FORMAT_Z16_UNORM: - result = V_0280A0_COLOR_16; + result = FMT_16; goto out_word4; case PIPE_FORMAT_X24S8_USCALED: word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_INT); case PIPE_FORMAT_Z24X8_UNORM: case PIPE_FORMAT_Z24_UNORM_S8_USCALED: - result = V_0280A0_COLOR_8_24; + result = FMT_8_24; goto out_word4; case PIPE_FORMAT_S8X24_USCALED: word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_INT); case PIPE_FORMAT_X8Z24_UNORM: case PIPE_FORMAT_S8_USCALED_Z24_UNORM: - result = V_0280A0_COLOR_24_8; + result = FMT_24_8; goto out_word4; case PIPE_FORMAT_S8_USCALED: result = V_0280A0_COLOR_8; @@ -635,7 +636,7 @@ uint32_t r600_translate_texformat(enum pipe_format format, if (desc->channel[0].size == 5 && desc->channel[1].size == 6 && desc->channel[2].size == 5) { - result = V_0280A0_COLOR_5_6_5; + result = FMT_5_6_5; goto out_word4; } goto out_unknown; @@ -644,14 +645,14 @@ uint32_t r600_translate_texformat(enum pipe_format format, desc->channel[1].size == 5 && desc->channel[2].size == 5 && desc->channel[3].size == 1) { - result = V_0280A0_COLOR_1_5_5_5; + result = FMT_1_5_5_5; goto out_word4; } if (desc->channel[0].size == 10 && desc->channel[1].size == 10 && desc->channel[2].size == 10 && desc->channel[3].size == 2) { - result = V_0280A0_COLOR_10_10_10_2; + result = FMT_10_10_10_2; goto out_word4; } goto out_unknown; @@ -682,36 +683,36 @@ uint32_t r600_translate_texformat(enum pipe_format format, case 4: switch (desc->nr_channels) { case 2: - result = V_0280A0_COLOR_4_4; + result = FMT_4_4; goto out_word4; case 4: - result = V_0280A0_COLOR_4_4_4_4; + result = FMT_4_4_4_4; goto out_word4; } goto out_unknown; case 8: switch (desc->nr_channels) { case 1: - result = V_0280A0_COLOR_8; + result = FMT_8; goto out_word4; case 2: - result = V_0280A0_COLOR_8_8; + result = FMT_8_8; goto out_word4; case 4: - result = V_0280A0_COLOR_8_8_8_8; + result = FMT_8_8_8_8; goto out_word4; } goto out_unknown; case 16: switch (desc->nr_channels) { case 1: - result = V_0280A0_COLOR_16; + result = FMT_16; goto out_word4; case 2: - result = V_0280A0_COLOR_16_16; + result = FMT_16_16; goto out_word4; case 4: - result = V_0280A0_COLOR_16_16_16_16; + result = FMT_16_16_16_16; goto out_word4; } } @@ -722,26 +723,26 @@ uint32_t r600_translate_texformat(enum pipe_format format, case 16: switch (desc->nr_channels) { case 1: - result = V_0280A0_COLOR_16_FLOAT; + result = FMT_16_FLOAT; goto out_word4; case 2: - result = V_0280A0_COLOR_16_16_FLOAT; + result = FMT_16_16_FLOAT; goto out_word4; case 4: - result = V_0280A0_COLOR_16_16_16_16_FLOAT; + result = FMT_16_16_16_16_FLOAT; goto out_word4; } goto out_unknown; case 32: switch (desc->nr_channels) { case 1: - result = V_0280A0_COLOR_32_FLOAT; + result = FMT_32_FLOAT; goto out_word4; case 2: - result = V_0280A0_COLOR_32_32_FLOAT; + result = FMT_32_32_FLOAT; goto out_word4; case 4: - result = V_0280A0_COLOR_32_32_32_32_FLOAT; + result = FMT_32_32_32_32_FLOAT; goto out_word4; } } diff --git a/src/gallium/drivers/r600/r600d.h b/src/gallium/drivers/r600/r600d.h index f32f5286c95..76df62ffc3e 100644 --- a/src/gallium/drivers/r600/r600d.h +++ b/src/gallium/drivers/r600/r600d.h @@ -1028,45 +1028,7 @@ #define S_038008_DATA_FORMAT(x) (((x) & 0x3F) << 20) #define G_038008_DATA_FORMAT(x) (((x) >> 20) & 0x3F) #define C_038008_DATA_FORMAT 0xFC0FFFFF -#define V_038008_FMT_INVALID 0x00000000 -#define V_038008_FMT_8 0x00000001 -#define V_038008_FMT_4_4 0x00000002 -#define V_038008_FMT_3_3_2 0x00000003 -#define V_038008_FMT_16 0x00000005 -#define V_038008_FMT_16_FLOAT 0x00000006 -#define V_038008_FMT_8_8 0x00000007 -#define V_038008_FMT_5_6_5 0x00000008 -#define V_038008_FMT_6_5_5 0x00000009 -#define V_038008_FMT_1_5_5_5 0x0000000A -#define V_038008_FMT_4_4_4_4 0x0000000B -#define V_038008_FMT_5_5_5_1 0x0000000C -#define V_038008_FMT_32 0x0000000D -#define V_038008_FMT_32_FLOAT 0x0000000E -#define V_038008_FMT_16_16 0x0000000F -#define V_038008_FMT_16_16_FLOAT 0x00000010 -#define V_038008_FMT_8_24 0x00000011 -#define V_038008_FMT_8_24_FLOAT 0x00000012 -#define V_038008_FMT_24_8 0x00000013 -#define V_038008_FMT_24_8_FLOAT 0x00000014 -#define V_038008_FMT_10_11_11 0x00000015 -#define V_038008_FMT_10_11_11_FLOAT 0x00000016 -#define V_038008_FMT_11_11_10 0x00000017 -#define V_038008_FMT_11_11_10_FLOAT 0x00000018 -#define V_038008_FMT_2_10_10_10 0x00000019 -#define V_038008_FMT_8_8_8_8 0x0000001A -#define V_038008_FMT_10_10_10_2 0x0000001B -#define V_038008_FMT_X24_8_32_FLOAT 0x0000001C -#define V_038008_FMT_32_32 0x0000001D -#define V_038008_FMT_32_32_FLOAT 0x0000001E -#define V_038008_FMT_16_16_16_16 0x0000001F -#define V_038008_FMT_16_16_16_16_FLOAT 0x00000020 -#define V_038008_FMT_32_32_32_32 0x00000022 -#define V_038008_FMT_32_32_32_32_FLOAT 0x00000023 -#define V_038008_FMT_8_8_8 0x0000002c -#define V_038008_FMT_16_16_16 0x0000002d -#define V_038008_FMT_16_16_16_FLOAT 0x0000002e -#define V_038008_FMT_32_32_32 0x0000002f -#define V_038008_FMT_32_32_32_FLOAT 0x00000030 + #define S_038008_NUM_FORMAT_ALL(x) (((x) & 0x3) << 26) #define G_038008_NUM_FORMAT_ALL(x) (((x) >> 26) & 0x3) #define C_038008_NUM_FORMAT_ALL 0xF3FFFFFF -- cgit v1.2.3 From e8e20313afbdf3a38e5a10e6fa566864452eeb2c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 8 Oct 2010 11:56:12 +1000 Subject: r600g: add defines for tiling --- src/gallium/drivers/r600/r600d.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600d.h b/src/gallium/drivers/r600/r600d.h index 76df62ffc3e..a3cb5b86004 100644 --- a/src/gallium/drivers/r600/r600d.h +++ b/src/gallium/drivers/r600/r600d.h @@ -904,6 +904,10 @@ #define S_038000_TILE_MODE(x) (((x) & 0xF) << 3) #define G_038000_TILE_MODE(x) (((x) >> 3) & 0xF) #define C_038000_TILE_MODE 0xFFFFFF87 +#define V_038000_ARRAY_LINEAR_GENERAL 0x00000000 +#define V_038000_ARRAY_LINEAR_ALIGNED 0x00000001 +#define V_038000_ARRAY_1D_TILED_THIN1 0x00000002 +#define V_038000_ARRAY_2D_TILED_THIN1 0x00000004 #define S_038000_TILE_TYPE(x) (((x) & 0x1) << 7) #define G_038000_TILE_TYPE(x) (((x) >> 7) & 0x1) #define C_038000_TILE_TYPE 0xFFFFFF7F -- cgit v1.2.3 From 7b3fa038830663de9bceded1b0dd2d64b8cf39c4 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 8 Oct 2010 11:56:43 +1000 Subject: r600g: get tiling info from kernel --- src/gallium/drivers/r600/r600.h | 7 ++++ src/gallium/drivers/r600/r600_pipe.c | 2 ++ src/gallium/drivers/r600/r600_pipe.h | 1 + src/gallium/winsys/r600/drm/r600.c | 5 +++ src/gallium/winsys/r600/drm/r600_drm.c | 62 +++++++++++++++++++++++++++++++++ src/gallium/winsys/r600/drm/r600_priv.h | 1 + 6 files changed, 78 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h index 24e25cec0db..15ee0011061 100644 --- a/src/gallium/drivers/r600/r600.h +++ b/src/gallium/drivers/r600/r600.h @@ -99,8 +99,15 @@ enum chip_class { EVERGREEN, }; +struct r600_tiling_info { + unsigned num_channels; + unsigned num_banks; + unsigned group_bytes; +}; + enum radeon_family r600_get_family(struct radeon *rw); enum chip_class r600_get_family_class(struct radeon *radeon); +struct r600_tiling_info *r600_get_tiling_info(struct radeon *radeon); /* r600_bo.c */ struct r600_bo; diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 8eb97993236..dd8fa4fcd77 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -443,5 +443,7 @@ struct pipe_screen *r600_screen_create(struct radeon *radeon) r600_init_screen_texture_functions(&rscreen->screen); r600_init_screen_resource_functions(&rscreen->screen); + rscreen->tiling_info = r600_get_tiling_info(radeon); + return &rscreen->screen; } diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 47a1b3070e9..35548329e46 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -58,6 +58,7 @@ enum r600_pipe_state_id { struct r600_screen { struct pipe_screen screen; struct radeon *radeon; + struct r600_tiling_info *tiling_info; }; struct r600_pipe_sampler_view { diff --git a/src/gallium/winsys/r600/drm/r600.c b/src/gallium/winsys/r600/drm/r600.c index 496547ca994..0a4d2e791db 100644 --- a/src/gallium/winsys/r600/drm/r600.c +++ b/src/gallium/winsys/r600/drm/r600.c @@ -40,6 +40,11 @@ enum chip_class r600_get_family_class(struct radeon *radeon) return radeon->chip_class; } +struct r600_tiling_info *r600_get_tiling_info(struct radeon *radeon) +{ + return &radeon->tiling_info; +} + static int r600_get_device(struct radeon *r600) { struct drm_radeon_info info; diff --git a/src/gallium/winsys/r600/drm/r600_drm.c b/src/gallium/winsys/r600/drm/r600_drm.c index 4916843fd6d..c9de95ffc02 100644 --- a/src/gallium/winsys/r600/drm/r600_drm.c +++ b/src/gallium/winsys/r600/drm/r600_drm.c @@ -37,6 +37,9 @@ #include "xf86drm.h" #include "radeon_drm.h" +#ifndef RADEON_INFO_TILING_CONFIG +#define RADEON_INFO_TILING_CONFIG 0x6 +#endif static int radeon_get_device(struct radeon *radeon) { struct drm_radeon_info info; @@ -50,6 +53,61 @@ static int radeon_get_device(struct radeon *radeon) return r; } +static int radeon_drm_get_tiling(struct radeon *radeon) +{ + struct drm_radeon_info info; + int r; + uint32_t tiling_config; + + info.request = RADEON_INFO_TILING_CONFIG; + info.value = (uintptr_t)&tiling_config; + r = drmCommandWriteRead(radeon->fd, DRM_RADEON_INFO, &info, + sizeof(struct drm_radeon_info)); + + if (r) + return r; + + switch ((tiling_config & 0xe) >> 1) { + case 0: + radeon->tiling_info.num_channels = 1; + break; + case 1: + radeon->tiling_info.num_channels = 2; + break; + case 2: + radeon->tiling_info.num_channels = 4; + break; + case 3: + radeon->tiling_info.num_channels = 8; + break; + default: + return -EINVAL; + } + + switch ((tiling_config & 0x30) >> 4) { + case 0: + radeon->tiling_info.num_banks = 4; + break; + case 1: + radeon->tiling_info.num_banks = 8; + break; + default: + return -EINVAL; + + } + switch ((tiling_config & 0xc0) >> 6) { + case 0: + radeon->tiling_info.group_bytes = 256; + break; + case 1: + radeon->tiling_info.group_bytes = 512; + break; + default: + return -EINVAL; + } + return 0; +} + struct radeon *radeon_new(int fd, unsigned device) { struct radeon *radeon; @@ -157,6 +215,10 @@ struct radeon *radeon_new(int fd, unsigned device) break; } + if (radeon->chip_class == R600 || radeon->chip_class == R700) { + if (radeon_drm_get_tiling(radeon)) + return NULL; + } radeon->kman = radeon_bo_pbmgr_create(radeon); if (!radeon->kman) return NULL; diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index e3868d3cb9a..08e243b00d0 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -42,6 +42,7 @@ struct radeon { enum chip_class chip_class; struct pb_manager *kman; /* kernel bo manager */ struct pb_manager *cman; /* cached bo manager */ + struct r600_tiling_info tiling_info; }; struct radeon *r600_new(int fd, unsigned device); -- cgit v1.2.3 From 5b966f58e3d87fc271cc429be969cf98eec991ca Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 8 Oct 2010 11:57:04 +1000 Subject: r600g: set tiling bits in hw state --- src/gallium/drivers/r600/r600_state.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 2c0a2005cf7..00234f956aa 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -657,6 +657,10 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c bo[1] = rbuffer->bo; } pitch = align(tmp->pitch_in_pixels[0], 8); + if (tmp->tiled) { + array_mode = tmp->array_mode; + tile_type = tmp->tile_type; + } /* FIXME properly handle first level != 0 */ r600_pipe_state_add_reg(rstate, R_038000_RESOURCE0_WORD0, @@ -957,6 +961,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta swap = r600_translate_colorswap(rtex->resource.base.b.format); color_info = S_0280A0_FORMAT(format) | S_0280A0_COMP_SWAP(swap) | + S_0280A0_ARRAY_MODE(rtex->array_mode); S_0280A0_BLEND_CLAMP(1) | S_0280A0_NUMBER_TYPE(ntype); if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) -- cgit v1.2.3 From b5236f3da482665567a9d53264e6203092120c31 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 17 Oct 2010 17:53:29 -0700 Subject: llvmpipe: clean up fields in draw_llvm_variant_key --- src/gallium/auxiliary/draw/draw_llvm.c | 15 +++++---------- src/gallium/auxiliary/draw/draw_llvm.h | 8 ++++---- 2 files changed, 9 insertions(+), 14 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 7afa37ba94c..ebd8b9d4ad3 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -847,7 +847,7 @@ generate_clipmask(LLVMBuilderRef builder, boolean clip_xy, boolean clip_z, boolean clip_user, - boolean enable_d3dclipping, + boolean clip_halfz, unsigned nr, LLVMValueRef context_ptr) { @@ -900,7 +900,7 @@ generate_clipmask(LLVMBuilderRef builder, } if (clip_z){ - if (enable_d3dclipping){ + if (clip_halfz){ /* plane 5 */ test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, pos_z); temp = LLVMBuildShl(builder, temp, shift, ""); @@ -980,18 +980,13 @@ clipmask_bool(LLVMBuilderRef builder, LLVMValueRef temp; int i; - LLVMDumpValue(clipmask); - for (i=0; i<4; i++){ temp = LLVMBuildExtractElement(builder, clipmask, LLVMConstInt(LLVMInt32Type(), i, 0) , ""); ret = LLVMBuildOr(builder, ret, temp, ""); - LLVMDumpValue(ret); } LLVMBuildStore(builder, ret, ret_ptr); - LLVMDumpValue(ret_ptr); - } static void @@ -1133,7 +1128,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) variant->key.clip_xy, variant->key.clip_z, variant->key.clip_user, - variant->key.enable_d3dclipping, + variant->key.clip_halfz, variant->key.nr_planes, context_ptr); /* return clipping boolean value for function */ @@ -1344,7 +1339,7 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian variant->key.clip_xy, variant->key.clip_z, variant->key.clip_user, - variant->key.enable_d3dclipping, + variant->key.clip_halfz, variant->key.nr_planes, context_ptr); /* return clipping boolean value for function */ @@ -1428,7 +1423,7 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store) key->clip_z = llvm->draw->clip_z; key->clip_user = llvm->draw->clip_user; key->bypass_viewport = llvm->draw->identity_viewport; - key->enable_d3dclipping = (boolean)!llvm->draw->rasterizer->gl_rasterization_rules; + key->clip_halfz = !llvm->draw->rasterizer->gl_rasterization_rules; key->need_edgeflags = (llvm->draw->vs.edgeflag_output ? TRUE : FALSE); key->nr_planes = llvm->draw->nr_planes; key->pad = 0; diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index def068179fd..b5b8c668d74 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -160,16 +160,16 @@ typedef int struct draw_llvm_variant_key { - unsigned nr_vertex_elements:16; - unsigned nr_samplers:12; + unsigned nr_vertex_elements:8; + unsigned nr_samplers:8; unsigned clip_xy:1; unsigned clip_z:1; unsigned clip_user:1; + unsigned clip_halfz:1; unsigned bypass_viewport:1; - unsigned enable_d3dclipping:1; unsigned need_edgeflags:1; unsigned nr_planes:4; - unsigned pad:26; + unsigned pad:6; /* Variable number of vertex elements: */ -- cgit v1.2.3 From 4dfb43c6a655574a9b59b552d05408c027d8cfaa Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Sun, 17 Oct 2010 13:41:45 -0700 Subject: gallivm: Comment lp_build_insert_new_block(). --- src/gallium/auxiliary/gallivm/lp_bld_flow.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c index f9d061fcb44..a2cee199a01 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c @@ -39,6 +39,14 @@ /** + * Insert a new block, right where builder is pointing to. + * + * This is useful important not only for aesthetic reasons, but also for + * performance reasons, as frequently run blocks should be laid out next to + * each other and fall-throughs maximized. + * + * See also llvm/lib/Transforms/Scalar/BasicBlockPlacement.cpp. + * * Note: this function has no dependencies on the flow code and could * be used elsewhere. */ -- cgit v1.2.3 From 543fb77ddece7e1806e8eaa0d65bb2a945ef9a75 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 17 Oct 2010 18:29:28 -0700 Subject: llvmpipe: remove setup fallback path --- src/gallium/drivers/llvmpipe/Makefile | 1 + src/gallium/drivers/llvmpipe/SConscript | 1 - src/gallium/drivers/llvmpipe/lp_state_setup.c | 13 +- .../drivers/llvmpipe/lp_state_setup_fallback.c | 265 --------------------- 4 files changed, 3 insertions(+), 277 deletions(-) delete mode 100644 src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/Makefile b/src/gallium/drivers/llvmpipe/Makefile index 55b877b4ab9..379f14b43d2 100644 --- a/src/gallium/drivers/llvmpipe/Makefile +++ b/src/gallium/drivers/llvmpipe/Makefile @@ -38,6 +38,7 @@ C_SOURCES = \ lp_state_clip.c \ lp_state_derived.c \ lp_state_fs.c \ + lp_state_setup.c \ lp_state_gs.c \ lp_state_rasterizer.c \ lp_state_sampler.c \ diff --git a/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript index 6ddce659206..f893878daab 100644 --- a/src/gallium/drivers/llvmpipe/SConscript +++ b/src/gallium/drivers/llvmpipe/SConscript @@ -71,7 +71,6 @@ llvmpipe = env.ConvenienceLibrary( 'lp_state_derived.c', 'lp_state_fs.c', 'lp_state_setup.c', - 'lp_state_setup_fallback.c', 'lp_state_gs.c', 'lp_state_rasterizer.c', 'lp_state_sampler.c', diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.c b/src/gallium/drivers/llvmpipe/lp_state_setup.c index 3261c53f516..ee4991bf8d2 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.c @@ -704,17 +704,8 @@ llvmpipe_update_setup(struct llvmpipe_context *lp) } variant = generate_setup_variant(screen, key); - if (variant) { - insert_at_head(&lp->setup_variants_list, &variant->list_item_global); - lp->nr_setup_variants++; - } - else { - /* Keep the old path around for debugging, and also perhaps - * in case malloc fails during compilation. - */ - variant = &lp->setup_variant; - variant->jit_function = lp_setup_tri_fallback; - } + insert_at_head(&lp->setup_variants_list, &variant->list_item_global); + lp->nr_setup_variants++; } lp_setup_set_setup_variant(lp->setup, diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c b/src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c deleted file mode 100644 index 1922efcc88d..00000000000 --- a/src/gallium/drivers/llvmpipe/lp_state_setup_fallback.c +++ /dev/null @@ -1,265 +0,0 @@ -/************************************************************************** - * - * Copyright 2010, VMware. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/* - * Fallback (non-llvm) path for triangle setup. Will remove once llvm - * is up and running. - * - * TODO: line/point setup. - */ - -#include "util/u_math.h" -#include "util/u_memory.h" -#include "lp_state_setup.h" - - - -#if defined(PIPE_ARCH_SSE) -#include - -struct setup_args { - float (*a0)[4]; /* aligned */ - float (*dadx)[4]; /* aligned */ - float (*dady)[4]; /* aligned */ - - float x0_center; - float y0_center; - - /* turn these into an aligned float[4] */ - float dy01_ooa; - float dy20_ooa; - float dx01_ooa; - float dx20_ooa; - - const float (*v0)[4]; /* aligned */ - const float (*v1)[4]; /* aligned */ - const float (*v2)[4]; /* aligned */ - - boolean frontfacing; /* remove eventually */ -}; - - -static void constant_coef4( struct setup_args *args, - unsigned slot, - const float *attr) -{ - *(__m128 *)args->a0[slot] = *(__m128 *)attr; - *(__m128 *)args->dadx[slot] = _mm_set1_ps(0.0); - *(__m128 *)args->dady[slot] = _mm_set1_ps(0.0); -} - - - -/** - * Setup the fragment input attribute with the front-facing value. - * \param frontface is the triangle front facing? - */ -static void setup_facing_coef( struct setup_args *args, - unsigned slot ) -{ - /* XXX: just pass frontface directly to the shader, don't bother - * treating it as an input. - */ - __m128 a0 = _mm_setr_ps(args->frontfacing ? 1.0 : -1.0, - 0, 0, 0); - - *(__m128 *)args->a0[slot] = a0; - *(__m128 *)args->dadx[slot] = _mm_set1_ps(0.0); - *(__m128 *)args->dady[slot] = _mm_set1_ps(0.0); -} - - - -static void calc_coef4( struct setup_args *args, - unsigned slot, - __m128 a0, - __m128 a1, - __m128 a2) -{ - __m128 da01 = _mm_sub_ps(a0, a1); - __m128 da20 = _mm_sub_ps(a2, a0); - - __m128 da01_dy20_ooa = _mm_mul_ps(da01, _mm_set1_ps(args->dy20_ooa)); - __m128 da20_dy01_ooa = _mm_mul_ps(da20, _mm_set1_ps(args->dy01_ooa)); - __m128 dadx = _mm_sub_ps(da01_dy20_ooa, da20_dy01_ooa); - - __m128 da01_dx20_ooa = _mm_mul_ps(da01, _mm_set1_ps(args->dx20_ooa)); - __m128 da20_dx01_ooa = _mm_mul_ps(da20, _mm_set1_ps(args->dx01_ooa)); - __m128 dady = _mm_sub_ps(da20_dx01_ooa, da01_dx20_ooa); - - __m128 dadx_x0 = _mm_mul_ps(dadx, _mm_set1_ps(args->x0_center)); - __m128 dady_y0 = _mm_mul_ps(dady, _mm_set1_ps(args->y0_center)); - __m128 attr_v0 = _mm_add_ps(dadx_x0, dady_y0); - __m128 attr_0 = _mm_sub_ps(a0, attr_v0); - - *(__m128 *)args->a0[slot] = attr_0; - *(__m128 *)args->dadx[slot] = dadx; - *(__m128 *)args->dady[slot] = dady; -} - - -static void linear_coef( struct setup_args *args, - unsigned slot, - unsigned vert_attr) -{ - __m128 a0 = *(const __m128 *)args->v0[vert_attr]; - __m128 a1 = *(const __m128 *)args->v1[vert_attr]; - __m128 a2 = *(const __m128 *)args->v2[vert_attr]; - - calc_coef4(args, slot, a0, a1, a2); -} - - - -/** - * Compute a0, dadx and dady for a perspective-corrected interpolant, - * for a triangle. - * We basically multiply the vertex value by 1/w before computing - * the plane coefficients (a0, dadx, dady). - * Later, when we compute the value at a particular fragment position we'll - * divide the interpolated value by the interpolated W at that fragment. - */ -static void perspective_coef( struct setup_args *args, - unsigned slot, - unsigned vert_attr) -{ - /* premultiply by 1/w (v[0][3] is always 1/w): - */ - __m128 a0 = *(const __m128 *)args->v0[vert_attr]; - __m128 a1 = *(const __m128 *)args->v1[vert_attr]; - __m128 a2 = *(const __m128 *)args->v2[vert_attr]; - - __m128 a0_oow = _mm_mul_ps(a0, _mm_set1_ps(args->v0[0][3])); - __m128 a1_oow = _mm_mul_ps(a1, _mm_set1_ps(args->v1[0][3])); - __m128 a2_oow = _mm_mul_ps(a2, _mm_set1_ps(args->v2[0][3])); - - calc_coef4(args, slot, a0_oow, a1_oow, a2_oow); -} - - - - - -/** - * Compute the args-> dadx, dady, a0 values. - * - * Note that this was effectively a little interpreted program, where - * the opcodes were LP_INTERP_*. This is the program which is now - * being code-generated in lp_state_setup.c. - */ -void lp_setup_tri_fallback( const float (*v0)[4], - const float (*v1)[4], - const float (*v2)[4], - boolean front_facing, - float (*a0)[4], - float (*dadx)[4], - float (*dady)[4], - const struct lp_setup_variant_key *key ) -{ - struct setup_args args; - float pixel_offset = key->pixel_center_half ? 0.5 : 0.0; - float dx01 = v0[0][0] - v1[0][0]; - float dy01 = v0[0][1] - v1[0][1]; - float dx20 = v2[0][0] - v0[0][0]; - float dy20 = v2[0][1] - v0[0][1]; - float oneoverarea = 1.0f / (dx01 * dy20 - dx20 * dy01); - unsigned slot; - - args.v0 = v0; - args.v1 = v1; - args.v2 = v2; - args.frontfacing = front_facing; - args.a0 = a0; - args.dadx = dadx; - args.dady = dady; - - args.x0_center = v0[0][0] - pixel_offset; - args.y0_center = v0[0][1] - pixel_offset; - args.dx01_ooa = dx01 * oneoverarea; - args.dx20_ooa = dx20 * oneoverarea; - args.dy01_ooa = dy01 * oneoverarea; - args.dy20_ooa = dy20 * oneoverarea; - - /* The internal position input is in slot zero: - */ - linear_coef(&args, 0, 0); - - /* setup interpolation for all the remaining attributes: - */ - for (slot = 0; slot < key->num_inputs; slot++) { - unsigned vert_attr = key->inputs[slot].src_index; - - switch (key->inputs[slot].interp) { - case LP_INTERP_CONSTANT: - if (key->flatshade_first) { - constant_coef4(&args, slot+1, args.v0[vert_attr]); - } - else { - constant_coef4(&args, slot+1, args.v2[vert_attr]); - } - break; - - case LP_INTERP_LINEAR: - linear_coef(&args, slot+1, vert_attr); - break; - - case LP_INTERP_PERSPECTIVE: - perspective_coef(&args, slot+1, vert_attr); - break; - - case LP_INTERP_POSITION: - /* - * The generated pixel interpolators will pick up the coeffs from - * slot 0. - */ - break; - - case LP_INTERP_FACING: - setup_facing_coef(&args, slot+1); - break; - - default: - assert(0); - } - } -} - -#else - -void lp_setup_tri_fallback( const float (*v0)[4], - const float (*v1)[4], - const float (*v2)[4], - boolean front_facing, - float (*a0)[4], - float (*dadx)[4], - float (*dady)[4], - const struct lp_setup_variant_key *key ) -{ - /* this path for debugging only, don't need a non-sse version. */ -} - -#endif -- cgit v1.2.3 From ca2b2ac131933b4171b519813df1aaa3a81621cd Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 17 Oct 2010 18:48:11 -0700 Subject: llvmpipe: fail cleanly on malloc failure in lp_setup_alloc_triangle --- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index c6cb9afda47..15c414d8c3b 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -86,9 +86,10 @@ lp_setup_alloc_triangle(struct lp_scene *scene, plane_sz); tri = lp_scene_alloc_aligned( scene, *tri_size, 16 ); - if (tri) { - tri->inputs.stride = input_array_sz; - } + if (tri == NULL) + return NULL; + + tri->inputs.stride = input_array_sz; { char *a = (char *)tri; @@ -96,7 +97,6 @@ lp_setup_alloc_triangle(struct lp_scene *scene, assert(b - a == *tri_size); } - return tri; } -- cgit v1.2.3 From 75799b8d02ff3bc6acc5157bf62ee2188e9f3ee3 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 17 Oct 2010 19:11:47 -0700 Subject: llvmpipe: remove unused file --- src/gallium/drivers/llvmpipe/SConscript | 1 - src/gallium/drivers/llvmpipe/lp_setup_debug.c | 1 - 2 files changed, 2 deletions(-) delete mode 100644 src/gallium/drivers/llvmpipe/lp_setup_debug.c (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript index d63bdd72a72..49950153a4f 100644 --- a/src/gallium/drivers/llvmpipe/SConscript +++ b/src/gallium/drivers/llvmpipe/SConscript @@ -55,7 +55,6 @@ llvmpipe = env.ConvenienceLibrary( 'lp_scene_queue.c', 'lp_screen.c', 'lp_setup.c', - 'lp_setup_debug.c', 'lp_setup_line.c', 'lp_setup_point.c', 'lp_setup_tri.c', diff --git a/src/gallium/drivers/llvmpipe/lp_setup_debug.c b/src/gallium/drivers/llvmpipe/lp_setup_debug.c deleted file mode 100644 index a71a4719a86..00000000000 --- a/src/gallium/drivers/llvmpipe/lp_setup_debug.c +++ /dev/null @@ -1 +0,0 @@ -/* Some debugging stuff */ -- cgit v1.2.3 From 9da17fed2e7645a401a378ae690eb23513948e18 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 17 Oct 2010 19:23:40 -0700 Subject: llvmpipe: remove unused arg from jit_setup_tri function --- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 3 +-- src/gallium/drivers/llvmpipe/lp_state_setup.c | 3 +-- src/gallium/drivers/llvmpipe/lp_state_setup.h | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 03036cd75d2..4ab0b72a574 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -323,8 +323,7 @@ do_triangle_ccw(struct lp_setup_context *setup, frontfacing, GET_A0(&tri->inputs), GET_DADX(&tri->inputs), - GET_DADY(&tri->inputs), - &setup->setup.variant->key ); + GET_DADY(&tri->inputs) ); tri->inputs.frontfacing = frontfacing; tri->inputs.disable = FALSE; diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.c b/src/gallium/drivers/llvmpipe/lp_state_setup.c index a8dee280dd5..2c8b8b9a928 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.c @@ -485,7 +485,7 @@ generate_setup_variant(struct llvmpipe_screen *screen, char func_name[256]; LLVMTypeRef vec4f_type; LLVMTypeRef func_type; - LLVMTypeRef arg_types[8]; + LLVMTypeRef arg_types[7]; LLVMBasicBlockRef block; LLVMBuilderRef builder; int64_t t0, t1; @@ -521,7 +521,6 @@ generate_setup_variant(struct llvmpipe_screen *screen, arg_types[4] = LLVMPointerType(vec4f_type, 0); /* a0, aligned */ arg_types[5] = LLVMPointerType(vec4f_type, 0); /* dadx, aligned */ arg_types[6] = LLVMPointerType(vec4f_type, 0); /* dady, aligned */ - arg_types[7] = LLVMPointerType(vec4f_type, 0); /* key, unused */ func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0); diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.h b/src/gallium/drivers/llvmpipe/lp_state_setup.h index 2b080fbc321..b0c81baa75f 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_setup.h +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.h @@ -30,8 +30,7 @@ typedef void (*lp_jit_setup_triangle)( const float (*v0)[4], boolean front_facing, float (*a0)[4], float (*dadx)[4], - float (*dady)[4], - const struct lp_setup_variant_key *key ); + float (*dady)[4] ); -- cgit v1.2.3 From a1b7333c07797faea29f50fd49b6c5e877beca0a Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 18 Oct 2010 12:04:57 +1000 Subject: r600g: do proper tracking of views/samplers. we need to do pretty much what r300g does in for this, this fixes some issues seen while working on tiling. --- src/gallium/drivers/r600/evergreen_state.c | 29 +++++++++++++++++++++-------- src/gallium/drivers/r600/r600_pipe.h | 6 ++++-- src/gallium/drivers/r600/r600_state.c | 25 +++++++++++++++++++------ 3 files changed, 44 insertions(+), 16 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 935496c04af..ce34ed4ad3c 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -500,15 +500,27 @@ static void evergreen_set_ps_sampler_view(struct pipe_context *ctx, unsigned cou { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_sampler_view **resource = (struct r600_pipe_sampler_view **)views; - - rctx->ps_samplers.views = resource; - rctx->ps_samplers.n_views = count; - - for (int i = 0; i < count; i++) { - if (resource[i]) { - evergreen_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i); + int i; + + for (i = 0; i < count; i++) { + if (&rctx->ps_samplers.views[i]->base != views[i]) { + if (resource[i]) + evergreen_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i); + else + evergreen_context_pipe_state_set_ps_resource(&rctx->ctx, NULL, i); + + pipe_sampler_view_reference( + (struct pipe_sampler_view **)&rctx->ps_samplers.views[i], + views[i]); } } + for (i = count; i < NUM_TEX_UNITS; i++) { + if (rctx->ps_samplers.views[i]) { + evergreen_context_pipe_state_set_ps_resource(&rctx->ctx, NULL, i); + pipe_sampler_view_reference((struct pipe_sampler_view **)&rctx->ps_samplers.views[i], NULL); + } + } + rctx->ps_samplers.n_views = count; } static void evergreen_bind_state(struct pipe_context *ctx, void *state) @@ -527,7 +539,8 @@ static void evergreen_bind_ps_sampler(struct pipe_context *ctx, unsigned count, struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state **rstates = (struct r600_pipe_state **)states; - rctx->ps_samplers.samplers = states; + + memcpy(rctx->ps_samplers.samplers, states, sizeof(void*) * count); rctx->ps_samplers.n_samplers = count; for (int i = 0; i < count; i++) { diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 35548329e46..e7c4b60d00c 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -94,10 +94,12 @@ struct r600_pipe_shader { }; /* needed for blitter save */ +#define NUM_TEX_UNITS 16 + struct r600_textures_info { - struct r600_pipe_sampler_view **views; + struct r600_pipe_sampler_view *views[NUM_TEX_UNITS]; unsigned n_views; - void **samplers; + void *samplers[NUM_TEX_UNITS]; unsigned n_samplers; }; diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 00234f956aa..a95e2c6590c 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -710,15 +710,28 @@ static void r600_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_sampler_view **resource = (struct r600_pipe_sampler_view **)views; + int i; - rctx->ps_samplers.views = resource; - rctx->ps_samplers.n_views = count; + for (i = 0; i < count; i++) { + if (&rctx->ps_samplers.views[i]->base != views[i]) { + if (resource[i]) + r600_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i); + else + r600_context_pipe_state_set_ps_resource(&rctx->ctx, NULL, i); + + pipe_sampler_view_reference( + (struct pipe_sampler_view **)&rctx->ps_samplers.views[i], + views[i]); - for (int i = 0; i < count; i++) { - if (resource[i]) { - r600_context_pipe_state_set_ps_resource(&rctx->ctx, &resource[i]->state, i); } } + for (i = count; i < NUM_TEX_UNITS; i++) { + if (rctx->ps_samplers.views[i]) { + r600_context_pipe_state_set_ps_resource(&rctx->ctx, NULL, i); + pipe_sampler_view_reference((struct pipe_sampler_view **)&rctx->ps_samplers.views[i], NULL); + } + } + rctx->ps_samplers.n_views = count; } static void r600_bind_state(struct pipe_context *ctx, void *state) @@ -737,7 +750,7 @@ static void r600_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_state **rstates = (struct r600_pipe_state **)states; - rctx->ps_samplers.samplers = states; + memcpy(rctx->ps_samplers.samplers, states, sizeof(void*) * count); rctx->ps_samplers.n_samplers = count; for (int i = 0; i < count; i++) { -- cgit v1.2.3 From 69f8eebe726d01d013f7cdea6c0d058ff6b04337 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 18 Oct 2010 12:05:38 +1000 Subject: r600g: fix typo in tiling setup cb code. --- src/gallium/drivers/r600/r600_state.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index a95e2c6590c..81d25b54203 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -974,7 +974,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta swap = r600_translate_colorswap(rtex->resource.base.b.format); color_info = S_0280A0_FORMAT(format) | S_0280A0_COMP_SWAP(swap) | - S_0280A0_ARRAY_MODE(rtex->array_mode); + S_0280A0_ARRAY_MODE(rtex->array_mode) | S_0280A0_BLEND_CLAMP(1) | S_0280A0_NUMBER_TYPE(ntype); if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) -- cgit v1.2.3 From 21c6459dfbe3434fd80bc1beaffb9f71a34e8994 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 18 Oct 2010 13:23:34 +1000 Subject: r600g: depth needs to bound to ds --- src/gallium/drivers/r600/r600_texture.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 152cd9210fd..07156bb7acc 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -318,7 +318,7 @@ int r600_texture_depth_flush(struct pipe_context *ctx, resource.bind = 0; resource.flags = 0; - resource.bind |= PIPE_BIND_RENDER_TARGET; + resource.bind |= PIPE_BIND_DEPTH_STENCIL; rtex->flushed_depth_texture = (struct r600_resource_texture *)ctx->screen->resource_create(ctx->screen, &resource); if (rtex->flushed_depth_texture == NULL) { -- cgit v1.2.3 From c61b97d50425236f001dbc54f098318f921fe916 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 18 Oct 2010 12:05:27 +1000 Subject: r600g: attempt to cleanup depth blit cleanup what I'm nearly sure is unnecessary work in the depth blit code. --- src/gallium/drivers/r600/r600_blit.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index cae05aab28b..50d47060c1a 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -81,19 +81,10 @@ static void r600_blitter_end(struct pipe_context *ctx) int r600_blit_uncompress_depth(struct pipe_context *ctx, struct r600_resource_texture *texture) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct pipe_framebuffer_state fb = *rctx->pframebuffer; struct pipe_surface *zsurf, *cbsurf; int level = 0; float depth = 1.0f; - r600_context_queries_suspend(&rctx->ctx); - for (int i = 0; i < fb.nr_cbufs; i++) { - fb.cbufs[i] = NULL; - pipe_surface_reference(&fb.cbufs[i], rctx->pframebuffer->cbufs[i]); - } - fb.zsbuf = NULL; - pipe_surface_reference(&fb.zsbuf, rctx->pframebuffer->zsbuf); - zsurf = ctx->screen->get_tex_surface(ctx->screen, &texture->resource.base.b, 0, level, 0, PIPE_BIND_DEPTH_STENCIL); @@ -101,21 +92,17 @@ int r600_blit_uncompress_depth(struct pipe_context *ctx, struct r600_resource_te (struct pipe_resource*)texture->flushed_depth_texture, 0, level, 0, PIPE_BIND_RENDER_TARGET); - r600_blitter_begin(ctx, R600_CLEAR); - util_blitter_save_framebuffer(rctx->blitter, &fb); if (rctx->family == CHIP_RV610 || rctx->family == CHIP_RV630 || - rctx->family == CHIP_RV620 || rctx->family == CHIP_RV635) + rctx->family == CHIP_RV620 || rctx->family == CHIP_RV635) depth = 0.0f; + r600_blitter_begin(ctx, R600_CLEAR_SURFACE); util_blitter_custom_depth_stencil(rctx->blitter, zsurf, cbsurf, rctx->custom_dsa_flush, depth); + r600_blitter_end(ctx); pipe_surface_reference(&zsurf, NULL); pipe_surface_reference(&cbsurf, NULL); - for (int i = 0; i < fb.nr_cbufs; i++) { - pipe_surface_reference(&fb.cbufs[i], NULL); - } - pipe_surface_reference(&fb.zsbuf, NULL); - r600_context_queries_resume(&rctx->ctx); + return 0; } -- cgit v1.2.3 From 375613afe38e0704b4ce38e64765b12d9660a846 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 13 Oct 2010 10:44:46 +1000 Subject: r600g: fix transfer function for tiling. this makes readback with tiled back work better. --- src/gallium/drivers/r600/r600_texture.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 07156bb7acc..edaebf86395 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -349,8 +349,6 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, trans->transfer.sr = sr; trans->transfer.usage = usage; trans->transfer.box = *box; - trans->transfer.stride = rtex->pitch_in_bytes[sr.level]; - trans->offset = r600_texture_get_offset(rtex, sr.level, box->z, sr.face); if (rtex->depth) { r = r600_texture_depth_flush(ctx, texture); if (r < 0) { @@ -398,7 +396,10 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, /* Always referenced in the blit. */ ctx->flush(ctx, 0, NULL); } + return &trans->transfer; } + trans->transfer.stride = rtex->pitch_in_bytes[sr.level]; + trans->offset = r600_texture_get_offset(rtex, sr.level, box->z, sr.face); return &trans->transfer; } -- cgit v1.2.3 From 8a74f7422bedb419f3527bb1ccd60e1e9220502c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 18 Oct 2010 09:45:58 +1000 Subject: r600g: retrieve tiling info from kernel for shared buffers. we need to know if the back is tiled so we can blit from it properly. --- src/gallium/drivers/r600/r600.h | 2 +- src/gallium/drivers/r600/r600_buffer.c | 2 +- src/gallium/drivers/r600/r600_texture.c | 7 +++++-- src/gallium/winsys/r600/drm/r600_bo.c | 18 +++++++++++++++++- src/gallium/winsys/r600/drm/r600_priv.h | 7 ++++++- src/gallium/winsys/r600/drm/radeon_bo.c | 19 +++++++++++++++++++ 6 files changed, 49 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h index 15ee0011061..62d983269f5 100644 --- a/src/gallium/drivers/r600/r600.h +++ b/src/gallium/drivers/r600/r600.h @@ -114,7 +114,7 @@ struct r600_bo; struct r600_bo *r600_bo(struct radeon *radeon, unsigned size, unsigned alignment, unsigned usage); struct r600_bo *r600_bo_handle(struct radeon *radeon, - unsigned handle); + unsigned handle, unsigned *array_mode); void *r600_bo_map(struct radeon *radeon, struct r600_bo *bo, unsigned usage, void *ctx); void r600_bo_unmap(struct radeon *radeon, struct r600_bo *bo); void r600_bo_reference(struct radeon *radeon, struct r600_bo **dst, diff --git a/src/gallium/drivers/r600/r600_buffer.c b/src/gallium/drivers/r600/r600_buffer.c index 2bfa4e22fec..455aa2e81f6 100644 --- a/src/gallium/drivers/r600/r600_buffer.c +++ b/src/gallium/drivers/r600/r600_buffer.c @@ -227,7 +227,7 @@ struct pipe_resource *r600_buffer_from_handle(struct pipe_screen *screen, struct r600_resource *rbuffer; struct r600_bo *bo = NULL; - bo = r600_bo_handle(rw, whandle->handle); + bo = r600_bo_handle(rw, whandle->handle, NULL); if (bo == NULL) { return NULL; } diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index edaebf86395..95906a74eb3 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -192,6 +192,8 @@ r600_texture_create_object(struct pipe_screen *screen, rtex->pitch_override = pitch_in_bytes_override; rtex->array_mode = array_mode; + if (array_mode) + rtex->tiled = 1; r600_setup_miptree(screen, rtex); resource->size = rtex->size; @@ -271,18 +273,19 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen, { struct radeon *rw = (struct radeon*)screen->winsys; struct r600_bo *bo = NULL; + unsigned array_mode = 0; /* Support only 2D textures without mipmaps */ if ((templ->target != PIPE_TEXTURE_2D && templ->target != PIPE_TEXTURE_RECT) || templ->depth0 != 1 || templ->last_level != 0) return NULL; - bo = r600_bo_handle(rw, whandle->handle); + bo = r600_bo_handle(rw, whandle->handle, &array_mode); if (bo == NULL) { return NULL; } - return (struct pipe_resource *)r600_texture_create_object(screen, templ, 0, + return (struct pipe_resource *)r600_texture_create_object(screen, templ, array_mode, whandle->stride, 0, bo); diff --git a/src/gallium/winsys/r600/drm/r600_bo.c b/src/gallium/winsys/r600/drm/r600_bo.c index 9498f3a82ea..7d54ff18fc2 100644 --- a/src/gallium/winsys/r600/drm/r600_bo.c +++ b/src/gallium/winsys/r600/drm/r600_bo.c @@ -26,7 +26,9 @@ #include #include #include +#include "radeon_drm.h" #include "r600_priv.h" +#include "r600d.h" struct r600_bo *r600_bo(struct radeon *radeon, unsigned size, unsigned alignment, unsigned usage) @@ -55,7 +57,7 @@ struct r600_bo *r600_bo(struct radeon *radeon, } struct r600_bo *r600_bo_handle(struct radeon *radeon, - unsigned handle) + unsigned handle, unsigned *array_mode) { struct r600_bo *ws_bo = calloc(1, sizeof(struct r600_bo)); struct radeon_bo *bo; @@ -68,6 +70,20 @@ struct r600_bo *r600_bo_handle(struct radeon *radeon, bo = radeon_bo_pb_get_bo(ws_bo->pb); ws_bo->size = bo->size; pipe_reference_init(&ws_bo->reference, 1); + + radeon_bo_get_tiling_flags(radeon, bo, &ws_bo->tiling_flags, + &ws_bo->kernel_pitch); + if (array_mode) { + if (ws_bo->tiling_flags) { + if (ws_bo->tiling_flags & RADEON_TILING_MICRO) + *array_mode = V_0280A0_ARRAY_1D_TILED_THIN1; + if ((ws_bo->tiling_flags & (RADEON_TILING_MICRO | RADEON_TILING_MACRO)) == + (RADEON_TILING_MICRO | RADEON_TILING_MACRO)) + *array_mode = V_0280A0_ARRAY_2D_TILED_THIN1; + } else { + *array_mode = 0; + } + } return ws_bo; } diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index 08e243b00d0..b5bd7bd92c1 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -77,6 +77,8 @@ struct r600_bo { struct pipe_reference reference; struct pb_buffer *pb; unsigned size; + unsigned tiling_flags; + unsigned kernel_pitch; }; @@ -95,7 +97,10 @@ int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo); int radeon_bo_busy(struct radeon *radeon, struct radeon_bo *bo, uint32_t *domain); void radeon_bo_pbmgr_flush_maps(struct pb_manager *_mgr); int radeon_bo_fencelist(struct radeon *radeon, struct radeon_bo **bolist, uint32_t num_bo); - +int radeon_bo_get_tiling_flags(struct radeon *radeon, + struct radeon_bo *bo, + uint32_t *tiling_flags, + uint32_t *pitch); /* radeon_bo_pb.c */ struct radeon_bo *radeon_bo_pb_get_bo(struct pb_buffer *_buf); diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c b/src/gallium/winsys/r600/drm/radeon_bo.c index 14a00161c8b..9d664b7e537 100644 --- a/src/gallium/winsys/r600/drm/radeon_bo.c +++ b/src/gallium/winsys/r600/drm/radeon_bo.c @@ -200,3 +200,22 @@ int radeon_bo_busy(struct radeon *radeon, struct radeon_bo *bo, uint32_t *domain *domain = args.domain; return ret; } + +int radeon_bo_get_tiling_flags(struct radeon *radeon, + struct radeon_bo *bo, + uint32_t *tiling_flags, + uint32_t *pitch) +{ + struct drm_radeon_gem_get_tiling args; + int ret; + + args.handle = bo->handle; + ret = drmCommandWriteRead(radeon->fd, DRM_RADEON_GEM_GET_TILING, + &args, sizeof(args)); + if (ret) + return ret; + + *tiling_flags = args.tiling_flags; + *pitch = args.pitch; + return ret; +} -- cgit v1.2.3 From e19187e1beee9ea962f6d86cc4964b38fbcf768b Mon Sep 17 00:00:00 2001 From: Victor Tseng Date: Mon, 18 Oct 2010 07:55:37 -0600 Subject: egl/i965: include inline_wrapper_sw_helper.h Signed-off-by: Brian Paul --- src/gallium/targets/egl/pipe_i965.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/targets/egl/pipe_i965.c b/src/gallium/targets/egl/pipe_i965.c index 6b886fb3f14..f810ecffb0a 100644 --- a/src/gallium/targets/egl/pipe_i965.c +++ b/src/gallium/targets/egl/pipe_i965.c @@ -1,5 +1,6 @@ #include "target-helpers/inline_debug_helper.h" +#include "target-helpers/inline_wrapper_sw_helper.h" #include "state_tracker/drm_driver.h" #include "i965/drm/i965_drm_public.h" #include "i965/brw_public.h" -- cgit v1.2.3 From 01e0aaefcc0b9dbef47df4c2fc08118013db6894 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 18 Oct 2010 07:59:02 -0600 Subject: llvmpipe: remove lp_setup_coef*.c files from Makefile --- src/gallium/drivers/llvmpipe/Makefile | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/Makefile b/src/gallium/drivers/llvmpipe/Makefile index 726a19db2b5..08da2286b05 100644 --- a/src/gallium/drivers/llvmpipe/Makefile +++ b/src/gallium/drivers/llvmpipe/Makefile @@ -28,8 +28,6 @@ C_SOURCES = \ lp_scene_queue.c \ lp_screen.c \ lp_setup.c \ - lp_setup_coef.c \ - lp_setup_coef_intrin.c \ lp_setup_line.c \ lp_setup_point.c \ lp_setup_tri.c \ -- cgit v1.2.3 From ac17c62ecebf684eefcff65b9d58947a61ac361b Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 18 Oct 2010 09:32:35 -0700 Subject: gallivm: Add a note about SSE4.1's nearest mode rounding. --- src/gallium/auxiliary/gallivm/lp_bld_arit.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 00f419a486d..f9a12a41a1b 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -983,6 +983,12 @@ enum lp_build_round_sse41_mode }; +/** + * Helper for SSE4.1's ROUNDxx instructions. + * + * NOTE: In the SSE4.1's nearest mode, if two values are equally close, the + * result is the even value. That is, rounding 2.5 will be 2.0, and not 3.0. + */ static INLINE LLVMValueRef lp_build_round_sse41(struct lp_build_context *bld, LLVMValueRef a, -- cgit v1.2.3 From f37b114dc3b9281938738572246fe7c685cf7211 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 18 Oct 2010 09:35:21 -0700 Subject: llvmpipe: Don't test rounding of x.5 numbers. SSE4.1 has different rules, and so far this doesn't seem to cause any problems with conformance test suites. --- src/gallium/drivers/llvmpipe/lp_test_round.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_test_round.c b/src/gallium/drivers/llvmpipe/lp_test_round.c index 0ca27915923..816518e5081 100644 --- a/src/gallium/drivers/llvmpipe/lp_test_round.c +++ b/src/gallium/drivers/llvmpipe/lp_test_round.c @@ -171,9 +171,12 @@ test_round(unsigned verbose, FILE *fp) LLVMDumpModule(module); for (i = 0; i < 3; i++) { + /* NOTE: There are several acceptable rules for x.5 rounding: ceiling, + * nearest even, etc. So we avoid testing such corner cases here. + */ v4sf xvals[3] = { {-10.0, -1, 0, 12.0}, - {-1.5, -0.25, 1.25, 2.5}, + {-1.49, -0.25, 1.25, 2.51}, {-0.99, -0.01, 0.01, 0.99} }; v4sf x = xvals[i]; -- cgit v1.2.3 From f822cc22f223a0a4f9cf1cdd5871780e5df11d67 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Sun, 17 Oct 2010 23:17:01 -0700 Subject: r300g: Add new debug option for logging vertex/fragment program stats --- src/gallium/drivers/r300/r300_debug.c | 1 + src/gallium/drivers/r300/r300_fs.c | 5 +- src/gallium/drivers/r300/r300_screen.h | 1 + src/gallium/drivers/r300/r300_vs.c | 5 +- src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c | 4 +- src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c | 2 +- .../drivers/dri/r300/compiler/radeon_compiler.c | 66 ++++++++++++++++++++-- .../drivers/dri/r300/compiler/radeon_compiler.h | 5 +- .../dri/r300/compiler/radeon_remove_constants.c | 2 +- 9 files changed, 78 insertions(+), 13 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r300/r300_debug.c b/src/gallium/drivers/r300/r300_debug.c index 145a7985da3..f78fe34790c 100644 --- a/src/gallium/drivers/r300/r300_debug.c +++ b/src/gallium/drivers/r300/r300_debug.c @@ -29,6 +29,7 @@ static const struct debug_named_value debug_options[] = { { "fp", DBG_FP, "Log fragment program compilation" }, { "vp", DBG_VP, "Log vertex program compilation" }, + { "pstat", DBG_P_STAT, "Log vertex/fragment program stats" }, { "draw", DBG_DRAW, "Log draw calls" }, { "swtcl", DBG_SWTCL, "Log SWTCL-specific info" }, { "rsblock", DBG_RS_BLOCK, "Log rasterizer registers" }, diff --git a/src/gallium/drivers/r300/r300_fs.c b/src/gallium/drivers/r300/r300_fs.c index d9d4a9304df..c91532eb7b3 100644 --- a/src/gallium/drivers/r300/r300_fs.c +++ b/src/gallium/drivers/r300/r300_fs.c @@ -378,7 +378,8 @@ static void r300_translate_fragment_shader( /* Setup the compiler. */ memset(&compiler, 0, sizeof(compiler)); rc_init(&compiler.Base); - compiler.Base.Debug = DBG_ON(r300, DBG_FP); + DBG_ON(r300, DBG_FP) ? compiler.Base.Debug |= RC_DBG_LOG : 0; + DBG_ON(r300, DBG_P_STAT) ? compiler.Base.Debug |= RC_DBG_STATS : 0; compiler.code = &shader->code; compiler.state = shader->compare_state; @@ -395,7 +396,7 @@ static void r300_translate_fragment_shader( find_output_registers(&compiler, shader); - if (compiler.Base.Debug) { + if (compiler.Base.Debug & RC_DBG_LOG) { DBG(r300, DBG_FP, "r300: Initial fragment program\n"); tgsi_dump(tokens, 0); } diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h index dc2bc7e8279..8b7f1fab61b 100644 --- a/src/gallium/drivers/r300/r300_screen.h +++ b/src/gallium/drivers/r300/r300_screen.h @@ -102,6 +102,7 @@ r300_winsys_screen(struct pipe_screen *screen) { #define DBG_NO_CBZB (1 << 21) /* Statistics. */ #define DBG_STATS (1 << 24) +#define DBG_P_STAT (1 << 25) /*@}*/ static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags) diff --git a/src/gallium/drivers/r300/r300_vs.c b/src/gallium/drivers/r300/r300_vs.c index e2b9af9d018..65696555ac3 100644 --- a/src/gallium/drivers/r300/r300_vs.c +++ b/src/gallium/drivers/r300/r300_vs.c @@ -202,7 +202,8 @@ void r300_translate_vertex_shader(struct r300_context *r300, memset(&compiler, 0, sizeof(compiler)); rc_init(&compiler.Base); - compiler.Base.Debug = DBG_ON(r300, DBG_VP); + DBG_ON(r300, DBG_VP) ? compiler.Base.Debug |= RC_DBG_LOG : 0; + DBG_ON(r300, DBG_P_STAT) ? compiler.Base.Debug |= RC_DBG_STATS : 0; compiler.code = &vs->code; compiler.UserData = vs; compiler.Base.is_r500 = r300->screen->caps.is_r500; @@ -214,7 +215,7 @@ void r300_translate_vertex_shader(struct r300_context *r300, compiler.Base.max_alu_insts = r300->screen->caps.is_r500 ? 1024 : 256; compiler.Base.remove_unused_constants = TRUE; - if (compiler.Base.Debug) { + if (compiler.Base.Debug & RC_DBG_LOG) { DBG(r300, DBG_VP, "r300: Initial vertex program\n"); tgsi_dump(vs->state.tokens, 0); } diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c index 4793f335770..2f130198d35 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c @@ -145,8 +145,8 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c) {"final code validation", 0, 1, rc_validate_final_shader, NULL}, {"machine code generation", 0, is_r500, r500BuildFragmentProgramHwCode, NULL}, {"machine code generation", 0, !is_r500, r300BuildFragmentProgramHwCode, NULL}, - {"dump machine code", 0, is_r500 && c->Base.Debug, r500FragmentProgramDump, NULL}, - {"dump machine code", 0, !is_r500 && c->Base.Debug, r300FragmentProgramDump, NULL}, + {"dump machine code", 0, is_r500 && (c->Base.Debug & RC_DBG_LOG), r500FragmentProgramDump, NULL}, + {"dump machine code", 0, !is_r500 && (c->Base.Debug & RC_DBG_LOG), r300FragmentProgramDump, NULL}, {NULL, 0, 0, NULL, NULL} }; diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c index d7d49e514b9..bf8341f0173 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c @@ -1067,7 +1067,7 @@ void r3xx_compile_vertex_program(struct r300_vertex_program_compiler *c) {"dead constants", 1, kill_consts, rc_remove_unused_constants, &c->code->constants_remap_table}, {"final code validation", 0, 1, rc_validate_final_shader, NULL}, {"machine code generation", 0, 1, translate_vertex_program, NULL}, - {"dump machine code", 0,c->Base.Debug,r300_vertex_program_dump, NULL}, + {"dump machine code", 0, c->Base.Debug & RC_DBG_LOG, r300_vertex_program_dump, NULL}, {NULL, 0, 0, NULL, NULL} }; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c index b410b2daf42..125d64e6497 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c @@ -26,7 +26,9 @@ #include #include +#include "radeon_dataflow.h" #include "radeon_program.h" +#include "radeon_program_pair.h" void rc_init(struct radeon_compiler * c) @@ -50,7 +52,7 @@ void rc_debug(struct radeon_compiler * c, const char * fmt, ...) { va_list ap; - if (!c->Debug) + if (!(c->Debug & RC_DBG_LOG)) return; va_start(ap, fmt); @@ -84,7 +86,7 @@ void rc_error(struct radeon_compiler * c, const char * fmt, ...) } } - if (c->Debug) { + if (c->Debug & RC_DBG_LOG) { fprintf(stderr, "r300compiler error: "); va_start(ap, fmt); @@ -351,11 +353,65 @@ void rc_transform_fragment_face(struct radeon_compiler *c, unsigned face) } } +static void reg_count_callback(void * userdata, struct rc_instruction * inst, + rc_register_file file, unsigned int index, unsigned int mask) +{ + unsigned int * max_reg = userdata; + if (file == RC_FILE_TEMPORARY) + index > *max_reg ? *max_reg = index : 0; +} + +static void print_stats(struct radeon_compiler * c) +{ + struct rc_instruction * tmp; + unsigned i, max_reg, insts, fc, tex, alpha, rgb, presub; + max_reg = insts = fc = tex = alpha = rgb = presub = 0; + for(tmp = c->Program.Instructions.Next; tmp != &c->Program.Instructions; + tmp = tmp->Next){ + const struct rc_opcode_info * info; + rc_for_all_reads_mask(tmp, reg_count_callback, &max_reg); + if (tmp->Type == RC_INSTRUCTION_NORMAL) { + if (tmp->U.I.PreSub.Opcode != RC_PRESUB_NONE) + presub++; + info = rc_get_opcode_info(tmp->U.I.Opcode); + } else { + if (tmp->U.P.RGB.Src[RC_PAIR_PRESUB_SRC].Used) + presub++; + if (tmp->U.P.Alpha.Src[RC_PAIR_PRESUB_SRC].Used) + presub++; + /* Assuming alpha will never be a flow control or + * a tex instruction. */ + if (tmp->U.P.Alpha.Opcode != RC_OPCODE_NOP) + alpha++; + if (tmp->U.P.RGB.Opcode != RC_OPCODE_NOP) + rgb++; + info = rc_get_opcode_info(tmp->U.P.RGB.Opcode); + } + if (info->IsFlowControl) + fc++; + if (info->HasTexture) + tex++; + insts++; + } + if (insts < 4) + return; + fprintf(stderr,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "~%4u Instructions\n" + "~%4u Vector Instructions (RGB)\n" + "~%4u Scalar Instructions (Alpha)\n" + "~%4u Flow Control Instructions\n" + "~%4u Texture Instructions\n" + "~%4u Presub Operations\n" + "~%4u Temporary Registers\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + insts, rgb, alpha, fc, tex, presub, max_reg + 1); +} + /* Executes a list of compiler passes given in the parameter 'list'. */ void rc_run_compiler(struct radeon_compiler *c, struct radeon_compiler_pass *list, const char *shader_name) { - if (c->Debug) { + if (c->Debug & RC_DBG_LOG) { fprintf(stderr, "%s: before compilation\n", shader_name); rc_print_program(&c->Program); } @@ -367,12 +423,14 @@ void rc_run_compiler(struct radeon_compiler *c, struct radeon_compiler_pass *lis if (c->Error) return; - if (c->Debug && list[i].dump) { + if ((c->Debug & RC_DBG_LOG) && list[i].dump) { fprintf(stderr, "%s: after '%s'\n", shader_name, list[i].name); rc_print_program(&c->Program); } } } + if (c->Debug & RC_DBG_STATS) + print_stats(c); } void rc_validate_final_shader(struct radeon_compiler *c, void *user) diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h index 6d96ac9fdd9..31fd469a04f 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h @@ -30,12 +30,15 @@ #include "radeon_program.h" #include "radeon_emulate_loops.h" +#define RC_DBG_LOG (1 << 0) +#define RC_DBG_STATS (1 << 1) + struct rc_swizzle_caps; struct radeon_compiler { struct memory_pool Pool; struct rc_program Program; - unsigned Debug:1; + unsigned Debug:2; unsigned Error:1; char * ErrorMsg; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c b/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c index d6c808ad815..5f67f536f61 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c @@ -145,6 +145,6 @@ void rc_remove_unused_constants(struct radeon_compiler *c, void *user) free(const_used); free(inv_remap_table); - if (c->Debug) + if (c->Debug & RC_DBG_LOG) rc_constants_print(&c->Program.Constants); } -- cgit v1.2.3 From 0d0a6e9096f98cd6142d6a883e9a2884ccea0adb Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Thu, 14 Oct 2010 22:18:38 +0200 Subject: st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/Makefile | 2 +- src/gallium/targets/Makefile.xorg | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/Makefile b/src/gallium/state_trackers/xorg/Makefile index cb2c3aea410..7a44d28017b 100644 --- a/src/gallium/state_trackers/xorg/Makefile +++ b/src/gallium/state_trackers/xorg/Makefile @@ -10,7 +10,7 @@ LIBRARY_INCLUDES = \ $(shell pkg-config libkms --atleast-version=1.0 \ && echo "-DHAVE_LIBKMS") \ $(shell pkg-config libkms --silence-errors --cflags-only-I) \ - $(shell pkg-config --cflags-only-I pixman-1 xorg-server libdrm xproto) \ + $(shell pkg-config --cflags-only-I pixman-1 xorg-server libdrm xproto dri2proto) \ -I$(TOP)/src/gallium/include \ -I$(TOP)/src/gallium/auxiliary \ -I$(TOP)/include \ diff --git a/src/gallium/targets/Makefile.xorg b/src/gallium/targets/Makefile.xorg index 762c905985e..87eedd7136c 100644 --- a/src/gallium/targets/Makefile.xorg +++ b/src/gallium/targets/Makefile.xorg @@ -29,7 +29,7 @@ INCLUDES = \ LIBNAME_STAGING = $(TOP)/$(LIB_DIR)/gallium/$(TARGET) ifeq ($(MESA_LLVM),1) -LD = g++ +LD = $(CXX) LDFLAGS += $(LLVM_LDFLAGS) USE_CXX=1 DRIVER_PIPES += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a @@ -42,7 +42,7 @@ endif default: depend $(TOP)/$(LIB_DIR)/gallium $(LIBNAME) $(LIBNAME_STAGING) $(LIBNAME): $(OBJECTS) Makefile ../Makefile.xorg $(LIBS) $(DRIVER_PIPES) - $(MKLIB) -noprefix -o $@ $(LDFLAGS) $(OBJECTS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES) $(DRIVER_LINKS) + $(MKLIB) -linker $(CC) -noprefix -o $@ $(LDFLAGS) $(OBJECTS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES) $(DRIVER_LINKS) depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES) rm -f depend -- cgit v1.2.3 From 0301c9ac6207f21bae9e35c7f0bc18ea12491162 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 19 Oct 2010 09:35:16 +0200 Subject: st/xorg: Fix compilation errors for Xservers compiled without Composite Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/xorg_xv.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_xv.c b/src/gallium/state_trackers/xorg/xorg_xv.c index f98bd939010..f64959f00e9 100644 --- a/src/gallium/state_trackers/xorg/xorg_xv.c +++ b/src/gallium/state_trackers/xorg/xorg_xv.c @@ -536,8 +536,10 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv *pPriv, int id, dst_surf = xorg_gpu_surface(pPriv->r->pipe->screen, dst); hdtv = ((src_w >= RES_720P_X) && (src_h >= RES_720P_Y)); +#ifdef COMPOSITE REGION_TRANSLATE(pScrn->pScreen, dstRegion, -pPixmap->screen_x, -pPixmap->screen_y); +#endif dxo = dstRegion->extents.x1; dyo = dstRegion->extents.y1; @@ -562,11 +564,16 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv *pPriv, int id, int box_y2 = pbox->y2; float diff_x = (float)src_w / (float)dst_w; float diff_y = (float)src_h / (float)dst_h; - float offset_x = box_x1 - dstX + pPixmap->screen_x; - float offset_y = box_y1 - dstY + pPixmap->screen_y; + float offset_x = box_x1 - dstX; + float offset_y = box_y1 - dstY; float offset_w; float offset_h; +#ifdef COMPOSITE + offset_x += pPixmap->screen_x; + offset_y += pPixmap->screen_y; +#endif + x = box_x1; y = box_y1; w = box_x2 - box_x1; -- cgit v1.2.3 From 2ab7a8a3ebf337aeed61166719adef9da4a1278a Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 19 Oct 2010 10:39:24 +0200 Subject: st/xorg: Don't use deprecated x*alloc / xfree functions Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/xorg_crtc.c | 4 ++-- src/gallium/state_trackers/xorg/xorg_dri2.c | 24 ++++++++++++------------ src/gallium/state_trackers/xorg/xorg_driver.c | 14 +++++++------- src/gallium/state_trackers/xorg/xorg_exa.c | 8 ++++---- src/gallium/state_trackers/xorg/xorg_output.c | 8 ++++---- 5 files changed, 29 insertions(+), 29 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_crtc.c b/src/gallium/state_trackers/xorg/xorg_crtc.c index c65da71cdba..80af82d97b2 100644 --- a/src/gallium/state_trackers/xorg/xorg_crtc.c +++ b/src/gallium/state_trackers/xorg/xorg_crtc.c @@ -361,7 +361,7 @@ crtc_destroy(xf86CrtcPtr crtc) drmModeFreeCrtc(crtcp->drm_crtc); - xfree(crtcp); + free(crtcp); crtc->driver_private = NULL; } @@ -409,7 +409,7 @@ xorg_crtc_init(ScrnInfoPtr pScrn) if (crtc == NULL) goto out; - crtcp = xcalloc(1, sizeof(struct crtc_private)); + crtcp = calloc(1, sizeof(struct crtc_private)); if (!crtcp) { xf86CrtcDestroy(crtc); goto out; diff --git a/src/gallium/state_trackers/xorg/xorg_dri2.c b/src/gallium/state_trackers/xorg/xorg_dri2.c index 704aed6a82c..b723a8e9cb0 100644 --- a/src/gallium/state_trackers/xorg/xorg_dri2.c +++ b/src/gallium/state_trackers/xorg/xorg_dri2.c @@ -201,11 +201,11 @@ dri2_create_buffer(DrawablePtr pDraw, unsigned int attachment, unsigned int form DRI2Buffer2Ptr buffer; BufferPrivatePtr private; - buffer = xcalloc(1, sizeof *buffer); + buffer = calloc(1, sizeof *buffer); if (!buffer) return NULL; - private = xcalloc(1, sizeof *private); + private = calloc(1, sizeof *private); if (!private) { goto fail; } @@ -217,9 +217,9 @@ dri2_create_buffer(DrawablePtr pDraw, unsigned int attachment, unsigned int form if (dri2_do_create_buffer(pDraw, (DRI2BufferPtr)buffer, format)) return buffer; - xfree(private); + free(private); fail: - xfree(buffer); + free(buffer); return NULL; } @@ -229,8 +229,8 @@ dri2_destroy_buffer(DrawablePtr pDraw, DRI2Buffer2Ptr buffer) /* So far it is safe to downcast a DRI2Buffer2Ptr to DRI2BufferPtr */ dri2_do_destroy_buffer(pDraw, (DRI2BufferPtr)buffer); - xfree(buffer->driverPrivate); - xfree(buffer); + free(buffer->driverPrivate); + free(buffer); } #endif /* DRI2INFOREC_VERSION >= 2 */ @@ -244,11 +244,11 @@ dri2_create_buffers(DrawablePtr pDraw, unsigned int *attachments, int count) DRI2BufferPtr buffers; int i; - buffers = xcalloc(count, sizeof *buffers); + buffers = calloc(count, sizeof *buffers); if (!buffers) goto fail_buffers; - privates = xcalloc(count, sizeof *privates); + privates = calloc(count, sizeof *privates); if (!privates) goto fail_privates; @@ -263,9 +263,9 @@ dri2_create_buffers(DrawablePtr pDraw, unsigned int *attachments, int count) return buffers; fail: - xfree(privates); + free(privates); fail_privates: - xfree(buffers); + free(buffers); fail_buffers: return NULL; } @@ -280,8 +280,8 @@ dri2_destroy_buffers(DrawablePtr pDraw, DRI2BufferPtr buffers, int count) } if (buffers) { - xfree(buffers[0].driverPrivate); - xfree(buffers); + free(buffers[0].driverPrivate); + free(buffers); } } diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 3a5db9856d4..2d71a5e792f 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -122,7 +122,7 @@ xorg_tracker_set_functions(ScrnInfoPtr scrn) Bool xorg_tracker_have_modesetting(ScrnInfoPtr pScrn, struct pci_device *device) { - char *BusID = xalloc(64); + char *BusID = malloc(64); sprintf(BusID, "pci:%04x:%02x:%02x.%d", device->domain, device->bus, device->dev, device->func); @@ -130,14 +130,14 @@ xorg_tracker_have_modesetting(ScrnInfoPtr pScrn, struct pci_device *device) if (drmCheckModesettingSupported(BusID)) { xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0, "Drm modesetting not supported %s\n", BusID); - xfree(BusID); + free(BusID); return FALSE; } xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0, "Drm modesetting supported on %s\n", BusID); - xfree(BusID); + free(BusID); return TRUE; } @@ -174,7 +174,7 @@ drv_free_rec(ScrnInfoPtr pScrn) if (!pScrn->driverPrivate) return; - xfree(pScrn->driverPrivate); + free(pScrn->driverPrivate); pScrn->driverPrivate = NULL; } @@ -274,7 +274,7 @@ drv_init_drm(ScrnInfoPtr pScrn) if (ms->fd < 0) { char *BusID; - BusID = xalloc(64); + BusID = malloc(64); sprintf(BusID, "PCI:%d:%d:%d", ((ms->PciInfo->domain << 8) | ms->PciInfo->bus), ms->PciInfo->dev, ms->PciInfo->func @@ -283,7 +283,7 @@ drv_init_drm(ScrnInfoPtr pScrn) ms->fd = drmOpen(driver_descriptor.driver_name, BusID); ms->isMaster = TRUE; - xfree(BusID); + free(BusID); if (ms->fd >= 0) return TRUE; @@ -432,7 +432,7 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags) /* Process the options */ xf86CollectOptions(pScrn, NULL); - if (!(ms->Options = xalloc(sizeof(drv_options)))) + if (!(ms->Options = malloc(sizeof(drv_options)))) return FALSE; memcpy(ms->Options, drv_options, sizeof(drv_options)); xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, ms->Options); diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c index 6b2c80fbca6..0e5693dc786 100644 --- a/src/gallium/state_trackers/xorg/xorg_exa.c +++ b/src/gallium/state_trackers/xorg/xorg_exa.c @@ -720,7 +720,7 @@ ExaCreatePixmap(ScreenPtr pScreen, int size, int align) { struct exa_pixmap_priv *priv; - priv = xcalloc(1, sizeof(struct exa_pixmap_priv)); + priv = calloc(1, sizeof(struct exa_pixmap_priv)); if (!priv) return NULL; @@ -737,7 +737,7 @@ ExaDestroyPixmap(ScreenPtr pScreen, void *dPriv) pipe_resource_reference(&priv->tex, NULL); - xfree(priv); + free(priv); } static Bool @@ -975,7 +975,7 @@ xorg_exa_close(ScrnInfoPtr pScrn) ms->ctx = NULL; exaDriverFini(pScrn->pScreen); - xfree(exa); + free(exa); ms->exa = NULL; } @@ -987,7 +987,7 @@ xorg_exa_init(ScrnInfoPtr pScrn, Bool accel) ExaDriverPtr pExa; CustomizerPtr cust = ms->cust; - exa = xcalloc(1, sizeof(struct exa_context)); + exa = calloc(1, sizeof(struct exa_context)); if (!exa) return NULL; diff --git a/src/gallium/state_trackers/xorg/xorg_output.c b/src/gallium/state_trackers/xorg/xorg_output.c index 61206ed751c..5555b51131c 100644 --- a/src/gallium/state_trackers/xorg/xorg_output.c +++ b/src/gallium/state_trackers/xorg/xorg_output.c @@ -128,7 +128,7 @@ output_get_modes(xf86OutputPtr output) for (i = 0; i < drm_connector->count_modes; i++) { drm_mode = &drm_connector->modes[i]; if (drm_mode) { - mode = xcalloc(1, sizeof(DisplayModeRec)); + mode = calloc(1, sizeof(DisplayModeRec)); if (!mode) continue; mode->Clock = drm_mode->clock; @@ -195,7 +195,7 @@ output_destroy(xf86OutputPtr output) { struct output_private *priv = output->driver_private; drmModeFreeConnector(priv->drm_connector); - xfree(priv); + free(priv); output->driver_private = NULL; } @@ -262,14 +262,14 @@ xorg_output_init(ScrnInfoPtr pScrn) drm_connector->connector_type_id); - priv = xcalloc(sizeof(*priv), 1); + priv = calloc(sizeof(*priv), 1); if (!priv) { continue; } output = xf86OutputCreate(pScrn, &output_funcs, name); if (!output) { - xfree(priv); + free(priv); continue; } -- cgit v1.2.3 From 543136d5bda2173a3774312607cb8579ba6b5186 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 19 Oct 2010 11:25:15 +0200 Subject: xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions Signed-off-by: Thomas Hellstrom --- src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c | 4 ++-- src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c | 6 +++--- src/gallium/targets/xorg-vmwgfx/vmw_video.c | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c b/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c index 9c075b5597b..9b422e661bf 100644 --- a/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c +++ b/src/gallium/targets/xorg-vmwgfx/vmw_ctrl.c @@ -212,7 +212,7 @@ VMwareCtrlDoSetTopology(ScrnInfoPtr pScrn, struct vmw_customizer *vmw = vmw_customizer(xorg_customizer(pScrn)); int i; - rects = xcalloc(number, sizeof(*rects)); + rects = calloc(number, sizeof(*rects)); if (!rects) return FALSE; @@ -225,7 +225,7 @@ VMwareCtrlDoSetTopology(ScrnInfoPtr pScrn, vmw_ioctl_update_layout(vmw, number, rects); - xfree(rects); + free(rects); return TRUE; } diff --git a/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c b/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c index 7c799b58275..7625d2fb8f9 100644 --- a/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c +++ b/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c @@ -165,7 +165,7 @@ vmw_ioctl_buffer_create(struct vmw_customizer *vmw, uint32_t size, unsigned *han struct drm_vmw_dmabuf_rep *rep = &arg.rep; int ret; - buf = xcalloc(1, sizeof(*buf)); + buf = calloc(1, sizeof(*buf)); if (!buf) goto err; @@ -192,7 +192,7 @@ vmw_ioctl_buffer_create(struct vmw_customizer *vmw, uint32_t size, unsigned *han return buf; err_free: - xfree(buf); + free(buf); err: return NULL; } @@ -211,7 +211,7 @@ vmw_ioctl_buffer_destroy(struct vmw_customizer *vmw, struct vmw_dma_buffer *buf) arg.handle = buf->handle; drmCommandWrite(vmw->fd, DRM_VMW_UNREF_DMABUF, &arg, sizeof(arg)); - xfree(buf); + free(buf); } void * diff --git a/src/gallium/targets/xorg-vmwgfx/vmw_video.c b/src/gallium/targets/xorg-vmwgfx/vmw_video.c index eced60d0ec1..94465e52043 100644 --- a/src/gallium/targets/xorg-vmwgfx/vmw_video.c +++ b/src/gallium/targets/xorg-vmwgfx/vmw_video.c @@ -300,7 +300,7 @@ vmw_video_init(struct vmw_customizer *vmw) numAdaptors = 1; overlayAdaptors = &newAdaptor; } else { - newAdaptors = xalloc((numAdaptors + 1) * + newAdaptors = malloc((numAdaptors + 1) * sizeof(XF86VideoAdaptorPtr*)); if (!newAdaptors) { xf86XVFreeVideoAdaptorRec(newAdaptor); @@ -320,7 +320,7 @@ vmw_video_init(struct vmw_customizer *vmw) } if (newAdaptors) { - xfree(newAdaptors); + free(newAdaptors); } debug_printf("Initialized VMware Xv extension successfully\n"); @@ -438,7 +438,7 @@ vmw_video_init_adaptor(ScrnInfoPtr pScrn, struct vmw_customizer *vmw) return NULL; } - video = xcalloc(1, sizeof(*video)); + video = calloc(1, sizeof(*video)); if (!video) { debug_printf("Not enough memory.\n"); xf86XVFreeVideoAdaptorRec(adaptor); @@ -742,7 +742,7 @@ vmw_video_buffer_alloc(struct vmw_customizer *vmw, int size, } out->size = size; - out->extra_data = xcalloc(1, size); + out->extra_data = calloc(1, size); debug_printf("\t\t%s: allocated buffer %p of size %i\n", __func__, out, size); @@ -773,7 +773,7 @@ vmw_video_buffer_free(struct vmw_customizer *vmw, if (out->size == 0) return Success; - xfree(out->extra_data); + free(out->extra_data); vmw_ioctl_buffer_unmap(vmw, out->buf); vmw_ioctl_buffer_destroy(vmw, out->buf); -- cgit v1.2.3 From 9e96b695b0bc59e01e69fd266f542dc3948114ad Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 19 Oct 2010 11:44:08 +0200 Subject: st/xorg: Fix compilation for Xservers >= 1.10 Signed-off-by: Thomas Hellstrom --- src/gallium/state_trackers/xorg/xorg_driver.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 2d71a5e792f..1ec772df172 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -45,6 +45,7 @@ #include "miscstruct.h" #include "dixstruct.h" #include "xf86xv.h" +#include "xorgVersion.h" #ifndef XSERVER_LIBPCIACCESS #error "libpciaccess needed" #endif @@ -1182,6 +1183,8 @@ drv_bind_front_buffer_kms(ScrnInfoPtr pScrn) stride, ptr); +#if (XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 9, 99, 1, 0)) + /* This a hack to work around EnableDisableFBAccess setting the pointer * the real fix would be to replace pScrn->EnableDisableFBAccess hook * and set the rootPixmap->devPrivate.ptr to something valid before that. @@ -1191,6 +1194,8 @@ drv_bind_front_buffer_kms(ScrnInfoPtr pScrn) */ pScrn->pixmapPrivate.ptr = ptr; +#endif + return TRUE; err_destroy: -- cgit v1.2.3 From 988b246c471c9c7ece1082682853e3744b702dd2 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 18 Oct 2010 09:07:54 -0600 Subject: mesa: fix mesa version string construction Now that MESA_MINOR=10, we no longer need the extra '0' in the version string. --- src/gallium/targets/libgl-xlib/Makefile | 2 +- src/glu/sgi/Makefile | 2 +- src/mesa/drivers/x11/Makefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/targets/libgl-xlib/Makefile b/src/gallium/targets/libgl-xlib/Makefile index 79e516a2a7a..076a040a5ab 100644 --- a/src/gallium/targets/libgl-xlib/Makefile +++ b/src/gallium/targets/libgl-xlib/Makefile @@ -10,7 +10,7 @@ include $(TOP)/configs/current GL_MAJOR = 1 GL_MINOR = 5 -GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY) +GL_TINY = 0$(MESA_MAJOR)$(MESA_MINOR)0$(MESA_TINY) INCLUDE_DIRS = \ diff --git a/src/glu/sgi/Makefile b/src/glu/sgi/Makefile index 20c3bed0c93..c8b29edcaae 100644 --- a/src/glu/sgi/Makefile +++ b/src/glu/sgi/Makefile @@ -8,7 +8,7 @@ include $(TOP)/configs/current GLU_MAJOR = 1 GLU_MINOR = 3 -GLU_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY) +GLU_TINY = 0$(MESA_MAJOR)$(MESA_MINOR)0$(MESA_TINY) INCDIRS = -I$(TOP)/include -Iinclude -Iinternals -Ilibnurbs/internals -Ilibnurbs/interface -Ilibnurbs/nurbtess diff --git a/src/mesa/drivers/x11/Makefile b/src/mesa/drivers/x11/Makefile index f759da0a979..f94aae85f2c 100644 --- a/src/mesa/drivers/x11/Makefile +++ b/src/mesa/drivers/x11/Makefile @@ -12,7 +12,7 @@ include $(TOP)/configs/current GL_MAJOR = 1 GL_MINOR = 5 -GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY) +GL_TINY = 0$(MESA_MAJOR)$(MESA_MINOR)0$(MESA_TINY) HEADERS = \ -- cgit v1.2.3 From ec2824cd867d3b782588be1f3b1d5d802eb381ab Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 19 Oct 2010 09:14:17 -0600 Subject: gallivm: fix incorrect type for zero vector in emit_kilp() http://bugs.freedesktop.org/show_bug.cgi?id=30974 --- src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 2bc90579a2a..3c318cc8c80 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -1030,7 +1030,8 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld, mask = LLVMBuildNot(bld->base.builder, bld->exec_mask.exec_mask, "kilp"); } else { - mask = bld->base.zero; + LLVMValueRef zero = LLVMConstNull(bld->base.int_vec_type); + mask = zero; } lp_build_mask_update(bld->mask, mask); -- cgit v1.2.3 From a143b6d5d8e2646a7daedc2a13f2b964b89dd0ac Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 19 Oct 2010 09:49:15 -0700 Subject: st/xorg: Fix memory leak on error path. --- src/gallium/state_trackers/xorg/xorg_exa.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c index 0e5693dc786..4b1c02bad42 100644 --- a/src/gallium/state_trackers/xorg/xorg_exa.c +++ b/src/gallium/state_trackers/xorg/xorg_exa.c @@ -1057,6 +1057,7 @@ xorg_exa_init(ScrnInfoPtr pScrn, Bool accel) out_err: xorg_exa_close(pScrn); + free(exa); return NULL; } -- cgit v1.2.3 From 22725eb3e87921632a24579d63bb20c35a122afa Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 19 Oct 2010 10:02:28 -0700 Subject: llvmpipe: Initialize state variable in debug_bin function. --- src/gallium/drivers/llvmpipe/lp_rast_debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_debug.c b/src/gallium/drivers/llvmpipe/lp_rast_debug.c index e2783aa5683..5c9dc50866b 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_debug.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_debug.c @@ -95,7 +95,7 @@ is_blend( const struct lp_rast_state *state, static void debug_bin( const struct cmd_bin *bin ) { - const struct lp_rast_state *state; + const struct lp_rast_state *state = NULL; const struct cmd_block *head = bin->head; int i, j = 0; -- cgit v1.2.3 From 36dde032a4f7d6a8b68c1adc8e829816e2e8826e Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 19 Oct 2010 10:14:11 -0700 Subject: llvmpipe: Initialize variable. --- src/gallium/drivers/llvmpipe/lp_rast_debug.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_debug.c b/src/gallium/drivers/llvmpipe/lp_rast_debug.c index 5c9dc50866b..64ac616f629 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_debug.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_debug.c @@ -240,6 +240,7 @@ do_debug_bin( struct tile *tile, memset(tile->data, ' ', sizeof tile->data); tile->coverage = 0; tile->overdraw = 0; + tile->state = NULL; for (block = bin->head; block; block = block->next) { for (k = 0; k < block->count; k++, j++) { -- cgit v1.2.3 From ab2e1edd1fc6fbfd4f7d1949aa0d40cdb7142bd6 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Mon, 18 Oct 2010 18:48:18 +0100 Subject: draw: corrections to allow for different cliptest cases --- src/gallium/auxiliary/draw/draw_llvm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index ebd8b9d4ad3..622250e7f73 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -861,9 +861,11 @@ generate_clipmask(LLVMBuilderRef builder, struct lp_type f32_type = lp_type_float_vec(32); + mask = lp_build_const_int_vec(lp_type_int_vec(32), 0); + temp = lp_build_const_int_vec(lp_type_int_vec(32), 0); zero = lp_build_const_vec(f32_type, 0); /* 0.0f 0.0f 0.0f 0.0f */ shift = lp_build_const_int_vec(lp_type_int_vec(32), 1); /* 1 1 1 1 */ - + /* Assuming position stored at output[0] */ pos_x = LLVMBuildLoad(builder, outputs[0][0], ""); /*x0 x1 x2 x3*/ pos_y = LLVMBuildLoad(builder, outputs[0][1], ""); /*y0 y1 y2 y3*/ @@ -900,10 +902,10 @@ generate_clipmask(LLVMBuilderRef builder, } if (clip_z){ + temp = lp_build_const_int_vec(lp_type_int_vec(32), 16); if (clip_halfz){ /* plane 5 */ test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, pos_z); - temp = LLVMBuildShl(builder, temp, shift, ""); test = LLVMBuildAnd(builder, test, temp, ""); mask = LLVMBuildOr(builder, mask, test, ""); } @@ -911,7 +913,6 @@ generate_clipmask(LLVMBuilderRef builder, /* plane 5 */ test = LLVMBuildFAdd(builder, pos_z, pos_w, ""); test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, test); - temp = LLVMBuildShl(builder, temp, shift, ""); test = LLVMBuildAnd(builder, test, temp, ""); mask = LLVMBuildOr(builder, mask, test, ""); } @@ -925,6 +926,7 @@ generate_clipmask(LLVMBuilderRef builder, if (clip_user){ LLVMValueRef planes_ptr = draw_jit_context_planes(builder, context_ptr); LLVMValueRef indices[3]; + temp = lp_build_const_int_vec(lp_type_int_vec(32), 32); /* userclip planes */ for (i = 6; i < nr; i++) { -- cgit v1.2.3 From 05921fd4e5305da68bb269748cb0ef059e1db417 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 19 Oct 2010 22:11:49 -0700 Subject: draw: make sure viewport gets updated in draw llvm shader The viewport state was being baked in at compile time (oops...) --- src/gallium/auxiliary/draw/draw_llvm.c | 66 +++++++++++++--------- src/gallium/auxiliary/draw/draw_llvm.h | 6 +- .../draw/draw_pt_fetch_shade_pipeline_llvm.c | 2 + 3 files changed, 47 insertions(+), 27 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 338127dafec..beb955fbf49 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -131,13 +131,14 @@ init_globals(struct draw_llvm *llvm) /* struct draw_jit_context */ { - LLVMTypeRef elem_types[4]; + LLVMTypeRef elem_types[5]; LLVMTypeRef context_type; elem_types[0] = LLVMPointerType(LLVMFloatType(), 0); /* vs_constants */ elem_types[1] = LLVMPointerType(LLVMFloatType(), 0); /* gs_constants */ elem_types[2] = LLVMPointerType(LLVMArrayType(LLVMArrayType(LLVMFloatType(), 4), 12), 0); /* planes */ - elem_types[3] = LLVMArrayType(texture_type, + elem_types[3] = LLVMPointerType(LLVMFloatType(), 0); /* viewport */ + elem_types[4] = LLVMArrayType(texture_type, PIPE_MAX_VERTEX_SAMPLERS); /* textures */ context_type = LLVMStructType(elem_types, Elements(elem_types), 0); @@ -784,21 +785,38 @@ store_clip(LLVMBuilderRef builder, } +/* Equivalent of _mm_set1_ps(a) + */ +static LLVMValueRef vec4f_from_scalar(LLVMBuilderRef bld, + LLVMValueRef a, + const char *name) +{ + LLVMValueRef res = LLVMGetUndef(LLVMVectorType(LLVMFloatType(), 4)); + int i; + + for(i = 0; i < 4; ++i) { + LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0); + res = LLVMBuildInsertElement(bld, res, a, index, i == 3 ? name : ""); + } + + return res; +} + /* * Transforms the outputs for viewport mapping */ static void generate_viewport(struct draw_llvm *llvm, LLVMBuilderRef builder, - LLVMValueRef (*outputs)[NUM_CHANNELS]) + LLVMValueRef (*outputs)[NUM_CHANNELS], + LLVMValueRef context_ptr) { int i; - const float *scaleA = llvm->draw->viewport.scale; - const float *transA = llvm->draw->viewport.translate; struct lp_type f32_type = lp_type_float_vec(32); LLVMValueRef out3 = LLVMBuildLoad(builder, outputs[0][3], ""); /*w0 w1 w2 w3*/ LLVMValueRef const1 = lp_build_const_vec(f32_type, 1.0); /*1.0 1.0 1.0 1.0*/ - + LLVMValueRef vp_ptr = draw_jit_context_viewport(builder, context_ptr); + /* for 1/w convention*/ out3 = LLVMBuildFDiv(builder, const1, out3, ""); LLVMBuildStore(builder, out3, outputs[0][3]); @@ -806,9 +824,21 @@ generate_viewport(struct draw_llvm *llvm, /* Viewport Mapping */ for (i=0; i<3; i++){ LLVMValueRef out = LLVMBuildLoad(builder, outputs[0][i], ""); /*x0 x1 x2 x3*/ - LLVMValueRef scale = lp_build_const_vec(f32_type, scaleA[i]); /*sx sx sx sx*/ - LLVMValueRef trans = lp_build_const_vec(f32_type, transA[i]); /*tx tx tx tx*/ + LLVMValueRef scale; + LLVMValueRef trans; + LLVMValueRef scale_i; + LLVMValueRef trans_i; + LLVMValueRef index; + index = LLVMConstInt(LLVMInt32Type(), i, 0); + scale_i = LLVMBuildGEP(builder, vp_ptr, &index, 1, ""); + + index = LLVMConstInt(LLVMInt32Type(), i+4, 0); + trans_i = LLVMBuildGEP(builder, vp_ptr, &index, 1, ""); + + scale = vec4f_from_scalar(builder, LLVMBuildLoad(builder, scale_i, ""), "scale"); + trans = vec4f_from_scalar(builder, LLVMBuildLoad(builder, trans_i, ""), "trans"); + /* divide by w */ out = LLVMBuildMul(builder, out, out3, ""); /* mult by scale */ @@ -822,22 +852,6 @@ generate_viewport(struct draw_llvm *llvm, } -/* Equivalent of _mm_set1_ps(a) - */ -static LLVMValueRef vec4f_from_scalar(LLVMBuilderRef bld, - LLVMValueRef a, - const char *name) -{ - LLVMValueRef res = LLVMGetUndef(LLVMVectorType(LLVMFloatType(), 4)); - int i; - - for(i = 0; i < 4; ++i) { - LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0); - res = LLVMBuildInsertElement(bld, res, a, index, i == 3 ? name : ""); - } - - return res; -} /* * Returns clipmask as 4xi32 bitmask for the 4 vertices @@ -1143,7 +1157,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) /* do viewport mapping */ if (!bypass_viewport){ - generate_viewport(llvm, builder, outputs); + generate_viewport(llvm, builder, outputs, context_ptr); } /* store clipmask in vertex header and positions in data */ @@ -1354,7 +1368,7 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian /* do viewport mapping */ if (!bypass_viewport){ - generate_viewport(llvm, builder, outputs); + generate_viewport(llvm, builder, outputs, context_ptr); } /* store clipmask in vertex header, diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index aa984ed3a2f..c3c30c07c64 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -97,6 +97,7 @@ struct draw_jit_context const float *vs_constants; const float *gs_constants; float (*planes) [12][4]; + float *viewport; struct draw_jit_texture textures[PIPE_MAX_VERTEX_SAMPLERS]; }; @@ -111,7 +112,10 @@ struct draw_jit_context #define draw_jit_context_planes(_builder, _ptr) \ lp_build_struct_get(_builder, _ptr, 2, "planes") -#define DRAW_JIT_CTX_TEXTURES 3 +#define draw_jit_context_viewport(_builder, _ptr) \ + lp_build_struct_get(_builder, _ptr, 3, "viewport") + +#define DRAW_JIT_CTX_TEXTURES 4 #define draw_jit_context_textures(_builder, _ptr) \ lp_build_struct_get_ptr(_builder, _ptr, DRAW_JIT_CTX_TEXTURES, "textures") diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c index e5b2532b50a..a53a768d029 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c @@ -177,6 +177,8 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle, draw->pt.user.gs_constants[0]; fpme->llvm->jit_context.planes = (float (*) [12][4]) draw->pt.user.planes[0]; + fpme->llvm->jit_context.viewport = + (float *)draw->viewport.scale; } -- cgit v1.2.3 From 289900439f0f327910496f6bc362b95930eebb53 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 19 Oct 2010 23:48:59 -0700 Subject: draw: Move loop variable declaration outside for loop. Fixes MSVC build. --- src/gallium/auxiliary/draw/draw_llvm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index beb955fbf49..4ad570950fc 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -732,6 +732,7 @@ store_clip(LLVMBuilderRef builder, LLVMValueRef clip_ptr0, clip_ptr1, clip_ptr2, clip_ptr3; LLVMValueRef clip0_ptr, clip1_ptr, clip2_ptr, clip3_ptr; LLVMValueRef out0elem, out1elem, out2elem, out3elem; + int i; LLVMValueRef ind0 = LLVMConstInt(LLVMInt32Type(), 0, 0); LLVMValueRef ind1 = LLVMConstInt(LLVMInt32Type(), 1, 0); @@ -756,7 +757,7 @@ store_clip(LLVMBuilderRef builder, clip_ptr2 = draw_jit_header_clip(builder, io2_ptr); clip_ptr3 = draw_jit_header_clip(builder, io3_ptr); - for (int i = 0; i<4; i++){ + for (i = 0; i<4; i++){ clip0_ptr = LLVMBuildGEP(builder, clip_ptr0, indices, 2, ""); //x0 clip1_ptr = LLVMBuildGEP(builder, clip_ptr1, -- cgit v1.2.3 From 89c26866f05dcf8fbb716e38d4780cebcae71653 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 20 Oct 2010 12:44:08 -0700 Subject: r600g: Ensure r600_src is initialized in tgsi_exp function. Silences these GCC warnings. r600_shader.c: In function 'tgsi_exp': r600_shader.c:2339: warning: 'r600_src[0].rel' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].abs' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].neg' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].chan' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].sel' is used uninitialized in this function --- src/gallium/drivers/r600/r600_shader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index d1143985ead..f98f05512a1 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -2287,7 +2287,7 @@ static int tgsi_xpd(struct r600_shader_ctx *ctx) static int tgsi_exp(struct r600_shader_ctx *ctx) { struct tgsi_full_instruction *inst = &ctx->parse.FullToken.FullInstruction; - struct r600_bc_alu_src r600_src[3]; + struct r600_bc_alu_src r600_src[3] = { { 0 } }; struct r600_bc_alu alu; int r; -- cgit v1.2.3 From f36346c11662901cc2f2b2239d9adb38bbdc54b6 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 20 Oct 2010 14:47:32 -0600 Subject: llvmpipe/draw: always enable LLVMAddInstructionCombiningPass() We were working around an LLVM 2.5 bug but we're using LLVM 2.6 or later now. This basically reverts commit baddcbc5225e12052b3bc8c07a8b65243d76574d. This fixes the piglit bug/tri-tex-crash.c failure. --- src/gallium/auxiliary/draw/draw_llvm.c | 8 +------- src/gallium/drivers/llvmpipe/lp_jit.c | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 4ad570950fc..f8fd17fe2c4 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -274,13 +274,7 @@ draw_llvm_create(struct draw_context *draw) LLVMAddConstantPropagationPass(llvm->pass); } - if(util_cpu_caps.has_sse4_1) { - /* FIXME: There is a bug in this pass, whereby the combination of fptosi - * and sitofp (necessary for trunc/floor/ceil/round implementation) - * somehow becomes invalid code. - */ - LLVMAddInstructionCombiningPass(llvm->pass); - } + LLVMAddInstructionCombiningPass(llvm->pass); LLVMAddGVNPass(llvm->pass); } else { /* We need at least this pass to prevent the backends to fail in diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c b/src/gallium/drivers/llvmpipe/lp_jit.c index e09ec504ab7..4dbb12c999b 100644 --- a/src/gallium/drivers/llvmpipe/lp_jit.c +++ b/src/gallium/drivers/llvmpipe/lp_jit.c @@ -187,13 +187,7 @@ lp_jit_screen_init(struct llvmpipe_screen *screen) LLVMAddCFGSimplificationPass(screen->pass); LLVMAddPromoteMemoryToRegisterPass(screen->pass); LLVMAddConstantPropagationPass(screen->pass); - if(util_cpu_caps.has_sse4_1) { - /* FIXME: There is a bug in this pass, whereby the combination of fptosi - * and sitofp (necessary for trunc/floor/ceil/round implementation) - * somehow becomes invalid code. - */ - LLVMAddInstructionCombiningPass(screen->pass); - } + LLVMAddInstructionCombiningPass(screen->pass); LLVMAddGVNPass(screen->pass); } else { /* We need at least this pass to prevent the backends to fail in -- cgit v1.2.3 From c492066071c17e55740f3eed69b3344e6f1793ff Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 20 Oct 2010 14:54:38 -0600 Subject: draw: use float version of LLVM Mul/Add instructions LLVM 2.8 is pickier about int vs float instructions and operands. --- src/gallium/auxiliary/draw/draw_llvm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index f8fd17fe2c4..3f14571aa34 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -835,11 +835,11 @@ generate_viewport(struct draw_llvm *llvm, trans = vec4f_from_scalar(builder, LLVMBuildLoad(builder, trans_i, ""), "trans"); /* divide by w */ - out = LLVMBuildMul(builder, out, out3, ""); + out = LLVMBuildFMul(builder, out, out3, ""); /* mult by scale */ - out = LLVMBuildMul(builder, out, scale, ""); + out = LLVMBuildFMul(builder, out, scale, ""); /* add translation */ - out = LLVMBuildAdd(builder, out, trans, ""); + out = LLVMBuildFAdd(builder, out, trans, ""); /* store transformed outputs */ LLVMBuildStore(builder, out, outputs[0][i]); @@ -947,27 +947,27 @@ generate_clipmask(LLVMBuilderRef builder, plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_x"); planes = vec4f_from_scalar(builder, plane1, "plane4_x"); - sum = LLVMBuildMul(builder, planes, pos_x, ""); + sum = LLVMBuildFMul(builder, planes, pos_x, ""); indices[2] = LLVMConstInt(LLVMInt32Type(), 1, 0); plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_y"); planes = vec4f_from_scalar(builder, plane1, "plane4_y"); - test = LLVMBuildMul(builder, planes, pos_y, ""); + test = LLVMBuildFMul(builder, planes, pos_y, ""); sum = LLVMBuildFAdd(builder, sum, test, ""); indices[2] = LLVMConstInt(LLVMInt32Type(), 2, 0); plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_z"); planes = vec4f_from_scalar(builder, plane1, "plane4_z"); - test = LLVMBuildMul(builder, planes, pos_z, ""); + test = LLVMBuildFMul(builder, planes, pos_z, ""); sum = LLVMBuildFAdd(builder, sum, test, ""); indices[2] = LLVMConstInt(LLVMInt32Type(), 3, 0); plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_w"); planes = vec4f_from_scalar(builder, plane1, "plane4_w"); - test = LLVMBuildMul(builder, planes, pos_w, ""); + test = LLVMBuildFMul(builder, planes, pos_w, ""); sum = LLVMBuildFAdd(builder, sum, test, ""); test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, sum); -- cgit v1.2.3 From 206fbd9640f076ada23368edf158b6d40f673ba7 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 13:20:14 +1000 Subject: r600g: all non-0 mipmap levels need to be w/h aligned to POT. this adds a new minify function to the driver to ensure this. --- src/gallium/drivers/r600/r600_texture.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 95906a74eb3..b9348baf0db 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -92,6 +92,15 @@ static unsigned r600_texture_get_offset(struct r600_resource_texture *rtex, } } +static unsigned mip_minify(unsigned size, unsigned level) +{ + unsigned val; + val = u_minify(size, level); + if (level > 0) + val = util_next_power_of_two(val); + return val; +} + static unsigned r600_texture_get_stride(struct pipe_screen *screen, struct r600_resource_texture *rtex, unsigned level) @@ -104,7 +113,7 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen, if (rtex->pitch_override) return rtex->pitch_override; - width = u_minify(ptex->width0, level); + width = mip_minify(ptex->width0, level); stride = util_format_get_stride(ptex->format, align(width, 64)); if (chipc == EVERGREEN) @@ -121,8 +130,7 @@ static unsigned r600_texture_get_nblocksy(struct pipe_screen *screen, struct pipe_resource *ptex = &rtex->resource.base.b; unsigned height; - height = u_minify(ptex->height0, level); - height = util_next_power_of_two(height); + height = mip_minify(ptex->height0, level); return util_format_get_nblocksy(ptex->format, height); } @@ -249,8 +257,8 @@ static struct pipe_surface *r600_get_tex_surface(struct pipe_screen *screen, pipe_reference_init(&surface->reference, 1); pipe_resource_reference(&surface->texture, texture); surface->format = texture->format; - surface->width = u_minify(texture->width0, level); - surface->height = u_minify(texture->height0, level); + surface->width = mip_minify(texture->width0, level); + surface->height = mip_minify(texture->height0, level); surface->offset = offset; surface->usage = flags; surface->zslice = zslice; -- cgit v1.2.3 From ea5aab85fd195074189832c2d6870dd78f0f8966 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 13:26:04 +1000 Subject: r600g: move to per-miplevel array mode. Since the hw transitions from 2D->1D sampling below the 2D macrotile size we need to keep track of the array mode per level so we can render to it using the CB. --- src/gallium/drivers/r600/evergreen_state.c | 7 ++++--- src/gallium/drivers/r600/r600_resource.h | 2 +- src/gallium/drivers/r600/r600_state.c | 11 ++++++----- src/gallium/drivers/r600/r600_texture.c | 15 ++++++++++++--- 4 files changed, 23 insertions(+), 12 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index ce34ed4ad3c..026d9355586 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -807,14 +807,15 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state if (state->zsbuf == NULL) return; + level = state->zsbuf->level; + rtex = (struct r600_resource_texture*)state->zsbuf->texture; rtex->tiled = 1; - rtex->array_mode = 2; + rtex->array_mode[level] = 2; rtex->tile_type = 1; rtex->depth = 1; rbuffer = &rtex->resource; - level = state->zsbuf->level; pitch = rtex->pitch_in_pixels[level] / 8 - 1; slice = rtex->pitch_in_pixels[level] * state->zsbuf->height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); @@ -840,7 +841,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state S_028044_FORMAT(stencil_format), 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_028040_DB_Z_INFO, - S_028040_ARRAY_MODE(rtex->array_mode) | S_028040_FORMAT(format), + S_028040_ARRAY_MODE(rtex->array_mode[level]) | S_028040_FORMAT(format), 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_028058_DB_DEPTH_SIZE, S_028058_PITCH_TILE_MAX(pitch), diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index ef484aba4a2..d34a8edac2b 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -53,10 +53,10 @@ struct r600_resource_texture { unsigned pitch_in_bytes[PIPE_MAX_TEXTURE_LEVELS]; unsigned pitch_in_pixels[PIPE_MAX_TEXTURE_LEVELS]; unsigned layer_size[PIPE_MAX_TEXTURE_LEVELS]; + unsigned array_mode[PIPE_MAX_TEXTURE_LEVELS]; unsigned pitch_override; unsigned size; unsigned tiled; - unsigned array_mode; unsigned tile_type; unsigned depth; unsigned dirty; diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 81d25b54203..7775619c04b 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -658,7 +658,7 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c } pitch = align(tmp->pitch_in_pixels[0], 8); if (tmp->tiled) { - array_mode = tmp->array_mode; + array_mode = tmp->array_mode[0]; tile_type = tmp->tile_type; } @@ -974,7 +974,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta swap = r600_translate_colorswap(rtex->resource.base.b.format); color_info = S_0280A0_FORMAT(format) | S_0280A0_COMP_SWAP(swap) | - S_0280A0_ARRAY_MODE(rtex->array_mode) | + S_0280A0_ARRAY_MODE(rtex->array_mode[level]) | S_0280A0_BLEND_CLAMP(1) | S_0280A0_NUMBER_TYPE(ntype); if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) @@ -1016,14 +1016,15 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta if (state->zsbuf == NULL) return; + level = state->zsbuf->level; + rtex = (struct r600_resource_texture*)state->zsbuf->texture; rtex->tiled = 1; - rtex->array_mode = 2; + rtex->array_mode[level] = 2; rtex->tile_type = 1; rtex->depth = 1; rbuffer = &rtex->resource; - level = state->zsbuf->level; pitch = rtex->pitch_in_pixels[level] / 8 - 1; slice = rtex->pitch_in_pixels[level] * state->zsbuf->height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); @@ -1035,7 +1036,7 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028004_DB_DEPTH_VIEW, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028010_DB_DEPTH_INFO, - S_028010_ARRAY_MODE(rtex->array_mode) | S_028010_FORMAT(format), + S_028010_ARRAY_MODE(rtex->array_mode[level]) | S_028010_FORMAT(format), 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_028D34_DB_PREFETCH_LIMIT, (state->zsbuf->height / 8) - 1, 0xFFFFFFFF, NULL); diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index b9348baf0db..b36f8236081 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -142,8 +142,16 @@ static unsigned pitch_to_width(enum pipe_format format, util_format_get_blockwidth(format); } +static void r600_texture_set_array_mode(struct pipe_screen *screen, + struct r600_resource_texture *rtex, + unsigned level, unsigned array_mode) +{ + rtex->array_mode[level] = array_mode; +} + static void r600_setup_miptree(struct pipe_screen *screen, - struct r600_resource_texture *rtex) + struct r600_resource_texture *rtex, + unsigned array_mode) { struct pipe_resource *ptex = &rtex->resource.base.b; struct radeon *radeon = (struct radeon *)screen->winsys; @@ -152,6 +160,8 @@ static void r600_setup_miptree(struct pipe_screen *screen, unsigned nblocksy; for (i = 0, offset = 0; i <= ptex->last_level; i++) { + r600_texture_set_array_mode(screen, rtex, i, array_mode); + pitch = r600_texture_get_stride(screen, rtex, i); nblocksy = r600_texture_get_nblocksy(screen, rtex, i); @@ -198,11 +208,10 @@ r600_texture_create_object(struct pipe_screen *screen, resource->bo = bo; resource->domain = r600_domain_from_usage(resource->base.b.bind); rtex->pitch_override = pitch_in_bytes_override; - rtex->array_mode = array_mode; if (array_mode) rtex->tiled = 1; - r600_setup_miptree(screen, rtex); + r600_setup_miptree(screen, rtex, array_mode); resource->size = rtex->size; -- cgit v1.2.3 From 388ce31baa860a0d7535c852d768c6e243c8133c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 13:27:07 +1000 Subject: r600g: start adding hooks for aligning width/height for tiles. --- src/gallium/drivers/r600/r600_texture.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index b36f8236081..a90fc0382f1 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -92,6 +92,19 @@ static unsigned r600_texture_get_offset(struct r600_resource_texture *rtex, } } +static unsigned r600_get_pixel_alignment(struct pipe_screen *screen, + enum pipe_format format, + unsigned array_mode) +{ + return 64; +} + +static unsigned r600_get_height_alignment(struct pipe_screen *screen, + unsigned array_mode) +{ + return 1; +} + static unsigned mip_minify(unsigned size, unsigned level) { unsigned val; @@ -108,14 +121,18 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen, struct pipe_resource *ptex = &rtex->resource.base.b; struct radeon *radeon = (struct radeon *)screen->winsys; enum chip_class chipc = r600_get_family_class(radeon); - unsigned width, stride; + unsigned width, stride, tile_width; if (rtex->pitch_override) return rtex->pitch_override; width = mip_minify(ptex->width0, level); - - stride = util_format_get_stride(ptex->format, align(width, 64)); + if (util_format_is_plain(ptex->format)) { + tile_width = r600_get_pixel_alignment(screen, ptex->format, + rtex->array_mode[level]); + width = align(width, tile_width); + } + stride = util_format_get_stride(ptex->format, width); if (chipc == EVERGREEN) stride = align(stride, 512); else @@ -128,9 +145,14 @@ static unsigned r600_texture_get_nblocksy(struct pipe_screen *screen, unsigned level) { struct pipe_resource *ptex = &rtex->resource.base.b; - unsigned height; + unsigned height, tile_height; height = mip_minify(ptex->height0, level); + if (util_format_is_plain(ptex->format)) { + tile_height = r600_get_height_alignment(screen, + rtex->array_mode[level]); + height = align(height, tile_height); + } return util_format_get_nblocksy(ptex->format, height); } -- cgit v1.2.3 From 91e513044de21f20c2c085a99e9d784c7a61173c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 13:31:27 +1000 Subject: r600g: add r600 surface to store the aligned height. we need to know the aligned height when binding the surface to cb/zb, not the gallium surface height. --- src/gallium/drivers/r600/evergreen_state.c | 10 +++++++--- src/gallium/drivers/r600/r600_resource.h | 5 +++++ src/gallium/drivers/r600/r600_state.c | 10 +++++++--- src/gallium/drivers/r600/r600_texture.c | 31 ++++++++++++++++-------------- 4 files changed, 36 insertions(+), 20 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 026d9355586..0b54c2c7167 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -740,6 +740,7 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state { struct r600_resource_texture *rtex; struct r600_resource *rbuffer; + struct r600_surface *surf; unsigned level = state->cbufs[cb]->level; unsigned pitch, slice; unsigned color_info; @@ -747,6 +748,7 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state const struct util_format_description *desc; struct r600_bo *bo[3]; + surf = (struct r600_surface *)state->cbufs[cb]; rtex = (struct r600_resource_texture*)state->cbufs[cb]->texture; rbuffer = &rtex->resource; bo[0] = rbuffer->bo; @@ -754,7 +756,7 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state bo[2] = rbuffer->bo; pitch = rtex->pitch_in_pixels[level] / 8 - 1; - slice = rtex->pitch_in_pixels[level] * state->cbufs[cb]->height / 64 - 1; + slice = rtex->pitch_in_pixels[level] * surf->aligned_height / 64 - 1; ntype = 0; desc = util_format_description(rtex->resource.base.b.format); if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) @@ -801,6 +803,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state { struct r600_resource_texture *rtex; struct r600_resource *rbuffer; + struct r600_surface *surf; unsigned level; unsigned pitch, slice, format, stencil_format; @@ -809,6 +812,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state level = state->zsbuf->level; + surf = (struct r600_surface *)state->zsbuf; rtex = (struct r600_resource_texture*)state->zsbuf->texture; rtex->tiled = 1; rtex->array_mode[level] = 2; @@ -817,7 +821,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state rbuffer = &rtex->resource; pitch = rtex->pitch_in_pixels[level] / 8 - 1; - slice = rtex->pitch_in_pixels[level] * state->zsbuf->height / 64 - 1; + slice = rtex->pitch_in_pixels[level] * surf->aligned_height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); stencil_format = r600_translate_stencilformat(state->zsbuf->texture->format); @@ -829,7 +833,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state if (stencil_format) { uint32_t stencil_offset; - stencil_offset = ((state->zsbuf->height * rtex->pitch_in_bytes[level]) + 255) & ~255; + stencil_offset = ((surf->aligned_height * rtex->pitch_in_bytes[level]) + 255) & ~255; r600_pipe_state_add_reg(rstate, R_02804C_DB_STENCIL_READ_BASE, (state->zsbuf->offset + stencil_offset + r600_bo_offset(rbuffer->bo)) >> 8, 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_028054_DB_STENCIL_WRITE_BASE, diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index d34a8edac2b..5d9fe8cf944 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -124,4 +124,9 @@ void* r600_texture_transfer_map(struct pipe_context *ctx, void r600_texture_transfer_unmap(struct pipe_context *ctx, struct pipe_transfer* transfer); +struct r600_surface { + struct pipe_surface base; + unsigned aligned_height; +}; + #endif diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 7775619c04b..bab3f224d7d 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -950,6 +950,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta { struct r600_resource_texture *rtex; struct r600_resource *rbuffer; + struct r600_surface *surf; unsigned level = state->cbufs[cb]->level; unsigned pitch, slice; unsigned color_info; @@ -957,6 +958,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta const struct util_format_description *desc; struct r600_bo *bo[3]; + surf = (struct r600_surface *)state->cbufs[cb]; rtex = (struct r600_resource_texture*)state->cbufs[cb]->texture; rbuffer = &rtex->resource; bo[0] = rbuffer->bo; @@ -964,7 +966,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta bo[2] = rbuffer->bo; pitch = rtex->pitch_in_pixels[level] / 8 - 1; - slice = rtex->pitch_in_pixels[level] * state->cbufs[cb]->height / 64 - 1; + slice = rtex->pitch_in_pixels[level] * surf->aligned_height / 64 - 1; ntype = 0; desc = util_format_description(rtex->resource.base.b.format); if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) @@ -1010,6 +1012,7 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta { struct r600_resource_texture *rtex; struct r600_resource *rbuffer; + struct r600_surface *surf; unsigned level; unsigned pitch, slice, format; @@ -1018,6 +1021,7 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta level = state->zsbuf->level; + surf = (struct r600_surface *)state->zsbuf; rtex = (struct r600_resource_texture*)state->zsbuf->texture; rtex->tiled = 1; rtex->array_mode[level] = 2; @@ -1026,7 +1030,7 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta rbuffer = &rtex->resource; pitch = rtex->pitch_in_pixels[level] / 8 - 1; - slice = rtex->pitch_in_pixels[level] * state->zsbuf->height / 64 - 1; + slice = rtex->pitch_in_pixels[level] * surf->aligned_height / 64 - 1; format = r600_translate_dbformat(state->zsbuf->texture->format); r600_pipe_state_add_reg(rstate, R_02800C_DB_DEPTH_BASE, @@ -1039,7 +1043,7 @@ static void r600_db(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta S_028010_ARRAY_MODE(rtex->array_mode[level]) | S_028010_FORMAT(format), 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_028D34_DB_PREFETCH_LIMIT, - (state->zsbuf->height / 8) - 1, 0xFFFFFFFF, NULL); + (surf->aligned_height / 8) - 1, 0xFFFFFFFF, NULL); } static void r600_set_framebuffer_state(struct pipe_context *ctx, diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index a90fc0382f1..c765c0c87a1 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -279,24 +279,27 @@ static struct pipe_surface *r600_get_tex_surface(struct pipe_screen *screen, unsigned zslice, unsigned flags) { struct r600_resource_texture *rtex = (struct r600_resource_texture*)texture; - struct pipe_surface *surface = CALLOC_STRUCT(pipe_surface); - unsigned offset; + struct r600_surface *surface = CALLOC_STRUCT(r600_surface); + unsigned offset, tile_height; if (surface == NULL) return NULL; offset = r600_texture_get_offset(rtex, level, zslice, face); - pipe_reference_init(&surface->reference, 1); - pipe_resource_reference(&surface->texture, texture); - surface->format = texture->format; - surface->width = mip_minify(texture->width0, level); - surface->height = mip_minify(texture->height0, level); - surface->offset = offset; - surface->usage = flags; - surface->zslice = zslice; - surface->texture = texture; - surface->face = face; - surface->level = level; - return surface; + pipe_reference_init(&surface->base.reference, 1); + pipe_resource_reference(&surface->base.texture, texture); + surface->base.format = texture->format; + surface->base.width = mip_minify(texture->width0, level); + surface->base.height = mip_minify(texture->height0, level); + surface->base.offset = offset; + surface->base.usage = flags; + surface->base.zslice = zslice; + surface->base.texture = texture; + surface->base.face = face; + surface->base.level = level; + + tile_height = r600_get_height_alignment(screen, rtex->array_mode[level]); + surface->aligned_height = align(surface->base.height, tile_height); + return &surface->base; } static void r600_tex_surface_destroy(struct pipe_surface *surface) -- cgit v1.2.3 From 92ed84d11560e226c87bf2758b1503e3075b3f82 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 13:36:01 +1000 Subject: r600g: introduce a per-driver resource flag for transfers. this is to be used to decide not to tile a surface being used for transfers. --- src/gallium/drivers/r600/r600_resource.h | 3 +++ src/gallium/drivers/r600/r600_texture.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index 5d9fe8cf944..d152285815c 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -25,6 +25,9 @@ #include "util/u_transfer.h" +/* flag to indicate a resource is to be used as a transfer so should not be tiled */ +#define R600_RESOURCE_FLAG_TRANSFER PIPE_RESOURCE_FLAG_DRV_PRIV + /* Texture transfer. */ struct r600_transfer { /* Base class. */ diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index c765c0c87a1..b0e5cda6010 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -361,7 +361,7 @@ int r600_texture_depth_flush(struct pipe_context *ctx, resource.nr_samples = 0; resource.usage = PIPE_USAGE_DYNAMIC; resource.bind = 0; - resource.flags = 0; + resource.flags = R600_RESOURCE_FLAG_TRANSFER; resource.bind |= PIPE_BIND_DEPTH_STENCIL; @@ -412,7 +412,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, resource.nr_samples = 0; resource.usage = PIPE_USAGE_DYNAMIC; resource.bind = 0; - resource.flags = 0; + resource.flags = R600_RESOURCE_FLAG_TRANSFER; /* For texture reading, the temporary (detiled) texture is used as * a render target when blitting from a tiled texture. */ if (usage & PIPE_TRANSFER_READ) { -- cgit v1.2.3 From cdd14668b67d80729c0bb6480dc2317ac4e1cbb9 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 13:37:54 +1000 Subject: r600g: add texture tiling alignment support. this sets things up to align stride/height with tile sizes, it also adds support for the 2D/1D array mode cross over point. --- src/gallium/drivers/r600/r600_texture.c | 65 ++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index b0e5cda6010..d7ac74c0f19 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -96,13 +96,46 @@ static unsigned r600_get_pixel_alignment(struct pipe_screen *screen, enum pipe_format format, unsigned array_mode) { - return 64; + struct r600_screen* rscreen = (struct r600_screen *)screen; + unsigned pixsize = util_format_get_blocksize(format); + int p_align; + + switch(array_mode) { + case V_038000_ARRAY_1D_TILED_THIN1: + p_align = MAX2(8, + ((rscreen->tiling_info->group_bytes / 8 / pixsize))); + break; + case V_038000_ARRAY_2D_TILED_THIN1: + p_align = MAX2(rscreen->tiling_info->num_banks, + (((rscreen->tiling_info->group_bytes / 8 / pixsize)) * + rscreen->tiling_info->num_banks)); + break; + case 0: + default: + p_align = 64; + break; + } + return p_align; } static unsigned r600_get_height_alignment(struct pipe_screen *screen, unsigned array_mode) { - return 1; + struct r600_screen* rscreen = (struct r600_screen *)screen; + int h_align; + + switch (array_mode) { + case V_038000_ARRAY_2D_TILED_THIN1: + h_align = rscreen->tiling_info->num_channels * 8; + break; + case V_038000_ARRAY_1D_TILED_THIN1: + h_align = 8; + break; + default: + h_align = 1; + break; + } + return h_align; } static unsigned mip_minify(unsigned size, unsigned level) @@ -135,8 +168,6 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen, stride = util_format_get_stride(ptex->format, width); if (chipc == EVERGREEN) stride = align(stride, 512); - else - stride = align(stride, 256); return stride; } @@ -168,7 +199,31 @@ static void r600_texture_set_array_mode(struct pipe_screen *screen, struct r600_resource_texture *rtex, unsigned level, unsigned array_mode) { - rtex->array_mode[level] = array_mode; + struct pipe_resource *ptex = &rtex->resource.base.b; + + switch (array_mode) { + case V_0280A0_ARRAY_LINEAR_GENERAL: + case V_0280A0_ARRAY_LINEAR_ALIGNED: + case V_0280A0_ARRAY_1D_TILED_THIN1: + default: + rtex->array_mode[level] = array_mode; + break; + case V_0280A0_ARRAY_2D_TILED_THIN1: + { + unsigned w, h, tile_height, tile_width; + + tile_height = r600_get_height_alignment(screen, array_mode); + tile_width = r600_get_pixel_alignment(screen, ptex->format, array_mode); + + w = mip_minify(ptex->width0, level); + h = mip_minify(ptex->height0, level); + if (w < tile_width || h < tile_height) + rtex->array_mode[level] = V_0280A0_ARRAY_1D_TILED_THIN1; + else + rtex->array_mode[level] = array_mode; + } + break; + } } static void r600_setup_miptree(struct pipe_screen *screen, -- cgit v1.2.3 From 089aa0ba247cee908ae689f8e4f3ffc457ce7627 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 13:40:45 +1000 Subject: r600g: add texture tiling enable under a debug option. At the moment you need kernel patches to have texture tiling work with the kernel CS checker, so once they are upstream and the drm version is bumped we can make this enable flip the other way most likely. --- src/gallium/drivers/r600/r600_texture.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index d7ac74c0f19..4ebd5b754b3 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -307,6 +307,13 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen, { unsigned array_mode = 0; + if (debug_get_bool_option("R600_FORCE_TILING", FALSE)) { + if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) && + !(templ->bind & PIPE_BIND_SCANOUT)) { + array_mode = V_038000_ARRAY_2D_TILED_THIN1; + } + } + return (struct pipe_resource *)r600_texture_create_object(screen, templ, array_mode, 0, 0, NULL); -- cgit v1.2.3 From abc5435f225e637c0c936f8562829dfdddd10caf Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 21 Oct 2010 01:44:48 -0700 Subject: llvmpipe: Remove unnecessary header. --- src/gallium/drivers/llvmpipe/lp_jit.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c b/src/gallium/drivers/llvmpipe/lp_jit.c index 4dbb12c999b..c540f9b3628 100644 --- a/src/gallium/drivers/llvmpipe/lp_jit.c +++ b/src/gallium/drivers/llvmpipe/lp_jit.c @@ -36,7 +36,6 @@ #include #include "util/u_memory.h" -#include "util/u_cpu_detect.h" #include "gallivm/lp_bld_init.h" #include "gallivm/lp_bld_debug.h" #include "lp_screen.h" -- cgit v1.2.3 From 3a54195679b5a9ed12127c85ca03e5546643d63d Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 21 Oct 2010 01:47:52 -0700 Subject: draw: Remove unnecessary header. --- src/gallium/auxiliary/draw/draw_llvm.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 3f14571aa34..d808c05ba0d 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -46,7 +46,6 @@ #include "tgsi/tgsi_exec.h" #include "tgsi/tgsi_dump.h" -#include "util/u_cpu_detect.h" #include "util/u_math.h" #include "util/u_pointer.h" #include "util/u_string.h" -- cgit v1.2.3 From e68c83a5a01a8a659857310cfcc785c7e028d3f0 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 17:34:25 +1000 Subject: r600g: initial translate state support --- src/gallium/drivers/r600/r600_pipe.c | 9 ++ src/gallium/drivers/r600/r600_pipe.h | 19 ++- src/gallium/drivers/r600/r600_shader.c | 2 +- src/gallium/drivers/r600/r600_state.c | 225 ++++++++++++++++++++++++++++++++- 4 files changed, 250 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index dd8fa4fcd77..bea7ef5df84 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -85,6 +85,9 @@ static void r600_destroy_context(struct pipe_context *context) u_upload_destroy(rctx->upload_vb); u_upload_destroy(rctx->upload_ib); + if (rctx->tran.translate_cache) + translate_cache_destroy(rctx->tran.translate_cache); + FREE(rctx->ps_resource); FREE(rctx->vs_resource); FREE(rctx); @@ -173,6 +176,12 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void return NULL; } + rctx->tran.translate_cache = translate_cache_create(); + if (rctx->tran.translate_cache == NULL) { + FREE(rctx); + return NULL; + } + rctx->vs_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state)); if (!rctx->vs_resource) { FREE(rctx); diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index e7c4b60d00c..7fb47b608e4 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -30,6 +30,7 @@ #include #include #include +#include "translate/translate_cache.h" #include "r600.h" #include "r600_public.h" #include "r600_shader.h" @@ -83,7 +84,10 @@ struct r600_vertex_element { unsigned count; unsigned refcount; - struct pipe_vertex_element elements[32]; + struct pipe_vertex_element elements[PIPE_MAX_ATTRIBS]; + enum pipe_format hw_format[PIPE_MAX_ATTRIBS]; + unsigned hw_format_size[PIPE_MAX_ATTRIBS]; + boolean incompatible_layout; }; struct r600_pipe_shader { @@ -103,6 +107,16 @@ struct r600_textures_info { unsigned n_samplers; }; +struct r600_translate_context { + /* Translate cache for incompatible vertex offset/stride/format fallback. */ + struct translate_cache *translate_cache; + + /* The vertex buffer slot containing the translated buffer. */ + unsigned vb_slot; + /* Saved and new vertex element state. */ + void *saved_velems, *new_velems; +}; + #define R600_CONSTANT_ARRAY_SIZE 256 #define R600_RESOURCE_ARRAY_SIZE 160 @@ -142,6 +156,9 @@ struct r600_pipe_context { unsigned any_user_vbs; struct r600_textures_info ps_samplers; + unsigned vb_max_index; + struct r600_translate_context tran; + }; struct r600_drawl { diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index f98f05512a1..0dd416c0d83 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -270,7 +270,7 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader } rshader->vertex_elements = *rctx->vertex_elements; for (i = 0; i < rctx->vertex_elements->count; i++) { - resource_format[nresources++] = rctx->vertex_elements->elements[i].src_format; + resource_format[nresources++] = rctx->vertex_elements->hw_format[i]; } r600_bo_reference(rctx->radeon, &rshader->bo, NULL); LIST_FOR_EACH_ENTRY(cf, &bc->cf, list) { diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index bab3f224d7d..5cc4b3044b4 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -39,6 +39,8 @@ #include #include #include +#include "translate/translate_cache.h" +#include "translate/translate.h" #include #include "r600.h" #include "r600d.h" @@ -99,7 +101,7 @@ static void r600_draw_common(struct r600_drawl *draw) vertex_buffer->buffer_offset + r600_bo_offset(rbuffer->bo); - format = r600_translate_vertex_data_type(rctx->vertex_elements->elements[i].src_format); + format = r600_translate_vertex_data_type(rctx->vertex_elements->hw_format[i]); word2 = format | S_038008_STRIDE(vertex_buffer->stride); @@ -182,6 +184,171 @@ static void r600_draw_common(struct r600_drawl *draw) r600_context_draw(&rctx->ctx, &rdraw); } +static void r600_begin_vertex_translate(struct r600_pipe_context *rctx) +{ + struct pipe_context *pipe = &rctx->context; + struct translate_key key = {0}; + struct translate_element *te; + unsigned tr_elem_index[PIPE_MAX_ATTRIBS] = {0}; + struct translate *tr; + struct r600_vertex_element *ve = rctx->vertex_elements; + boolean vb_translated[PIPE_MAX_ATTRIBS] = {0}; + void *vb_map[PIPE_MAX_ATTRIBS] = {0}, *out_map; + struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS] = {0}, *out_transfer; + struct pipe_resource *out_buffer; + unsigned i, num_verts; + + /* Initialize the translate key, i.e. the recipe how vertices should be + * translated. */ + for (i = 0; i < ve->count; i++) { + struct pipe_vertex_buffer *vb = + &rctx->vertex_buffer[ve->elements[i].vertex_buffer_index]; + enum pipe_format output_format = ve->hw_format[i]; + unsigned output_format_size = ve->hw_format_size[i]; + + /* Check for support. */ + if (ve->elements[i].src_format == ve->hw_format[i] && + (vb->buffer_offset + ve->elements[i].src_offset) % 4 == 0 && + vb->stride % 4 == 0) { + continue; + } + + /* Workaround for translate: output floats instead of halfs. */ + switch (output_format) { + case PIPE_FORMAT_R16_FLOAT: + output_format = PIPE_FORMAT_R32_FLOAT; + output_format_size = 4; + break; + case PIPE_FORMAT_R16G16_FLOAT: + output_format = PIPE_FORMAT_R32G32_FLOAT; + output_format_size = 8; + break; + case PIPE_FORMAT_R16G16B16_FLOAT: + output_format = PIPE_FORMAT_R32G32B32_FLOAT; + output_format_size = 12; + break; + case PIPE_FORMAT_R16G16B16A16_FLOAT: + output_format = PIPE_FORMAT_R32G32B32A32_FLOAT; + output_format_size = 16; + break; + default:; + } + + /* Add this vertex element. */ + te = &key.element[key.nr_elements]; + /*te->type; + te->instance_divisor;*/ + te->input_buffer = ve->elements[i].vertex_buffer_index; + te->input_format = ve->elements[i].src_format; + te->input_offset = vb->buffer_offset + ve->elements[i].src_offset; + te->output_format = output_format; + te->output_offset = key.output_stride; + + key.output_stride += output_format_size; + vb_translated[ve->elements[i].vertex_buffer_index] = TRUE; + tr_elem_index[i] = key.nr_elements; + key.nr_elements++; + } + + /* Get a translate object. */ + tr = translate_cache_find(rctx->tran.translate_cache, &key); + + /* Map buffers we want to translate. */ + for (i = 0; i < rctx->nvertex_buffer; i++) { + if (vb_translated[i]) { + struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[i]; + + vb_map[i] = pipe_buffer_map(pipe, vb->buffer, + PIPE_TRANSFER_READ, &vb_transfer[i]); + + tr->set_buffer(tr, i, vb_map[i], vb->stride, vb->max_index); + } + } + + /* Create and map the output buffer. */ + num_verts = rctx->vb_max_index + 1; + + out_buffer = pipe_buffer_create(&rctx->screen->screen, + PIPE_BIND_VERTEX_BUFFER, + key.output_stride * num_verts); + + out_map = pipe_buffer_map(pipe, out_buffer, PIPE_TRANSFER_WRITE, + &out_transfer); + + /* Translate. */ + tr->run(tr, 0, num_verts, 0, out_map); + + /* Unmap all buffers. */ + for (i = 0; i < rctx->nvertex_buffer; i++) { + if (vb_translated[i]) { + pipe_buffer_unmap(pipe, rctx->vertex_buffer[i].buffer, + vb_transfer[i]); + } + } + + { + float *flt = out_map; + fprintf(stderr,"num verts is %d\n", num_verts); + for (i = 0; i < num_verts; i++) { + fprintf(stderr,"%f %f\n", flt[i*2], flt[i*2+1]); + } + } + pipe_buffer_unmap(pipe, out_buffer, out_transfer); + + /* Setup the new vertex buffer in the first free slot. */ + for (i = 0; i < PIPE_MAX_ATTRIBS; i++) { + struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[i]; + + if (!vb->buffer) { + pipe_resource_reference(&vb->buffer, out_buffer); + vb->buffer_offset = 0; + vb->max_index = num_verts - 1; + vb->stride = key.output_stride; + rctx->tran.vb_slot = i; + break; + } + } + + /* Save and replace vertex elements. */ + { + struct pipe_vertex_element new_velems[PIPE_MAX_ATTRIBS]; + + rctx->tran.saved_velems = rctx->vertex_elements; + + for (i = 0; i < ve->count; i++) { + if (vb_translated[ve->elements[i].vertex_buffer_index]) { + te = &key.element[tr_elem_index[i]]; + new_velems[i].instance_divisor = ve->elements[i].instance_divisor; + new_velems[i].src_format = te->output_format; + new_velems[i].src_offset = te->output_offset; + new_velems[i].vertex_buffer_index = rctx->tran.vb_slot; + } else { + memcpy(&new_velems[i], &ve->elements[i], + sizeof(struct pipe_vertex_element)); + } + } + + rctx->tran.new_velems = + pipe->create_vertex_elements_state(pipe, ve->count, new_velems); + pipe->bind_vertex_elements_state(pipe, rctx->tran.new_velems); + } + + pipe_resource_reference(&out_buffer, NULL); +} + +static void r600_end_vertex_translate(struct r600_pipe_context *rctx) +{ + struct pipe_context *pipe = &rctx->context; + + /* Restore vertex elements. */ + pipe->bind_vertex_elements_state(pipe, rctx->tran.saved_velems); + pipe->delete_vertex_elements_state(pipe, rctx->tran.new_velems); + + /* Delete the now-unused VBO. */ + pipe_resource_reference(&rctx->vertex_buffer[rctx->tran.vb_slot].buffer, + NULL); +} + void r600_translate_index_buffer(struct r600_pipe_context *r600, struct pipe_resource **index_buffer, unsigned *index_size, @@ -210,12 +377,17 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_drawl draw; + boolean translate = FALSE; + + if (rctx->vertex_elements->incompatible_layout) { + r600_begin_vertex_translate(rctx); + translate = TRUE; + } if (rctx->any_user_vbs) { r600_upload_user_buffers(rctx); rctx->any_user_vbs = FALSE; } - memset(&draw, 0, sizeof(struct r600_drawl)); draw.ctx = ctx; draw.mode = info->mode; @@ -246,6 +418,9 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) } r600_draw_common(&draw); + if (translate) + r600_end_vertex_translate(rctx); + pipe_resource_reference(&draw.index_buffer, NULL); } @@ -582,16 +757,45 @@ static void *r600_create_sampler_state(struct pipe_context *ctx, return rstate; } +#define FORMAT_REPLACE(what, withwhat) \ + case PIPE_FORMAT_##what: *format = PIPE_FORMAT_##withwhat; break + static void *r600_create_vertex_elements(struct pipe_context *ctx, unsigned count, const struct pipe_vertex_element *elements) { struct r600_vertex_element *v = CALLOC_STRUCT(r600_vertex_element); + int i; + enum pipe_format *format; assert(count < 32); + if (!v) + return NULL; + v->count = count; - v->refcount = 1; memcpy(v->elements, elements, count * sizeof(struct pipe_vertex_element)); + + for (i = 0; i < count; i++) { + v->hw_format[i] = v->elements[i].src_format; + format = &v->hw_format[i]; + + switch (*format) { + FORMAT_REPLACE(R64_FLOAT, R32_FLOAT); + FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT); + FORMAT_REPLACE(R64G64B64_FLOAT, R32G32B32_FLOAT); + FORMAT_REPLACE(R64G64B64A64_FLOAT, R32G32B32A32_FLOAT); + default:; + } + v->incompatible_layout = + v->incompatible_layout || + v->elements[i].src_format != v->hw_format[i] || + v->elements[i].src_offset % 4 != 0; + + v->hw_format_size[i] = + align(util_format_get_blocksize(v->hw_format[i]), 4); + } + + v->refcount = 1; return v; } @@ -1164,18 +1368,33 @@ static void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, const struct pipe_vertex_buffer *buffers) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct pipe_vertex_buffer *vbo; + unsigned max_index = (unsigned)-1, vbo_max_index; for (int i = 0; i < rctx->nvertex_buffer; i++) { pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL); } memcpy(rctx->vertex_buffer, buffers, sizeof(struct pipe_vertex_buffer) * count); + for (int i = 0; i < count; i++) { + vbo = (struct pipe_vertex_buffer*)&buffers[i]; + rctx->vertex_buffer[i].buffer = NULL; if (r600_buffer_is_user_buffer(buffers[i].buffer)) rctx->any_user_vbs = TRUE; pipe_resource_reference(&rctx->vertex_buffer[i].buffer, buffers[i].buffer); + + if (vbo->max_index == ~0) { + if (!vbo->stride) + vbo->max_index = 1; + else + vbo->max_index = (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride; + } + + max_index = MIN2(vbo->max_index, max_index); } rctx->nvertex_buffer = count; + rctx->vb_max_index = max_index; } static void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index, -- cgit v1.2.3 From f39e6c9c816b603a4ed8fd8cda8569b7e13c1f68 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 21 Oct 2010 19:11:23 +1000 Subject: r600g: start splitting out common code from eg/r600. no point duplicating code that doesn't touch hw, also make it easier to spot mistakes --- src/gallium/drivers/r600/Makefile | 4 +- src/gallium/drivers/r600/evergreen_state.c | 66 ++----- src/gallium/drivers/r600/r600_pipe.h | 20 +- src/gallium/drivers/r600/r600_state.c | 282 --------------------------- src/gallium/drivers/r600/r600_state_common.c | 123 ++++++++++++ src/gallium/drivers/r600/r600_translate.c | 211 ++++++++++++++++++++ 6 files changed, 367 insertions(+), 339 deletions(-) create mode 100644 src/gallium/drivers/r600/r600_state_common.c create mode 100644 src/gallium/drivers/r600/r600_translate.c (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/Makefile b/src/gallium/drivers/r600/Makefile index ede0bb2ec45..a484f38e9f1 100644 --- a/src/gallium/drivers/r600/Makefile +++ b/src/gallium/drivers/r600/Makefile @@ -19,6 +19,8 @@ C_SOURCES = \ r600_texture.c \ r700_asm.c \ evergreen_state.c \ - eg_asm.c + eg_asm.c \ + r600_translate.c \ + r600_state_common.c include ../../Makefile.template diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 0b54c2c7167..f394527edfd 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -377,19 +377,6 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx, return rstate; } -static void *evergreen_create_vertex_elements(struct pipe_context *ctx, - unsigned count, - const struct pipe_vertex_element *elements) -{ - struct r600_vertex_element *v = CALLOC_STRUCT(r600_vertex_element); - - assert(count < 32); - v->count = count; - v->refcount = 1; - memcpy(v->elements, elements, count * sizeof(struct pipe_vertex_element)); - return v; -} - static void evergreen_sampler_view_destroy(struct pipe_context *ctx, struct pipe_sampler_view *state) { @@ -935,40 +922,6 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, r600_context_pipe_state_set(&rctx->ctx, rstate); } -static void evergreen_set_index_buffer(struct pipe_context *ctx, - const struct pipe_index_buffer *ib) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - if (ib) { - pipe_resource_reference(&rctx->index_buffer.buffer, ib->buffer); - memcpy(&rctx->index_buffer, ib, sizeof(rctx->index_buffer)); - } else { - pipe_resource_reference(&rctx->index_buffer.buffer, NULL); - memset(&rctx->index_buffer, 0, sizeof(rctx->index_buffer)); - } - - /* TODO make this more like a state */ -} - -static void evergreen_set_vertex_buffers(struct pipe_context *ctx, unsigned count, - const struct pipe_vertex_buffer *buffers) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - for (int i = 0; i < rctx->nvertex_buffer; i++) { - pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL); - } - memcpy(rctx->vertex_buffer, buffers, sizeof(struct pipe_vertex_buffer) * count); - for (int i = 0; i < count; i++) { - rctx->vertex_buffer[i].buffer = NULL; - if (r600_buffer_is_user_buffer(buffers[i].buffer)) - rctx->any_user_vbs = TRUE; - pipe_resource_reference(&rctx->vertex_buffer[i].buffer, buffers[i].buffer); - } - rctx->nvertex_buffer = count; -} - static void evergreen_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index, struct pipe_resource *buffer) { @@ -1065,7 +1018,7 @@ void evergreen_init_state_functions(struct r600_pipe_context *rctx) rctx->context.create_rasterizer_state = evergreen_create_rs_state; rctx->context.create_sampler_state = evergreen_create_sampler_state; rctx->context.create_sampler_view = evergreen_create_sampler_view; - rctx->context.create_vertex_elements_state = evergreen_create_vertex_elements; + rctx->context.create_vertex_elements_state = r600_create_vertex_elements; rctx->context.create_vs_state = evergreen_create_shader_state; rctx->context.bind_blend_state = evergreen_bind_blend_state; rctx->context.bind_depth_stencil_alpha_state = evergreen_bind_state; @@ -1091,8 +1044,8 @@ void evergreen_init_state_functions(struct r600_pipe_context *rctx) rctx->context.set_sample_mask = evergreen_set_sample_mask; rctx->context.set_scissor_state = evergreen_set_scissor_state; rctx->context.set_stencil_ref = evergreen_set_stencil_ref; - rctx->context.set_vertex_buffers = evergreen_set_vertex_buffers; - rctx->context.set_index_buffer = evergreen_set_index_buffer; + rctx->context.set_vertex_buffers = r600_set_vertex_buffers; + rctx->context.set_index_buffer = r600_set_index_buffer; rctx->context.set_vertex_sampler_views = evergreen_set_vs_sampler_view; rctx->context.set_viewport_state = evergreen_set_viewport_state; rctx->context.sampler_view_destroy = evergreen_sampler_view_destroy; @@ -1378,6 +1331,12 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info) struct r600_draw rdraw; struct r600_pipe_state vgt; struct r600_drawl draw; + boolean translate = FALSE; + + if (rctx->vertex_elements->incompatible_layout) { + r600_begin_vertex_translate(rctx); + translate = TRUE; + } if (rctx->any_user_vbs) { r600_upload_user_buffers(rctx); @@ -1454,11 +1413,11 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info) vertex_buffer->buffer_offset + r600_bo_offset(rbuffer->bo); - format = r600_translate_vertex_data_type(rctx->vertex_elements->elements[i].src_format); + format = r600_translate_vertex_data_type(rctx->vertex_elements->hw_format[i]); word2 = format | S_030008_STRIDE(vertex_buffer->stride); - word3 = r600_translate_vertex_data_swizzle(rctx->vertex_elements->elements[i].src_format); + word3 = r600_translate_vertex_data_swizzle(rctx->vertex_elements->hw_format[i]); r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0, offset, 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1, rbuffer->size - offset - 1, 0xFFFFFFFF, NULL); @@ -1539,6 +1498,9 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info) } evergreen_context_draw(&rctx->ctx, &rdraw); + if (translate) + r600_end_vertex_translate(rctx); + pipe_resource_reference(&draw.index_buffer, NULL); } diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 7fb47b608e4..11410f17c75 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -216,10 +216,6 @@ int r600_find_vs_semantic_index(struct r600_shader *vs, void r600_init_state_functions(struct r600_pipe_context *rctx); void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info); void r600_init_config(struct r600_pipe_context *rctx); -void r600_translate_index_buffer(struct r600_pipe_context *r600, - struct pipe_resource **index_buffer, - unsigned *index_size, - unsigned *start, unsigned count); void *r600_create_db_flush_dsa(struct r600_pipe_context *rctx); /* r600_helper.h */ int r600_conv_pipe_prim(unsigned pprim, unsigned *prim); @@ -230,6 +226,22 @@ uint32_t r600_translate_texformat(enum pipe_format format, const unsigned char *swizzle_view, uint32_t *word4_p, uint32_t *yuv_format_p); +/* r600_translate.c */ +void r600_begin_vertex_translate(struct r600_pipe_context *rctx); +void r600_end_vertex_translate(struct r600_pipe_context *rctx); +void r600_translate_index_buffer(struct r600_pipe_context *r600, + struct pipe_resource **index_buffer, + unsigned *index_size, + unsigned *start, unsigned count); + +/* r600_state_common.c */ +void r600_set_index_buffer(struct pipe_context *ctx, + const struct pipe_index_buffer *ib); +void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, + const struct pipe_vertex_buffer *buffers); +void *r600_create_vertex_elements(struct pipe_context *ctx, + unsigned count, + const struct pipe_vertex_element *elements); /* * common helpers */ diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 5cc4b3044b4..df2c05ea139 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -37,10 +37,7 @@ #include #include #include -#include #include -#include "translate/translate_cache.h" -#include "translate/translate.h" #include #include "r600.h" #include "r600d.h" @@ -184,195 +181,6 @@ static void r600_draw_common(struct r600_drawl *draw) r600_context_draw(&rctx->ctx, &rdraw); } -static void r600_begin_vertex_translate(struct r600_pipe_context *rctx) -{ - struct pipe_context *pipe = &rctx->context; - struct translate_key key = {0}; - struct translate_element *te; - unsigned tr_elem_index[PIPE_MAX_ATTRIBS] = {0}; - struct translate *tr; - struct r600_vertex_element *ve = rctx->vertex_elements; - boolean vb_translated[PIPE_MAX_ATTRIBS] = {0}; - void *vb_map[PIPE_MAX_ATTRIBS] = {0}, *out_map; - struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS] = {0}, *out_transfer; - struct pipe_resource *out_buffer; - unsigned i, num_verts; - - /* Initialize the translate key, i.e. the recipe how vertices should be - * translated. */ - for (i = 0; i < ve->count; i++) { - struct pipe_vertex_buffer *vb = - &rctx->vertex_buffer[ve->elements[i].vertex_buffer_index]; - enum pipe_format output_format = ve->hw_format[i]; - unsigned output_format_size = ve->hw_format_size[i]; - - /* Check for support. */ - if (ve->elements[i].src_format == ve->hw_format[i] && - (vb->buffer_offset + ve->elements[i].src_offset) % 4 == 0 && - vb->stride % 4 == 0) { - continue; - } - - /* Workaround for translate: output floats instead of halfs. */ - switch (output_format) { - case PIPE_FORMAT_R16_FLOAT: - output_format = PIPE_FORMAT_R32_FLOAT; - output_format_size = 4; - break; - case PIPE_FORMAT_R16G16_FLOAT: - output_format = PIPE_FORMAT_R32G32_FLOAT; - output_format_size = 8; - break; - case PIPE_FORMAT_R16G16B16_FLOAT: - output_format = PIPE_FORMAT_R32G32B32_FLOAT; - output_format_size = 12; - break; - case PIPE_FORMAT_R16G16B16A16_FLOAT: - output_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - output_format_size = 16; - break; - default:; - } - - /* Add this vertex element. */ - te = &key.element[key.nr_elements]; - /*te->type; - te->instance_divisor;*/ - te->input_buffer = ve->elements[i].vertex_buffer_index; - te->input_format = ve->elements[i].src_format; - te->input_offset = vb->buffer_offset + ve->elements[i].src_offset; - te->output_format = output_format; - te->output_offset = key.output_stride; - - key.output_stride += output_format_size; - vb_translated[ve->elements[i].vertex_buffer_index] = TRUE; - tr_elem_index[i] = key.nr_elements; - key.nr_elements++; - } - - /* Get a translate object. */ - tr = translate_cache_find(rctx->tran.translate_cache, &key); - - /* Map buffers we want to translate. */ - for (i = 0; i < rctx->nvertex_buffer; i++) { - if (vb_translated[i]) { - struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[i]; - - vb_map[i] = pipe_buffer_map(pipe, vb->buffer, - PIPE_TRANSFER_READ, &vb_transfer[i]); - - tr->set_buffer(tr, i, vb_map[i], vb->stride, vb->max_index); - } - } - - /* Create and map the output buffer. */ - num_verts = rctx->vb_max_index + 1; - - out_buffer = pipe_buffer_create(&rctx->screen->screen, - PIPE_BIND_VERTEX_BUFFER, - key.output_stride * num_verts); - - out_map = pipe_buffer_map(pipe, out_buffer, PIPE_TRANSFER_WRITE, - &out_transfer); - - /* Translate. */ - tr->run(tr, 0, num_verts, 0, out_map); - - /* Unmap all buffers. */ - for (i = 0; i < rctx->nvertex_buffer; i++) { - if (vb_translated[i]) { - pipe_buffer_unmap(pipe, rctx->vertex_buffer[i].buffer, - vb_transfer[i]); - } - } - - { - float *flt = out_map; - fprintf(stderr,"num verts is %d\n", num_verts); - for (i = 0; i < num_verts; i++) { - fprintf(stderr,"%f %f\n", flt[i*2], flt[i*2+1]); - } - } - pipe_buffer_unmap(pipe, out_buffer, out_transfer); - - /* Setup the new vertex buffer in the first free slot. */ - for (i = 0; i < PIPE_MAX_ATTRIBS; i++) { - struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[i]; - - if (!vb->buffer) { - pipe_resource_reference(&vb->buffer, out_buffer); - vb->buffer_offset = 0; - vb->max_index = num_verts - 1; - vb->stride = key.output_stride; - rctx->tran.vb_slot = i; - break; - } - } - - /* Save and replace vertex elements. */ - { - struct pipe_vertex_element new_velems[PIPE_MAX_ATTRIBS]; - - rctx->tran.saved_velems = rctx->vertex_elements; - - for (i = 0; i < ve->count; i++) { - if (vb_translated[ve->elements[i].vertex_buffer_index]) { - te = &key.element[tr_elem_index[i]]; - new_velems[i].instance_divisor = ve->elements[i].instance_divisor; - new_velems[i].src_format = te->output_format; - new_velems[i].src_offset = te->output_offset; - new_velems[i].vertex_buffer_index = rctx->tran.vb_slot; - } else { - memcpy(&new_velems[i], &ve->elements[i], - sizeof(struct pipe_vertex_element)); - } - } - - rctx->tran.new_velems = - pipe->create_vertex_elements_state(pipe, ve->count, new_velems); - pipe->bind_vertex_elements_state(pipe, rctx->tran.new_velems); - } - - pipe_resource_reference(&out_buffer, NULL); -} - -static void r600_end_vertex_translate(struct r600_pipe_context *rctx) -{ - struct pipe_context *pipe = &rctx->context; - - /* Restore vertex elements. */ - pipe->bind_vertex_elements_state(pipe, rctx->tran.saved_velems); - pipe->delete_vertex_elements_state(pipe, rctx->tran.new_velems); - - /* Delete the now-unused VBO. */ - pipe_resource_reference(&rctx->vertex_buffer[rctx->tran.vb_slot].buffer, - NULL); -} - -void r600_translate_index_buffer(struct r600_pipe_context *r600, - struct pipe_resource **index_buffer, - unsigned *index_size, - unsigned *start, unsigned count) -{ - switch (*index_size) { - case 1: - util_shorten_ubyte_elts(&r600->context, index_buffer, 0, *start, count); - *index_size = 2; - *start = 0; - break; - - case 2: - if (*start % 2 != 0) { - util_rebuild_ushort_elts(&r600->context, index_buffer, 0, *start, count); - *start = 0; - } - break; - - case 4: - break; - } -} - void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; @@ -757,47 +565,6 @@ static void *r600_create_sampler_state(struct pipe_context *ctx, return rstate; } -#define FORMAT_REPLACE(what, withwhat) \ - case PIPE_FORMAT_##what: *format = PIPE_FORMAT_##withwhat; break - -static void *r600_create_vertex_elements(struct pipe_context *ctx, - unsigned count, - const struct pipe_vertex_element *elements) -{ - struct r600_vertex_element *v = CALLOC_STRUCT(r600_vertex_element); - int i; - enum pipe_format *format; - - assert(count < 32); - if (!v) - return NULL; - - v->count = count; - memcpy(v->elements, elements, count * sizeof(struct pipe_vertex_element)); - - for (i = 0; i < count; i++) { - v->hw_format[i] = v->elements[i].src_format; - format = &v->hw_format[i]; - - switch (*format) { - FORMAT_REPLACE(R64_FLOAT, R32_FLOAT); - FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT); - FORMAT_REPLACE(R64G64B64_FLOAT, R32G32B32_FLOAT); - FORMAT_REPLACE(R64G64B64A64_FLOAT, R32G32B32A32_FLOAT); - default:; - } - v->incompatible_layout = - v->incompatible_layout || - v->elements[i].src_format != v->hw_format[i] || - v->elements[i].src_offset % 4 != 0; - - v->hw_format_size[i] = - align(util_format_get_blocksize(v->hw_format[i]), 4); - } - - v->refcount = 1; - return v; -} static void r600_sampler_view_destroy(struct pipe_context *ctx, struct pipe_sampler_view *state) @@ -1348,55 +1115,6 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, r600_context_pipe_state_set(&rctx->ctx, rstate); } -static void r600_set_index_buffer(struct pipe_context *ctx, - const struct pipe_index_buffer *ib) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - if (ib) { - pipe_resource_reference(&rctx->index_buffer.buffer, ib->buffer); - memcpy(&rctx->index_buffer, ib, sizeof(rctx->index_buffer)); - } else { - pipe_resource_reference(&rctx->index_buffer.buffer, NULL); - memset(&rctx->index_buffer, 0, sizeof(rctx->index_buffer)); - } - - /* TODO make this more like a state */ -} - -static void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, - const struct pipe_vertex_buffer *buffers) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct pipe_vertex_buffer *vbo; - unsigned max_index = (unsigned)-1, vbo_max_index; - - for (int i = 0; i < rctx->nvertex_buffer; i++) { - pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL); - } - memcpy(rctx->vertex_buffer, buffers, sizeof(struct pipe_vertex_buffer) * count); - - for (int i = 0; i < count; i++) { - vbo = (struct pipe_vertex_buffer*)&buffers[i]; - - rctx->vertex_buffer[i].buffer = NULL; - if (r600_buffer_is_user_buffer(buffers[i].buffer)) - rctx->any_user_vbs = TRUE; - pipe_resource_reference(&rctx->vertex_buffer[i].buffer, buffers[i].buffer); - - if (vbo->max_index == ~0) { - if (!vbo->stride) - vbo->max_index = 1; - else - vbo->max_index = (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride; - } - - max_index = MIN2(vbo->max_index, max_index); - } - rctx->nvertex_buffer = count; - rctx->vb_max_index = max_index; -} - static void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index, struct pipe_resource *buffer) { diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c new file mode 100644 index 00000000000..722ce32263e --- /dev/null +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -0,0 +1,123 @@ +/* + * Copyright 2010 Red Hat Inc. + * 2010 Jerome Glisse + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Dave Airlie + * Jerome Glisse + */ +#include +#include +#include +#include "r600_pipe.h" + +/* common state between evergreen and r600 */ + +void r600_set_index_buffer(struct pipe_context *ctx, + const struct pipe_index_buffer *ib) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + if (ib) { + pipe_resource_reference(&rctx->index_buffer.buffer, ib->buffer); + memcpy(&rctx->index_buffer, ib, sizeof(rctx->index_buffer)); + } else { + pipe_resource_reference(&rctx->index_buffer.buffer, NULL); + memset(&rctx->index_buffer, 0, sizeof(rctx->index_buffer)); + } + + /* TODO make this more like a state */ +} + +void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, + const struct pipe_vertex_buffer *buffers) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct pipe_vertex_buffer *vbo; + unsigned max_index = (unsigned)-1; + + for (int i = 0; i < rctx->nvertex_buffer; i++) { + pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL); + } + memcpy(rctx->vertex_buffer, buffers, sizeof(struct pipe_vertex_buffer) * count); + + for (int i = 0; i < count; i++) { + vbo = (struct pipe_vertex_buffer*)&buffers[i]; + + rctx->vertex_buffer[i].buffer = NULL; + if (r600_buffer_is_user_buffer(buffers[i].buffer)) + rctx->any_user_vbs = TRUE; + pipe_resource_reference(&rctx->vertex_buffer[i].buffer, buffers[i].buffer); + + if (vbo->max_index == ~0) { + if (!vbo->stride) + vbo->max_index = 1; + else + vbo->max_index = (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride; + } + max_index = MIN2(vbo->max_index, max_index); + } + rctx->nvertex_buffer = count; + rctx->vb_max_index = max_index; +} + + +#define FORMAT_REPLACE(what, withwhat) \ + case PIPE_FORMAT_##what: *format = PIPE_FORMAT_##withwhat; break + +void *r600_create_vertex_elements(struct pipe_context *ctx, + unsigned count, + const struct pipe_vertex_element *elements) +{ + struct r600_vertex_element *v = CALLOC_STRUCT(r600_vertex_element); + int i; + enum pipe_format *format; + + assert(count < 32); + if (!v) + return NULL; + + v->count = count; + memcpy(v->elements, elements, count * sizeof(struct pipe_vertex_element)); + + for (i = 0; i < count; i++) { + v->hw_format[i] = v->elements[i].src_format; + format = &v->hw_format[i]; + + switch (*format) { + FORMAT_REPLACE(R64_FLOAT, R32_FLOAT); + FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT); + FORMAT_REPLACE(R64G64B64_FLOAT, R32G32B32_FLOAT); + FORMAT_REPLACE(R64G64B64A64_FLOAT, R32G32B32A32_FLOAT); + default:; + } + v->incompatible_layout = + v->incompatible_layout || + v->elements[i].src_format != v->hw_format[i] || + v->elements[i].src_offset % 4 != 0; + + v->hw_format_size[i] = + align(util_format_get_blocksize(v->hw_format[i]), 4); + } + + v->refcount = 1; + return v; +} diff --git a/src/gallium/drivers/r600/r600_translate.c b/src/gallium/drivers/r600/r600_translate.c new file mode 100644 index 00000000000..9a07cf2073f --- /dev/null +++ b/src/gallium/drivers/r600/r600_translate.c @@ -0,0 +1,211 @@ +/* + * Copyright 2010 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Dave Airlie + */ +#include "translate/translate_cache.h" +#include "translate/translate.h" +#include +#include +#include "r600_pipe.h" + +void r600_begin_vertex_translate(struct r600_pipe_context *rctx) +{ + struct pipe_context *pipe = &rctx->context; + struct translate_key key = {0}; + struct translate_element *te; + unsigned tr_elem_index[PIPE_MAX_ATTRIBS] = {0}; + struct translate *tr; + struct r600_vertex_element *ve = rctx->vertex_elements; + boolean vb_translated[PIPE_MAX_ATTRIBS] = {0}; + void *vb_map[PIPE_MAX_ATTRIBS] = {0}, *out_map; + struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS] = {0}, *out_transfer; + struct pipe_resource *out_buffer; + unsigned i, num_verts; + + /* Initialize the translate key, i.e. the recipe how vertices should be + * translated. */ + for (i = 0; i < ve->count; i++) { + struct pipe_vertex_buffer *vb = + &rctx->vertex_buffer[ve->elements[i].vertex_buffer_index]; + enum pipe_format output_format = ve->hw_format[i]; + unsigned output_format_size = ve->hw_format_size[i]; + + /* Check for support. */ + if (ve->elements[i].src_format == ve->hw_format[i] && + (vb->buffer_offset + ve->elements[i].src_offset) % 4 == 0 && + vb->stride % 4 == 0) { + continue; + } + + /* Workaround for translate: output floats instead of halfs. */ + switch (output_format) { + case PIPE_FORMAT_R16_FLOAT: + output_format = PIPE_FORMAT_R32_FLOAT; + output_format_size = 4; + break; + case PIPE_FORMAT_R16G16_FLOAT: + output_format = PIPE_FORMAT_R32G32_FLOAT; + output_format_size = 8; + break; + case PIPE_FORMAT_R16G16B16_FLOAT: + output_format = PIPE_FORMAT_R32G32B32_FLOAT; + output_format_size = 12; + break; + case PIPE_FORMAT_R16G16B16A16_FLOAT: + output_format = PIPE_FORMAT_R32G32B32A32_FLOAT; + output_format_size = 16; + break; + default:; + } + + /* Add this vertex element. */ + te = &key.element[key.nr_elements]; + /*te->type; + te->instance_divisor;*/ + te->input_buffer = ve->elements[i].vertex_buffer_index; + te->input_format = ve->elements[i].src_format; + te->input_offset = vb->buffer_offset + ve->elements[i].src_offset; + te->output_format = output_format; + te->output_offset = key.output_stride; + + key.output_stride += output_format_size; + vb_translated[ve->elements[i].vertex_buffer_index] = TRUE; + tr_elem_index[i] = key.nr_elements; + key.nr_elements++; + } + + /* Get a translate object. */ + tr = translate_cache_find(rctx->tran.translate_cache, &key); + + /* Map buffers we want to translate. */ + for (i = 0; i < rctx->nvertex_buffer; i++) { + if (vb_translated[i]) { + struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[i]; + + vb_map[i] = pipe_buffer_map(pipe, vb->buffer, + PIPE_TRANSFER_READ, &vb_transfer[i]); + + tr->set_buffer(tr, i, vb_map[i], vb->stride, vb->max_index); + } + } + + /* Create and map the output buffer. */ + num_verts = rctx->vb_max_index + 1; + + out_buffer = pipe_buffer_create(&rctx->screen->screen, + PIPE_BIND_VERTEX_BUFFER, + key.output_stride * num_verts); + + out_map = pipe_buffer_map(pipe, out_buffer, PIPE_TRANSFER_WRITE, + &out_transfer); + + /* Translate. */ + tr->run(tr, 0, num_verts, 0, out_map); + + /* Unmap all buffers. */ + for (i = 0; i < rctx->nvertex_buffer; i++) { + if (vb_translated[i]) { + pipe_buffer_unmap(pipe, rctx->vertex_buffer[i].buffer, + vb_transfer[i]); + } + } + + pipe_buffer_unmap(pipe, out_buffer, out_transfer); + + /* Setup the new vertex buffer in the first free slot. */ + for (i = 0; i < PIPE_MAX_ATTRIBS; i++) { + struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[i]; + + if (!vb->buffer) { + pipe_resource_reference(&vb->buffer, out_buffer); + vb->buffer_offset = 0; + vb->max_index = num_verts - 1; + vb->stride = key.output_stride; + rctx->tran.vb_slot = i; + break; + } + } + + /* Save and replace vertex elements. */ + { + struct pipe_vertex_element new_velems[PIPE_MAX_ATTRIBS]; + + rctx->tran.saved_velems = rctx->vertex_elements; + + for (i = 0; i < ve->count; i++) { + if (vb_translated[ve->elements[i].vertex_buffer_index]) { + te = &key.element[tr_elem_index[i]]; + new_velems[i].instance_divisor = ve->elements[i].instance_divisor; + new_velems[i].src_format = te->output_format; + new_velems[i].src_offset = te->output_offset; + new_velems[i].vertex_buffer_index = rctx->tran.vb_slot; + } else { + memcpy(&new_velems[i], &ve->elements[i], + sizeof(struct pipe_vertex_element)); + } + } + + rctx->tran.new_velems = + pipe->create_vertex_elements_state(pipe, ve->count, new_velems); + pipe->bind_vertex_elements_state(pipe, rctx->tran.new_velems); + } + + pipe_resource_reference(&out_buffer, NULL); +} + +void r600_end_vertex_translate(struct r600_pipe_context *rctx) +{ + struct pipe_context *pipe = &rctx->context; + + /* Restore vertex elements. */ + pipe->bind_vertex_elements_state(pipe, rctx->tran.saved_velems); + pipe->delete_vertex_elements_state(pipe, rctx->tran.new_velems); + + /* Delete the now-unused VBO. */ + pipe_resource_reference(&rctx->vertex_buffer[rctx->tran.vb_slot].buffer, + NULL); +} + +void r600_translate_index_buffer(struct r600_pipe_context *r600, + struct pipe_resource **index_buffer, + unsigned *index_size, + unsigned *start, unsigned count) +{ + switch (*index_size) { + case 1: + util_shorten_ubyte_elts(&r600->context, index_buffer, 0, *start, count); + *index_size = 2; + *start = 0; + break; + + case 2: + if (*start % 2 != 0) { + util_rebuild_ushort_elts(&r600->context, index_buffer, 0, *start, count); + *start = 0; + } + break; + + case 4: + break; + } +} -- cgit v1.2.3 From 0a5666148beb766c376d58019137d0ce39aea531 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 21 Oct 2010 11:10:15 -0700 Subject: gallivm: Silence uninitialized variable warnings. Fixes these GCC warnings. gallivm/lp_bld_sample_aos.c: In function 'lp_build_sample_image_linear': gallivm/lp_bld_sample_aos.c:439: warning: 'r_ipart' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:438: warning: 't_ipart' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:438: warning: 't_fpart' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:439: warning: 'r_fpart' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:438: warning: 't_fpart_hi' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:438: warning: 't_fpart_lo' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:439: warning: 'r_fpart_hi' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:439: warning: 'r_fpart_lo' may be used uninitialized in this function --- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index d3e3b242af4..e824b787d0f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -435,8 +435,8 @@ lp_build_sample_image_linear(struct lp_build_sample_context *bld, LLVMValueRef i32_c8, i32_c128, i32_c255; LLVMValueRef width_vec, height_vec, depth_vec; LLVMValueRef s_ipart, s_fpart, s_fpart_lo, s_fpart_hi; - LLVMValueRef t_ipart, t_fpart, t_fpart_lo, t_fpart_hi; - LLVMValueRef r_ipart, r_fpart, r_fpart_lo, r_fpart_hi; + LLVMValueRef t_ipart = NULL, t_fpart = NULL, t_fpart_lo = NULL, t_fpart_hi = NULL; + LLVMValueRef r_ipart = NULL, r_fpart = NULL, r_fpart_lo = NULL, r_fpart_hi = NULL; LLVMValueRef x_stride, y_stride, z_stride; LLVMValueRef x_offset0, x_offset1; LLVMValueRef y_offset0, y_offset1; -- cgit v1.2.3 From fc59790b875f2db930f3189cb25d1f99d8c082fd Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 21 Oct 2010 11:21:03 -0700 Subject: gallivm: Silence uninitialized variable warnings. Fixes these GCC warnings. gallivm/lp_bld_sample_aos.c: In function 'lp_build_sample_image_nearest': gallivm/lp_bld_sample_aos.c:271: warning: 't_ipart' may be used uninitialized in this function gallivm/lp_bld_sample_aos.c:271: warning: 'r_ipart' may be used uninitialized in this function --- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index e824b787d0f..d6831a580b3 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -268,7 +268,7 @@ lp_build_sample_image_nearest(struct lp_build_sample_context *bld, LLVMTypeRef i32_vec_type, h16_vec_type, u8n_vec_type; LLVMValueRef i32_c8; LLVMValueRef width_vec, height_vec, depth_vec; - LLVMValueRef s_ipart, t_ipart, r_ipart; + LLVMValueRef s_ipart, t_ipart = NULL, r_ipart = NULL; LLVMValueRef x_stride; LLVMValueRef x_offset, offset; LLVMValueRef x_subcoord, y_subcoord, z_subcoord; -- cgit v1.2.3 From 50095ac87c9a57e2b87220401c2dbdb255cabb4b Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 21 Oct 2010 11:27:35 -0700 Subject: gallivm: Silence uninitialized variable warning. Fixes this GCC warning. gallivm/lp_bld_tgsi_aos.c: In function 'lp_build_tgsi_aos': gallivm/lp_bld_tgsi_aos.c:516: warning: 'dst0' may be used uninitialized in this function gallivm/lp_bld_tgsi_aos.c:516: note: 'dst0' was declared here --- src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c index d5f963be58d..c3c082b2b95 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_aos.c @@ -513,7 +513,7 @@ emit_instruction( { LLVMValueRef src0, src1, src2; LLVMValueRef tmp0, tmp1; - LLVMValueRef dst0; + LLVMValueRef dst0 = NULL; /* * Stores and write masks are handled in a general fashion after the long -- cgit v1.2.3 From 154d91cad907ba5643fb3e39717a8f7c5a76049a Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 20 Oct 2010 17:18:40 -0600 Subject: draw: fix typo in comment --- src/gallium/auxiliary/draw/draw_llvm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index d808c05ba0d..140e596f994 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -421,7 +421,7 @@ generate_fetch(LLVMBuilderRef builder, "instance_divisor"); } - /* limit index to min(inex, vb_max_index) */ + /* limit index to min(index, vb_max_index) */ cond = LLVMBuildICmp(builder, LLVMIntULE, index, vb_max_index, ""); index = LLVMBuildSelect(builder, cond, index, vb_max_index, ""); -- cgit v1.2.3 From adf35e80d3b3d37b97f0608a5a2f221dbd8c0d64 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:03:38 -0600 Subject: gallium: new CAP, state for primitive restart --- src/gallium/docs/source/context.rst | 9 +++++++++ src/gallium/include/pipe/p_defines.h | 1 + src/gallium/include/pipe/p_state.h | 6 ++++++ 3 files changed, 16 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/docs/source/context.rst b/src/gallium/docs/source/context.rst index 5342fc25dc1..e09a1304c4d 100644 --- a/src/gallium/docs/source/context.rst +++ b/src/gallium/docs/source/context.rst @@ -156,6 +156,15 @@ If there is an index buffer bound, and ``indexed`` field is true, all vertex indices will be looked up in the index buffer. ``min_index``, ``max_index``, and ``index_bias`` apply after index lookup. +When drawing indexed primitives, the primitive restart index can be +used to draw disjoint primitive strips. For example, several separate +line strips can be drawn by designating a special index value as the +restart index. The ``primitive_restart`` flag enables/disables this +feature. The ``restart_index`` field specifies the restart index value. + +When primitive restart is in use, array indexes are compared to the +restart index before adding the index_bias offset. + If a given vertex element has ``instance_divisor`` set to 0, it is said it contains per-vertex data and effective vertex attribute address needs to be recalculated for every index. diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index b6894c09e82..53f7b601ad5 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -452,6 +452,7 @@ enum pipe_cap { PIPE_CAP_BLEND_EQUATION_SEPARATE, PIPE_CAP_SM3, /*< Shader Model, supported */ PIPE_CAP_STREAM_OUTPUT, + PIPE_CAP_PRIMITIVE_RESTART, /** Maximum texture image units accessible from vertex and fragment shaders * combined */ PIPE_CAP_MAX_COMBINED_SAMPLERS, diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index 9a2b31da50d..fc6dba346da 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -457,6 +457,12 @@ struct pipe_draw_info int index_bias; /**< a bias to be added to each index */ unsigned min_index; /**< the min index */ unsigned max_index; /**< the max index */ + + /** + * Primitive restart enable/index (only applies to indexed drawing) + */ + boolean primitive_restart; + unsigned restart_index; }; -- cgit v1.2.3 From 0eaaceb218b2cfdb3fcfb420eca3220e74e53d4a Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:03:38 -0600 Subject: draw: implement primitive splitting for primitive restart --- src/gallium/auxiliary/draw/draw_pt.c | 86 +++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index f44bf2507c6..4078b2a07d0 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -287,6 +287,84 @@ draw_print_arrays(struct draw_context *draw, uint prim, int start, uint count) } +/** Helper code for below */ +#define PRIM_RESTART_LOOP(elements) \ + do { \ + for (i = start; i < end; i++) { \ + if (elements[i] == info->restart_index) { \ + if (cur_count > 0) { \ + /* draw elts up to prev pos */ \ + draw_pt_arrays(draw, prim, cur_start, cur_count); \ + } \ + /* begin new prim at next elt */ \ + cur_start = i + 1; \ + cur_count = 0; \ + } \ + else { \ + cur_count++; \ + } \ + } \ + if (cur_count > 0) { \ + draw_pt_arrays(draw, prim, cur_start, cur_count); \ + } \ + } while (0) + + +/** + * For drawing prims with primitive restart enabled. + * Scan for restart indexes and draw the runs of elements/vertices between + * the restarts. + */ +static void +draw_pt_arrays_restart(struct draw_context *draw, + const struct pipe_draw_info *info) +{ + const unsigned prim = info->mode; + const unsigned start = info->start; + const unsigned count = info->count; + const unsigned end = start + count; + unsigned i, cur_start, cur_count; + + assert(info->primitive_restart); + + if (draw->pt.user.elts) { + /* indexed prims (draw_elements) */ + cur_start = start; + cur_count = 0; + + switch (draw->pt.user.eltSize) { + case 1: + { + const ubyte *elt_ub = (const ubyte *) draw->pt.user.elts; + PRIM_RESTART_LOOP(elt_ub); + } + break; + case 2: + { + const ushort *elt_us = (const ushort *) draw->pt.user.elts; + PRIM_RESTART_LOOP(elt_us); + } + break; + case 4: + { + const uint *elt_ui = (const uint *) draw->pt.user.elts; + PRIM_RESTART_LOOP(elt_ui); + } + break; + default: + assert(0 && "bad eltSize in draw_arrays()"); + } + } + else { + /* Non-indexed prims (draw_arrays). + * Primitive restart should have been handled in the state tracker. + */ + draw_pt_arrays(draw, prim, start, count); + } +} + + + /** * Non-instanced drawing. * \sa draw_arrays_instanced @@ -395,6 +473,12 @@ draw_vbo(struct draw_context *draw, for (instance = 0; instance < info->instance_count; instance++) { draw->instance_id = instance + info->start_instance; - draw_pt_arrays(draw, info->mode, info->start, info->count); + + if (info->primitive_restart) { + draw_pt_arrays_restart(draw, info); + } + else { + draw_pt_arrays(draw, info->mode, info->start, info->count); + } } } -- cgit v1.2.3 From 27d3bab05538a6b4cb41dac8334136f824b0e673 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:03:38 -0600 Subject: softpipe: enable primitive restart --- src/gallium/drivers/softpipe/sp_screen.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 37557d11940..a2bfa1bd8d5 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -112,6 +112,8 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 1; case PIPE_CAP_STREAM_OUTPUT: return 1; + case PIPE_CAP_PRIMITIVE_RESTART: + return 1; case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: return 0; case PIPE_CAP_SHADER_STENCIL_EXPORT: -- cgit v1.2.3 From 6692ed6f03126625810d56102a11171928e054c7 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:03:38 -0600 Subject: llvmpipe: enable primitive restart --- src/gallium/drivers/llvmpipe/lp_screen.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 96633d93654..ad0ea75b3a3 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -158,6 +158,8 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT: case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER: return 0; + case PIPE_CAP_PRIMITIVE_RESTART: + return 1; case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: return 1; case PIPE_CAP_DEPTH_CLAMP: -- cgit v1.2.3 From e3298eaf52a9ab4eb7ec854a82a285dee4f87118 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:17:31 -0600 Subject: winsys/xlib: formatting fixes --- src/gallium/winsys/sw/xlib/xlib_sw_winsys.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c index b78f537c125..4ed32510895 100644 --- a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c +++ b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c @@ -85,9 +85,6 @@ struct xm_displaytarget struct xlib_sw_winsys { struct sw_winsys base; - - - Display *display; }; @@ -120,7 +117,8 @@ mesaHandleXError(Display *dpy, XErrorEvent *event) } -static char *alloc_shm(struct xm_displaytarget *buf, unsigned size) +static char * +alloc_shm(struct xm_displaytarget *buf, unsigned size) { XShmSegmentInfo *const shminfo = & buf->shminfo; @@ -231,6 +229,7 @@ xm_displaytarget_map(struct sw_winsys *ws, return xm_dt->mapped; } + static void xm_displaytarget_unmap(struct sw_winsys *ws, struct sw_displaytarget *dt) @@ -239,6 +238,7 @@ xm_displaytarget_unmap(struct sw_winsys *ws, xm_dt->mapped = NULL; } + static void xm_displaytarget_destroy(struct sw_winsys *ws, struct sw_displaytarget *dt) @@ -325,8 +325,7 @@ xlib_sw_display(struct xlib_drawable *xlib_drawable, XSetFunction( display, xm_dt->gc, GXcopy ); } - if (xm_dt->shm) - { + if (xm_dt->shm) { ximage = xm_dt->tempImage; ximage->data = xm_dt->data; @@ -356,6 +355,7 @@ xlib_sw_display(struct xlib_drawable *xlib_drawable, XFlush(xm_dt->display); } + /** * Display/copy the image in the surface into the X window specified * by the XMesaBuffer. @@ -382,7 +382,7 @@ xm_displaytarget_create(struct sw_winsys *winsys, unsigned nblocksy, size; xm_dt = CALLOC_STRUCT(xm_displaytarget); - if(!xm_dt) + if (!xm_dt) goto no_xm_dt; xm_dt->display = ((struct xlib_sw_winsys *)winsys)->display; @@ -401,9 +401,9 @@ xm_displaytarget_create(struct sw_winsys *winsys, } } - if(!xm_dt->data) { + if (!xm_dt->data) { xm_dt->data = align_malloc(size, alignment); - if(!xm_dt->data) + if (!xm_dt->data) goto no_data; } @@ -470,4 +470,3 @@ xlib_create_sw_winsys( Display *display ) return &ws->base; } - -- cgit v1.2.3 From 4d24f01cb38bbf5d7a47786a1586f8a77360d2d9 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:37:11 -0600 Subject: winsys/xlib: use Bool type for shm field --- src/gallium/winsys/sw/xlib/xlib_sw_winsys.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c index 4ed32510895..003fa628cc2 100644 --- a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c +++ b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c @@ -75,7 +75,7 @@ struct xm_displaytarget Drawable drawable; XShmSegmentInfo shminfo; - int shm; + Bool shm; /** Using shared memory images? */ }; @@ -165,7 +165,7 @@ alloc_shm_ximage(struct xm_displaytarget *xm_dt, &xm_dt->shminfo, width, height); if (xm_dt->tempImage == NULL) { - xm_dt->shm = 0; + xm_dt->shm = False; return; } @@ -182,12 +182,12 @@ alloc_shm_ximage(struct xm_displaytarget *xm_dt, mesaXErrorFlag = 0; XDestroyImage(xm_dt->tempImage); xm_dt->tempImage = NULL; - xm_dt->shm = 0; + xm_dt->shm = False; (void) XSetErrorHandler(old_handler); return; } - xm_dt->shm = 1; + xm_dt->shm = True; } @@ -397,7 +397,7 @@ xm_displaytarget_create(struct sw_winsys *winsys, if (!debug_get_option_xlib_no_shm()) { xm_dt->data = alloc_shm(xm_dt, size); if (xm_dt->data) { - xm_dt->shm = TRUE; + xm_dt->shm = True; } } -- cgit v1.2.3 From 3bc6fe371cf6a5f75ff11b840e289ff8084f5d7b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:49:32 -0600 Subject: winsys/xlib: fix up allocation/dealloction of XImage Fixes a crash upon exit when using remote display. --- src/gallium/winsys/sw/xlib/xlib_sw_winsys.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c index 003fa628cc2..00fc0b7525a 100644 --- a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c +++ b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c @@ -196,11 +196,14 @@ alloc_ximage(struct xm_displaytarget *xm_dt, struct xlib_drawable *xmb, unsigned width, unsigned height) { + /* try allocating a shared memory image first */ if (xm_dt->shm) { alloc_shm_ximage(xm_dt, xmb, width, height); - return; + if (xm_dt->tempImage) + return; /* success */ } + /* try regular (non-shared memory) image */ xm_dt->tempImage = XCreateImage(xm_dt->display, xmb->visual, xmb->depth, @@ -252,6 +255,10 @@ xm_displaytarget_destroy(struct sw_winsys *ws, xm_dt->shminfo.shmid = -1; xm_dt->shminfo.shmaddr = (char *) -1; + + xm_dt->data = NULL; + if (xm_dt->tempImage) + xm_dt->tempImage->data = NULL; } else { FREE(xm_dt->data); -- cgit v1.2.3 From aa86c7657cdedb4b045c54afe0927f52aa0cd6bb Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 Oct 2010 19:55:01 -0600 Subject: winsys/xlib: rename xm->xlib Move away from the old Mesa-oriented names. --- src/gallium/winsys/sw/xlib/xlib_sw_winsys.c | 294 ++++++++++++++-------------- 1 file changed, 147 insertions(+), 147 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c index 00fc0b7525a..3aef8daa423 100644 --- a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c +++ b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c @@ -54,7 +54,7 @@ DEBUG_GET_ONCE_BOOL_OPTION(xlib_no_shm, "XLIB_NO_SHM", FALSE) * Display target for Xlib winsys. * Low-level OS/window system memory buffer */ -struct xm_displaytarget +struct xlib_displaytarget { enum pipe_format format; unsigned width; @@ -91,10 +91,10 @@ struct xlib_sw_winsys /** Cast wrapper */ -static INLINE struct xm_displaytarget * -xm_displaytarget( struct sw_displaytarget *dt ) +static INLINE struct xlib_displaytarget * +xlib_displaytarget(struct sw_displaytarget *dt) { - return (struct xm_displaytarget *)dt; + return (struct xlib_displaytarget *) dt; } @@ -102,23 +102,23 @@ xm_displaytarget( struct sw_displaytarget *dt ) * X Shared Memory Image extension code */ -static volatile int mesaXErrorFlag = 0; +static volatile int XErrorFlag = 0; /** * Catches potential Xlib errors. */ static int -mesaHandleXError(Display *dpy, XErrorEvent *event) +handle_xerror(Display *dpy, XErrorEvent *event) { (void) dpy; (void) event; - mesaXErrorFlag = 1; + XErrorFlag = 1; return 0; } static char * -alloc_shm(struct xm_displaytarget *buf, unsigned size) +alloc_shm(struct xlib_displaytarget *buf, unsigned size) { XShmSegmentInfo *const shminfo = & buf->shminfo; @@ -142,10 +142,10 @@ alloc_shm(struct xm_displaytarget *buf, unsigned size) /** - * Allocate a shared memory XImage back buffer for the given XMesaBuffer. + * Allocate a shared memory XImage back buffer for the given display target. */ static void -alloc_shm_ximage(struct xm_displaytarget *xm_dt, +alloc_shm_ximage(struct xlib_displaytarget *xlib_dt, struct xlib_drawable *xmb, unsigned width, unsigned height) { @@ -157,54 +157,54 @@ alloc_shm_ximage(struct xm_displaytarget *xm_dt, */ int (*old_handler)(Display *, XErrorEvent *); - xm_dt->tempImage = XShmCreateImage(xm_dt->display, + xlib_dt->tempImage = XShmCreateImage(xlib_dt->display, xmb->visual, xmb->depth, ZPixmap, NULL, - &xm_dt->shminfo, + &xlib_dt->shminfo, width, height); - if (xm_dt->tempImage == NULL) { - xm_dt->shm = False; + if (xlib_dt->tempImage == NULL) { + xlib_dt->shm = False; return; } - mesaXErrorFlag = 0; - old_handler = XSetErrorHandler(mesaHandleXError); + XErrorFlag = 0; + old_handler = XSetErrorHandler(handle_xerror); /* This may trigger the X protocol error we're ready to catch: */ - XShmAttach(xm_dt->display, &xm_dt->shminfo); - XSync(xm_dt->display, False); + XShmAttach(xlib_dt->display, &xlib_dt->shminfo); + XSync(xlib_dt->display, False); - if (mesaXErrorFlag) { + if (XErrorFlag) { /* we are on a remote display, this error is normal, don't print it */ - XFlush(xm_dt->display); - mesaXErrorFlag = 0; - XDestroyImage(xm_dt->tempImage); - xm_dt->tempImage = NULL; - xm_dt->shm = False; + XFlush(xlib_dt->display); + XErrorFlag = 0; + XDestroyImage(xlib_dt->tempImage); + xlib_dt->tempImage = NULL; + xlib_dt->shm = False; (void) XSetErrorHandler(old_handler); return; } - xm_dt->shm = True; + xlib_dt->shm = True; } static void -alloc_ximage(struct xm_displaytarget *xm_dt, +alloc_ximage(struct xlib_displaytarget *xlib_dt, struct xlib_drawable *xmb, unsigned width, unsigned height) { /* try allocating a shared memory image first */ - if (xm_dt->shm) { - alloc_shm_ximage(xm_dt, xmb, width, height); - if (xm_dt->tempImage) + if (xlib_dt->shm) { + alloc_shm_ximage(xlib_dt, xmb, width, height); + if (xlib_dt->tempImage) return; /* success */ } /* try regular (non-shared memory) image */ - xm_dt->tempImage = XCreateImage(xm_dt->display, + xlib_dt->tempImage = XCreateImage(xlib_dt->display, xmb->visual, xmb->depth, ZPixmap, 0, @@ -213,9 +213,9 @@ alloc_ximage(struct xm_displaytarget *xm_dt, } static boolean -xm_is_displaytarget_format_supported( struct sw_winsys *ws, - unsigned tex_usage, - enum pipe_format format ) +xlib_is_displaytarget_format_supported(struct sw_winsys *ws, + unsigned tex_usage, + enum pipe_format format) { /* TODO: check visuals or other sensible thing here */ return TRUE; @@ -223,67 +223,67 @@ xm_is_displaytarget_format_supported( struct sw_winsys *ws, static void * -xm_displaytarget_map(struct sw_winsys *ws, - struct sw_displaytarget *dt, - unsigned flags) +xlib_displaytarget_map(struct sw_winsys *ws, + struct sw_displaytarget *dt, + unsigned flags) { - struct xm_displaytarget *xm_dt = xm_displaytarget(dt); - xm_dt->mapped = xm_dt->data; - return xm_dt->mapped; + struct xlib_displaytarget *xlib_dt = xlib_displaytarget(dt); + xlib_dt->mapped = xlib_dt->data; + return xlib_dt->mapped; } static void -xm_displaytarget_unmap(struct sw_winsys *ws, - struct sw_displaytarget *dt) +xlib_displaytarget_unmap(struct sw_winsys *ws, + struct sw_displaytarget *dt) { - struct xm_displaytarget *xm_dt = xm_displaytarget(dt); - xm_dt->mapped = NULL; + struct xlib_displaytarget *xlib_dt = xlib_displaytarget(dt); + xlib_dt->mapped = NULL; } static void -xm_displaytarget_destroy(struct sw_winsys *ws, - struct sw_displaytarget *dt) +xlib_displaytarget_destroy(struct sw_winsys *ws, + struct sw_displaytarget *dt) { - struct xm_displaytarget *xm_dt = xm_displaytarget(dt); + struct xlib_displaytarget *xlib_dt = xlib_displaytarget(dt); - if (xm_dt->data) { - if (xm_dt->shminfo.shmid >= 0) { - shmdt(xm_dt->shminfo.shmaddr); - shmctl(xm_dt->shminfo.shmid, IPC_RMID, 0); + if (xlib_dt->data) { + if (xlib_dt->shminfo.shmid >= 0) { + shmdt(xlib_dt->shminfo.shmaddr); + shmctl(xlib_dt->shminfo.shmid, IPC_RMID, 0); - xm_dt->shminfo.shmid = -1; - xm_dt->shminfo.shmaddr = (char *) -1; + xlib_dt->shminfo.shmid = -1; + xlib_dt->shminfo.shmaddr = (char *) -1; - xm_dt->data = NULL; - if (xm_dt->tempImage) - xm_dt->tempImage->data = NULL; + xlib_dt->data = NULL; + if (xlib_dt->tempImage) + xlib_dt->tempImage->data = NULL; } else { - FREE(xm_dt->data); - if (xm_dt->tempImage && xm_dt->tempImage->data == xm_dt->data) { - xm_dt->tempImage->data = NULL; + FREE(xlib_dt->data); + if (xlib_dt->tempImage && xlib_dt->tempImage->data == xlib_dt->data) { + xlib_dt->tempImage->data = NULL; } - xm_dt->data = NULL; + xlib_dt->data = NULL; } } - if (xm_dt->tempImage) { - XDestroyImage(xm_dt->tempImage); - xm_dt->tempImage = NULL; + if (xlib_dt->tempImage) { + XDestroyImage(xlib_dt->tempImage); + xlib_dt->tempImage = NULL; } - if (xm_dt->gc) - XFreeGC(xm_dt->display, xm_dt->gc); + if (xlib_dt->gc) + XFreeGC(xlib_dt->display, xlib_dt->gc); - FREE(xm_dt); + FREE(xlib_dt); } /** * Display/copy the image in the surface into the X window specified - * by the XMesaBuffer. + * by the display target. */ static void xlib_sw_display(struct xlib_drawable *xlib_drawable, @@ -291,8 +291,8 @@ xlib_sw_display(struct xlib_drawable *xlib_drawable, { static boolean no_swap = 0; static boolean firsttime = 1; - struct xm_displaytarget *xm_dt = xm_displaytarget(dt); - Display *display = xm_dt->display; + struct xlib_displaytarget *xlib_dt = xlib_displaytarget(dt); + Display *display = xlib_dt->display; XImage *ximage; if (firsttime) { @@ -303,74 +303,74 @@ xlib_sw_display(struct xlib_drawable *xlib_drawable, if (no_swap) return; - if (xm_dt->drawable != xlib_drawable->drawable) { - if (xm_dt->gc) { - XFreeGC( display, xm_dt->gc ); - xm_dt->gc = NULL; + if (xlib_dt->drawable != xlib_drawable->drawable) { + if (xlib_dt->gc) { + XFreeGC(display, xlib_dt->gc); + xlib_dt->gc = NULL; } - if (xm_dt->tempImage) { - XDestroyImage( xm_dt->tempImage ); - xm_dt->tempImage = NULL; + if (xlib_dt->tempImage) { + XDestroyImage(xlib_dt->tempImage); + xlib_dt->tempImage = NULL; } - xm_dt->drawable = xlib_drawable->drawable; + xlib_dt->drawable = xlib_drawable->drawable; } - if (xm_dt->tempImage == NULL) { - assert(util_format_get_blockwidth(xm_dt->format) == 1); - assert(util_format_get_blockheight(xm_dt->format) == 1); - alloc_ximage(xm_dt, xlib_drawable, - xm_dt->stride / util_format_get_blocksize(xm_dt->format), - xm_dt->height); - if (!xm_dt->tempImage) + if (xlib_dt->tempImage == NULL) { + assert(util_format_get_blockwidth(xlib_dt->format) == 1); + assert(util_format_get_blockheight(xlib_dt->format) == 1); + alloc_ximage(xlib_dt, xlib_drawable, + xlib_dt->stride / util_format_get_blocksize(xlib_dt->format), + xlib_dt->height); + if (!xlib_dt->tempImage) return; } - if (xm_dt->gc == NULL) { - xm_dt->gc = XCreateGC( display, xlib_drawable->drawable, 0, NULL ); - XSetFunction( display, xm_dt->gc, GXcopy ); + if (xlib_dt->gc == NULL) { + xlib_dt->gc = XCreateGC(display, xlib_drawable->drawable, 0, NULL); + XSetFunction(display, xlib_dt->gc, GXcopy); } - if (xm_dt->shm) { - ximage = xm_dt->tempImage; - ximage->data = xm_dt->data; + if (xlib_dt->shm) { + ximage = xlib_dt->tempImage; + ximage->data = xlib_dt->data; /* _debug_printf("XSHM\n"); */ - XShmPutImage(xm_dt->display, xlib_drawable->drawable, xm_dt->gc, - ximage, 0, 0, 0, 0, xm_dt->width, xm_dt->height, False); + XShmPutImage(xlib_dt->display, xlib_drawable->drawable, xlib_dt->gc, + ximage, 0, 0, 0, 0, xlib_dt->width, xlib_dt->height, False); } else { /* display image in Window */ - ximage = xm_dt->tempImage; - ximage->data = xm_dt->data; + ximage = xlib_dt->tempImage; + ximage->data = xlib_dt->data; /* check that the XImage has been previously initialized */ assert(ximage->format); assert(ximage->bitmap_unit); /* update XImage's fields */ - ximage->width = xm_dt->width; - ximage->height = xm_dt->height; - ximage->bytes_per_line = xm_dt->stride; + ximage->width = xlib_dt->width; + ximage->height = xlib_dt->height; + ximage->bytes_per_line = xlib_dt->stride; /* _debug_printf("XPUT\n"); */ - XPutImage(xm_dt->display, xlib_drawable->drawable, xm_dt->gc, - ximage, 0, 0, 0, 0, xm_dt->width, xm_dt->height); + XPutImage(xlib_dt->display, xlib_drawable->drawable, xlib_dt->gc, + ximage, 0, 0, 0, 0, xlib_dt->width, xlib_dt->height); } - XFlush(xm_dt->display); + XFlush(xlib_dt->display); } /** * Display/copy the image in the surface into the X window specified - * by the XMesaBuffer. + * by the display target. */ static void -xm_displaytarget_display(struct sw_winsys *ws, - struct sw_displaytarget *dt, - void *context_private) +xlib_displaytarget_display(struct sw_winsys *ws, + struct sw_displaytarget *dt, + void *context_private) { struct xlib_drawable *xlib_drawable = (struct xlib_drawable *)context_private; xlib_sw_display(xlib_drawable, dt); @@ -378,57 +378,57 @@ xm_displaytarget_display(struct sw_winsys *ws, static struct sw_displaytarget * -xm_displaytarget_create(struct sw_winsys *winsys, - unsigned tex_usage, - enum pipe_format format, - unsigned width, unsigned height, - unsigned alignment, - unsigned *stride) +xlib_displaytarget_create(struct sw_winsys *winsys, + unsigned tex_usage, + enum pipe_format format, + unsigned width, unsigned height, + unsigned alignment, + unsigned *stride) { - struct xm_displaytarget *xm_dt; + struct xlib_displaytarget *xlib_dt; unsigned nblocksy, size; - xm_dt = CALLOC_STRUCT(xm_displaytarget); - if (!xm_dt) - goto no_xm_dt; + xlib_dt = CALLOC_STRUCT(xlib_displaytarget); + if (!xlib_dt) + goto no_xlib_dt; - xm_dt->display = ((struct xlib_sw_winsys *)winsys)->display; - xm_dt->format = format; - xm_dt->width = width; - xm_dt->height = height; + xlib_dt->display = ((struct xlib_sw_winsys *)winsys)->display; + xlib_dt->format = format; + xlib_dt->width = width; + xlib_dt->height = height; nblocksy = util_format_get_nblocksy(format, height); - xm_dt->stride = align(util_format_get_stride(format, width), alignment); - size = xm_dt->stride * nblocksy; + xlib_dt->stride = align(util_format_get_stride(format, width), alignment); + size = xlib_dt->stride * nblocksy; if (!debug_get_option_xlib_no_shm()) { - xm_dt->data = alloc_shm(xm_dt, size); - if (xm_dt->data) { - xm_dt->shm = True; + xlib_dt->data = alloc_shm(xlib_dt, size); + if (xlib_dt->data) { + xlib_dt->shm = True; } } - if (!xm_dt->data) { - xm_dt->data = align_malloc(size, alignment); - if (!xm_dt->data) + if (!xlib_dt->data) { + xlib_dt->data = align_malloc(size, alignment); + if (!xlib_dt->data) goto no_data; } - *stride = xm_dt->stride; - return (struct sw_displaytarget *)xm_dt; + *stride = xlib_dt->stride; + return (struct sw_displaytarget *)xlib_dt; no_data: - FREE(xm_dt); -no_xm_dt: + FREE(xlib_dt); +no_xlib_dt: return NULL; } static struct sw_displaytarget * -xm_displaytarget_from_handle(struct sw_winsys *winsys, - const struct pipe_resource *templet, - struct winsys_handle *whandle, - unsigned *stride) +xlib_displaytarget_from_handle(struct sw_winsys *winsys, + const struct pipe_resource *templet, + struct winsys_handle *whandle, + unsigned *stride) { assert(0); return NULL; @@ -436,9 +436,9 @@ xm_displaytarget_from_handle(struct sw_winsys *winsys, static boolean -xm_displaytarget_get_handle(struct sw_winsys *winsys, - struct sw_displaytarget *dt, - struct winsys_handle *whandle) +xlib_displaytarget_get_handle(struct sw_winsys *winsys, + struct sw_displaytarget *dt, + struct winsys_handle *whandle) { assert(0); return FALSE; @@ -446,14 +446,14 @@ xm_displaytarget_get_handle(struct sw_winsys *winsys, static void -xm_destroy( struct sw_winsys *ws ) +xlib_destroy(struct sw_winsys *ws) { FREE(ws); } struct sw_winsys * -xlib_create_sw_winsys( Display *display ) +xlib_create_sw_winsys(Display *display) { struct xlib_sw_winsys *ws; @@ -462,18 +462,18 @@ xlib_create_sw_winsys( Display *display ) return NULL; ws->display = display; - ws->base.destroy = xm_destroy; + ws->base.destroy = xlib_destroy; - ws->base.is_displaytarget_format_supported = xm_is_displaytarget_format_supported; + ws->base.is_displaytarget_format_supported = xlib_is_displaytarget_format_supported; - ws->base.displaytarget_create = xm_displaytarget_create; - ws->base.displaytarget_from_handle = xm_displaytarget_from_handle; - ws->base.displaytarget_get_handle = xm_displaytarget_get_handle; - ws->base.displaytarget_map = xm_displaytarget_map; - ws->base.displaytarget_unmap = xm_displaytarget_unmap; - ws->base.displaytarget_destroy = xm_displaytarget_destroy; + ws->base.displaytarget_create = xlib_displaytarget_create; + ws->base.displaytarget_from_handle = xlib_displaytarget_from_handle; + ws->base.displaytarget_get_handle = xlib_displaytarget_get_handle; + ws->base.displaytarget_map = xlib_displaytarget_map; + ws->base.displaytarget_unmap = xlib_displaytarget_unmap; + ws->base.displaytarget_destroy = xlib_displaytarget_destroy; - ws->base.displaytarget_display = xm_displaytarget_display; + ws->base.displaytarget_display = xlib_displaytarget_display; return &ws->base; } -- cgit v1.2.3 From 713c8734f45b51b3758ecc95b96cf7b5aecacec8 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Fri, 22 Oct 2010 16:36:47 +0800 Subject: egl: Move attributes in _EGLImage to _EGLImageAttribs. The opaque nature of EGLImage implies that extensions almost always define their own attributes. Move attributes in _EGLImage to _EGLImageAttribs and add a helper function to parse attribute lists. --- src/egl/drivers/dri2/egl_dri2.c | 8 ++--- src/egl/main/eglimage.c | 35 +++++++++++----------- src/egl/main/eglimage.h | 21 +++++++++---- src/egl/main/egltypedefs.h | 2 ++ .../state_trackers/egl/common/egl_g3d_image.c | 4 +-- 5 files changed, 42 insertions(+), 28 deletions(-) (limited to 'src/gallium') diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index aad1c254b76..f2b532d92c8 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1599,7 +1599,7 @@ dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx, return EGL_NO_IMAGE_KHR; } - if (!_eglInitImage(&dri2_img->base, disp, attr_list)) { + if (!_eglInitImage(&dri2_img->base, disp)) { free(buffers_reply); free(geometry_reply); return EGL_NO_IMAGE_KHR; @@ -1642,7 +1642,7 @@ dri2_create_image_khr_renderbuffer(_EGLDisplay *disp, _EGLContext *ctx, return EGL_NO_IMAGE_KHR; } - if (!_eglInitImage(&dri2_img->base, disp, attr_list)) + if (!_eglInitImage(&dri2_img->base, disp)) return EGL_NO_IMAGE_KHR; dri2_img->dri_image = @@ -1722,7 +1722,7 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx, return NULL; } - if (!_eglInitImage(&dri2_img->base, disp, attr_list)) { + if (!_eglInitImage(&dri2_img->base, disp)) { free(dri2_img); return NULL; } @@ -1801,7 +1801,7 @@ dri2_create_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp, goto cleanup_img; } - if (!_eglInitImage(&dri2_img->base, disp, attr_list)) { + if (!_eglInitImage(&dri2_img->base, disp)) { err = EGL_BAD_PARAMETER; goto cleanup_img; } diff --git a/src/egl/main/eglimage.c b/src/egl/main/eglimage.c index 5732ef35ecd..e11a1836ff6 100644 --- a/src/egl/main/eglimage.c +++ b/src/egl/main/eglimage.c @@ -12,27 +12,38 @@ /** * Parse the list of image attributes and return the proper error code. */ -static EGLint -_eglParseImageAttribList(_EGLImage *img, const EGLint *attrib_list) +EGLint +_eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *dpy, + const EGLint *attrib_list) { EGLint i, err = EGL_SUCCESS; + (void) dpy; + + memset(attrs, 0, sizeof(attrs)); + attrs->ImagePreserved = EGL_FALSE; + attrs->GLTextureLevel = 0; + attrs->GLTextureZOffset = 0; + if (!attrib_list) - return EGL_SUCCESS; + return err; for (i = 0; attrib_list[i] != EGL_NONE; i++) { EGLint attr = attrib_list[i++]; EGLint val = attrib_list[i]; switch (attr) { + /* EGL_KHR_image_base */ case EGL_IMAGE_PRESERVED_KHR: - img->Preserved = val; + attrs->ImagePreserved = val; break; + + /* EGL_KHR_gl_image */ case EGL_GL_TEXTURE_LEVEL_KHR: - img->GLTextureLevel = val; + attrs->GLTextureLevel = val; break; case EGL_GL_TEXTURE_ZOFFSET_KHR: - img->GLTextureZOffset = val; + attrs->GLTextureZOffset = val; break; default: /* unknown attrs are ignored */ @@ -50,21 +61,11 @@ _eglParseImageAttribList(_EGLImage *img, const EGLint *attrib_list) EGLBoolean -_eglInitImage(_EGLImage *img, _EGLDisplay *dpy, const EGLint *attrib_list) +_eglInitImage(_EGLImage *img, _EGLDisplay *dpy) { - EGLint err; - memset(img, 0, sizeof(_EGLImage)); img->Resource.Display = dpy; - img->Preserved = EGL_FALSE; - img->GLTextureLevel = 0; - img->GLTextureZOffset = 0; - - err = _eglParseImageAttribList(img, attrib_list); - if (err != EGL_SUCCESS) - return _eglError(err, "eglCreateImageKHR"); - return EGL_TRUE; } diff --git a/src/egl/main/eglimage.h b/src/egl/main/eglimage.h index 2c0fb16d1d3..356395a210a 100644 --- a/src/egl/main/eglimage.h +++ b/src/egl/main/eglimage.h @@ -6,6 +6,16 @@ #include "egldisplay.h" +struct _egl_image_attribs +{ + /* EGL_KHR_image_base */ + EGLBoolean ImagePreserved; + + /* EGL_KHR_gl_image */ + EGLint GLTextureLevel; + EGLint GLTextureZOffset; +}; + /** * "Base" class for device driver images. */ @@ -13,15 +23,16 @@ struct _egl_image { /* An image is a display resource */ _EGLResource Resource; - - EGLBoolean Preserved; - EGLint GLTextureLevel; - EGLint GLTextureZOffset; }; +PUBLIC EGLint +_eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *dpy, + const EGLint *attrib_list); + + PUBLIC EGLBoolean -_eglInitImage(_EGLImage *img, _EGLDisplay *dpy, const EGLint *attrib_list); +_eglInitImage(_EGLImage *img, _EGLDisplay *dpy); extern _EGLImage * diff --git a/src/egl/main/egltypedefs.h b/src/egl/main/egltypedefs.h index b65f3b72ae5..20b67b28bc6 100644 --- a/src/egl/main/egltypedefs.h +++ b/src/egl/main/egltypedefs.h @@ -24,6 +24,8 @@ typedef struct _egl_extensions _EGLExtensions; typedef struct _egl_image _EGLImage; +typedef struct _egl_image_attribs _EGLImageAttribs; + typedef struct _egl_mode _EGLMode; typedef struct _egl_resource _EGLResource; diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_image.c b/src/gallium/state_trackers/egl/common/egl_g3d_image.c index 558638e72f0..dcabac6bb4e 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_image.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_image.c @@ -245,7 +245,7 @@ egl_g3d_create_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, return NULL; } - if (!_eglInitImage(&gimg->base, dpy, attribs)) { + if (!_eglInitImage(&gimg->base, dpy)) { FREE(gimg); return NULL; } @@ -316,7 +316,7 @@ egl_g3d_create_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, return NULL; } - if (!_eglInitImage(&gimg->base, dpy, attribs)) { + if (!_eglInitImage(&gimg->base, dpy)) { FREE(gimg); return NULL; } -- cgit v1.2.3 From 5664a983867038de48e71b65df89e0e254085af2 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Fri, 22 Oct 2010 17:09:40 +0800 Subject: egl: Parse image attributes with _eglParseImageAttribList. Avoid code duplications. --- src/egl/drivers/dri2/egl_dri2.c | 111 ++++++------------- src/egl/main/eglimage.c | 18 ++++ src/egl/main/eglimage.h | 7 ++ .../state_trackers/egl/common/egl_g3d_image.c | 118 +++++++-------------- 4 files changed, 92 insertions(+), 162 deletions(-) (limited to 'src/gallium') diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index f2b532d92c8..eb8996f7a75 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1659,56 +1659,28 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx, { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); struct dri2_egl_image *dri2_img; - EGLint width, height, format, name, stride, pitch, i, err; + EGLint format, name, pitch, err; + _EGLImageAttribs attrs; (void) ctx; name = (EGLint) buffer; - err = EGL_SUCCESS; - width = 0; - height = 0; - format = 0; - stride = 0; - - for (i = 0; attr_list[i] != EGL_NONE; i++) { - EGLint attr = attr_list[i++]; - EGLint val = attr_list[i]; - - switch (attr) { - case EGL_WIDTH: - width = val; - break; - case EGL_HEIGHT: - height = val; - break; - case EGL_DRM_BUFFER_FORMAT_MESA: - format = val; - break; - case EGL_DRM_BUFFER_STRIDE_MESA: - stride = val; - break; - default: - err = EGL_BAD_ATTRIBUTE; - break; - } - - if (err != EGL_SUCCESS) { - _eglLog(_EGL_WARNING, "bad image attribute 0x%04x", attr); - return NULL; - } - } + err = _eglParseImageAttribList(&attrs, disp, attr_list); + if (err != EGL_SUCCESS) + return NULL; - if (width <= 0 || height <= 0 || stride <= 0) { + if (attrs.Width <= 0 || attrs.Height <= 0 || + attrs.DRMBufferStrideMESA <= 0) { _eglError(EGL_BAD_PARAMETER, "bad width, height or stride"); return NULL; } - switch (format) { + switch (attrs.DRMBufferFormatMESA) { case EGL_DRM_BUFFER_FORMAT_ARGB32_MESA: format = __DRI_IMAGE_FORMAT_ARGB8888; - pitch = stride; + pitch = attrs.DRMBufferStrideMESA; break; default: _eglError(EGL_BAD_PARAMETER, @@ -1729,8 +1701,8 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx, dri2_img->dri_image = dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen, - width, - height, + attrs.Width, + attrs.Height, format, name, pitch, @@ -1784,8 +1756,9 @@ dri2_create_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp, { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); struct dri2_egl_image *dri2_img; - int width, height, format, i; - unsigned int use, dri_use, valid_mask; + _EGLImageAttribs attrs; + unsigned int dri_use, valid_mask; + int format; EGLint err = EGL_SUCCESS; (void) drv; @@ -1806,69 +1779,45 @@ dri2_create_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp, goto cleanup_img; } - width = 0; - height = 0; - format = 0; - use = 0; - for (i = 0; attr_list[i] != EGL_NONE; i++) { - EGLint attr = attr_list[i++]; - EGLint val = attr_list[i]; - - switch (attr) { - case EGL_WIDTH: - width = val; - break; - case EGL_HEIGHT: - height = val; - break; - case EGL_DRM_BUFFER_FORMAT_MESA: - format = val; - break; - case EGL_DRM_BUFFER_USE_MESA: - use = val; - break; - default: - err = EGL_BAD_ATTRIBUTE; - break; - } - - if (err != EGL_SUCCESS) { - _eglLog(_EGL_WARNING, "bad image attribute 0x%04x", attr); - goto cleanup_img; - } - } + err = _eglParseImageAttribList(&attrs, disp, attr_list); + if (err != EGL_SUCCESS) + goto cleanup_img; - if (width <= 0 || height <= 0) { - _eglLog(_EGL_WARNING, "bad width or height (%dx%d)", width, height); + if (attrs.Width <= 0 || attrs.Height <= 0) { + _eglLog(_EGL_WARNING, "bad width or height (%dx%d)", + attrs.Width, attrs.Height); goto cleanup_img; } - switch (format) { + switch (attrs.DRMBufferFormatMESA) { case EGL_DRM_BUFFER_FORMAT_ARGB32_MESA: format = __DRI_IMAGE_FORMAT_ARGB8888; break; default: - _eglLog(_EGL_WARNING, "bad image format value 0x%04x", format); + _eglLog(_EGL_WARNING, "bad image format value 0x%04x", + attrs.DRMBufferFormatMESA); goto cleanup_img; } valid_mask = EGL_DRM_BUFFER_USE_SCANOUT_MESA | EGL_DRM_BUFFER_USE_SHARE_MESA; - if (use & ~valid_mask) { - _eglLog(_EGL_WARNING, "bad image use bit 0x%04x", use & ~valid_mask); + if (attrs.DRMBufferUseMESA & ~valid_mask) { + _eglLog(_EGL_WARNING, "bad image use bit 0x%04x", + attrs.DRMBufferUseMESA & ~valid_mask); goto cleanup_img; } dri_use = 0; - if (use & EGL_DRM_BUFFER_USE_SHARE_MESA) + if (attrs.DRMBufferUseMESA & EGL_DRM_BUFFER_USE_SHARE_MESA) dri_use |= __DRI_IMAGE_USE_SHARE; - if (use & EGL_DRM_BUFFER_USE_SCANOUT_MESA) + if (attrs.DRMBufferUseMESA & EGL_DRM_BUFFER_USE_SCANOUT_MESA) dri_use |= __DRI_IMAGE_USE_SCANOUT; dri2_img->dri_image = dri2_dpy->image->createImage(dri2_dpy->dri_screen, - width, height, format, dri_use, dri2_img); + attrs.Width, attrs.Height, + format, dri_use, dri2_img); if (dri2_img->dri_image == NULL) { err = EGL_BAD_ALLOC; goto cleanup_img; diff --git a/src/egl/main/eglimage.c b/src/egl/main/eglimage.c index e11a1836ff6..8244ef3b518 100644 --- a/src/egl/main/eglimage.c +++ b/src/egl/main/eglimage.c @@ -45,6 +45,24 @@ _eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *dpy, case EGL_GL_TEXTURE_ZOFFSET_KHR: attrs->GLTextureZOffset = val; break; + + /* EGL_MESA_drm_image */ + case EGL_WIDTH: + attrs->Width = val; + break; + case EGL_HEIGHT: + attrs->Height = val; + break; + case EGL_DRM_BUFFER_FORMAT_MESA: + attrs->DRMBufferFormatMESA = val; + break; + case EGL_DRM_BUFFER_USE_MESA: + attrs->DRMBufferUseMESA = val; + break; + case EGL_DRM_BUFFER_STRIDE_MESA: + attrs->DRMBufferStrideMESA = val; + break; + default: /* unknown attrs are ignored */ break; diff --git a/src/egl/main/eglimage.h b/src/egl/main/eglimage.h index 356395a210a..e457bf4ef69 100644 --- a/src/egl/main/eglimage.h +++ b/src/egl/main/eglimage.h @@ -14,6 +14,13 @@ struct _egl_image_attribs /* EGL_KHR_gl_image */ EGLint GLTextureLevel; EGLint GLTextureZOffset; + + /* EGL_MESA_drm_image */ + EGLint Width; + EGLint Height; + EGLint DRMBufferFormatMESA; + EGLint DRMBufferUseMESA; + EGLint DRMBufferStrideMESA; }; /** diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_image.c b/src/gallium/state_trackers/egl/common/egl_g3d_image.c index dcabac6bb4e..be9c88e5e47 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_image.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_image.c @@ -74,62 +74,40 @@ egl_g3d_reference_native_pixmap(_EGLDisplay *dpy, EGLNativePixmapType pix) #ifdef EGL_MESA_drm_image static struct pipe_resource * -egl_g3d_create_drm_buffer(_EGLDisplay *dpy, const EGLint *attribs) +egl_g3d_create_drm_buffer(_EGLDisplay *dpy, _EGLImage *img, + const EGLint *attribs) { struct egl_g3d_display *gdpy = egl_g3d_display(dpy); struct pipe_screen *screen = gdpy->native->screen; struct pipe_resource templ; - EGLint width = 0, height = 0, format = 0, use = 0; - EGLint valid_use; - EGLint i, err = EGL_SUCCESS; - - for (i = 0; attribs[i] != EGL_NONE; i++) { - EGLint attr = attribs[i++]; - EGLint val = attribs[i]; - - switch (attr) { - case EGL_WIDTH: - width = val; - break; - case EGL_HEIGHT: - height = val; - break; - case EGL_DRM_BUFFER_FORMAT_MESA: - format = val; - break; - case EGL_DRM_BUFFER_USE_MESA: - use = val; - break; - default: - err = EGL_BAD_ATTRIBUTE; - break; - } + _EGLImageAttribs attrs; + EGLint format, valid_use; - if (err != EGL_SUCCESS) { - _eglLog(_EGL_DEBUG, "bad image attribute 0x%04x", attr); - return NULL; - } - } + if (_eglParseImageAttribList(&attrs, dpy, attribs) != EGL_SUCCESS) + return NULL; - if (width <= 0 || height <= 0) { - _eglLog(_EGL_DEBUG, "bad width or height (%dx%d)", width, height); + if (attrs.Width <= 0 || attrs.Height <= 0) { + _eglLog(_EGL_DEBUG, "bad width or height (%dx%d)", + attrs.Width, attrs.Height); return NULL; } - switch (format) { + switch (attrs.DRMBufferFormatMESA) { case EGL_DRM_BUFFER_FORMAT_ARGB32_MESA: format = PIPE_FORMAT_B8G8R8A8_UNORM; break; default: - _eglLog(_EGL_DEBUG, "bad image format value 0x%04x", format); + _eglLog(_EGL_DEBUG, "bad image format value 0x%04x", + attrs.DRMBufferFormatMESA); return NULL; break; } valid_use = EGL_DRM_BUFFER_USE_SCANOUT_MESA | EGL_DRM_BUFFER_USE_SHARE_MESA; - if (use & ~valid_use) { - _eglLog(_EGL_DEBUG, "bad image use bit 0x%04x", use); + if (attrs.DRMBufferUseMESA & ~valid_use) { + _eglLog(_EGL_DEBUG, "bad image use bit 0x%04x", + attrs.DRMBufferUseMESA); return NULL; } @@ -137,18 +115,18 @@ egl_g3d_create_drm_buffer(_EGLDisplay *dpy, const EGLint *attribs) templ.target = PIPE_TEXTURE_2D; templ.format = format; templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW; - templ.width0 = width; - templ.height0 = height; + templ.width0 = attrs.Width; + templ.height0 = attrs.Height; templ.depth0 = 1; /* * XXX fix apps (e.g. wayland) and pipe drivers (e.g. i915) and remove the * size check */ - if ((use & EGL_DRM_BUFFER_USE_SCANOUT_MESA) && - width >= 640 && height >= 480) + if ((attrs.DRMBufferUseMESA & EGL_DRM_BUFFER_USE_SCANOUT_MESA) && + attrs.Width >= 640 && attrs.Height >= 480) templ.bind |= PIPE_BIND_SCANOUT; - if (use & EGL_DRM_BUFFER_USE_SHARE_MESA) + if (attrs.DRMBufferUseMESA & EGL_DRM_BUFFER_USE_SHARE_MESA) templ.bind |= PIPE_BIND_SHARED; return screen->resource_create(screen, &templ); @@ -156,59 +134,36 @@ egl_g3d_create_drm_buffer(_EGLDisplay *dpy, const EGLint *attribs) static struct pipe_resource * egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint name, - const EGLint *attribs) + _EGLImage *img, const EGLint *attribs) { struct egl_g3d_display *gdpy = egl_g3d_display(dpy); struct pipe_screen *screen = gdpy->native->screen; struct pipe_resource templ; struct winsys_handle wsh; - EGLint width = 0, height = 0, format = 0, stride = 0; - EGLint i, err = EGL_SUCCESS; + _EGLImageAttribs attrs; + EGLint format; /* winsys_handle is in theory platform-specific */ if (dpy->Platform != _EGL_PLATFORM_DRM) return NULL; - for (i = 0; attribs[i] != EGL_NONE; i++) { - EGLint attr = attribs[i++]; - EGLint val = attribs[i]; - - switch (attr) { - case EGL_WIDTH: - width = val; - break; - case EGL_HEIGHT: - height = val; - break; - case EGL_DRM_BUFFER_FORMAT_MESA: - format = val; - break; - case EGL_DRM_BUFFER_STRIDE_MESA: - stride = val; - break; - default: - err = EGL_BAD_ATTRIBUTE; - break; - } - - if (err != EGL_SUCCESS) { - _eglLog(_EGL_DEBUG, "bad image attribute 0x%04x", attr); - return NULL; - } - } + if (_eglParseImageAttribList(&attrs, dpy, attribs) != EGL_SUCCESS) + return NULL; - if (width <= 0 || height <= 0 || stride <= 0) { + if (attrs.Width <= 0 || attrs.Height <= 0 || + attrs.DRMBufferStrideMESA <= 0) { _eglLog(_EGL_DEBUG, "bad width, height, or stride (%dx%dx%d)", - width, height, stride); + attrs.Width, attrs.Height, attrs.DRMBufferStrideMESA); return NULL; } - switch (format) { + switch (attrs.DRMBufferFormatMESA) { case EGL_DRM_BUFFER_FORMAT_ARGB32_MESA: format = PIPE_FORMAT_B8G8R8A8_UNORM; break; default: - _eglLog(_EGL_DEBUG, "bad image format value 0x%04x", format); + _eglLog(_EGL_DEBUG, "bad image format value 0x%04x", + attrs.DRMBufferFormatMESA); return NULL; break; } @@ -217,13 +172,13 @@ egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint name, templ.target = PIPE_TEXTURE_2D; templ.format = format; templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW; - templ.width0 = width; - templ.height0 = height; + templ.width0 = attrs.Width; + templ.height0 = attrs.Height; templ.depth0 = 1; memset(&wsh, 0, sizeof(wsh)); wsh.handle = (unsigned) name; - wsh.stride = stride; + wsh.stride = attrs.DRMBufferStrideMESA; return screen->resource_from_handle(screen, &templ, &wsh); } @@ -257,7 +212,8 @@ egl_g3d_create_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, break; #ifdef EGL_MESA_drm_image case EGL_DRM_BUFFER_MESA: - ptex = egl_g3d_reference_drm_buffer(dpy, (EGLint) buffer, attribs); + ptex = egl_g3d_reference_drm_buffer(dpy, + (EGLint) buffer, &gimg->base, attribs); break; #endif default: @@ -322,7 +278,7 @@ egl_g3d_create_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, } #ifdef EGL_MESA_drm_image - ptex = egl_g3d_create_drm_buffer(dpy, attribs); + ptex = egl_g3d_create_drm_buffer(dpy, &gimg->base, attribs); #else ptex = NULL; #endif -- cgit v1.2.3 From 67f6a4a8c46fa7cf0b337f3e937b4048a9fceb97 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 22 Oct 2010 08:58:35 -0600 Subject: galahad: silence warnings --- src/gallium/drivers/galahad/glhd_context.c | 4 ++-- src/gallium/drivers/galahad/glhd_screen.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/galahad/glhd_context.c b/src/gallium/drivers/galahad/glhd_context.c index ff6d2aa00ab..50f66079c2a 100644 --- a/src/gallium/drivers/galahad/glhd_context.c +++ b/src/gallium/drivers/galahad/glhd_context.c @@ -641,7 +641,7 @@ galahad_set_index_buffer(struct pipe_context *_pipe, break; default: glhd_warn("index buffer %p has unrecognized index size %d", - _ib->buffer, _ib->index_size); + (void *) _ib->buffer, _ib->index_size); break; } } @@ -1013,7 +1013,7 @@ galahad_context_create(struct pipe_screen *_screen, struct pipe_context *pipe) glhd_pipe->pipe = pipe; - glhd_warn("Created context %p", glhd_pipe); + glhd_warn("Created context %p", (void *) glhd_pipe); return &glhd_pipe->base; } diff --git a/src/gallium/drivers/galahad/glhd_screen.c b/src/gallium/drivers/galahad/glhd_screen.c index 288941b1066..b6cc41d908b 100644 --- a/src/gallium/drivers/galahad/glhd_screen.c +++ b/src/gallium/drivers/galahad/glhd_screen.c @@ -370,7 +370,7 @@ galahad_screen_create(struct pipe_screen *screen) glhd_screen->screen = screen; - glhd_warn("Created screen %p", glhd_screen); + glhd_warn("Created screen %p", (void *) glhd_screen); return &glhd_screen->base; } -- cgit v1.2.3 From 1d96ad67bc7927eb314d497e30cfd4eb3cfbb9ea Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Fri, 22 Oct 2010 19:45:05 +0200 Subject: r300g: do not print get_param errors in non-debug build --- src/gallium/drivers/r300/r300_screen.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index b448924f85e..963fa8fcd08 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -154,8 +154,8 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER: return 0; default: - fprintf(stderr, "r300: Implementation error: Bad param %d\n", - param); + debug_printf("r300: Warning: Unknown CAP %d in get_param.\n", + param); return 0; } } @@ -265,8 +265,8 @@ static float r300_get_paramf(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_MAX_TEXTURE_LOD_BIAS: return 16.0f; default: - fprintf(stderr, "r300: Implementation error: Bad paramf %d\n", - param); + debug_printf("r300: Warning: Unknown CAP %d in get_paramf.\n", + param); return 0.0f; } } -- cgit v1.2.3 From 469907d59738ad32c7a3b95072897432f1e81a0f Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Fri, 22 Oct 2010 20:33:25 +0200 Subject: r300g: say no to PIPE_CAP_STREAM_OUTPUT and PIPE_CAP_PRIMITIVE_RESTART --- src/gallium/drivers/r300/r300_screen.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index 963fa8fcd08..d445df408dd 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -125,6 +125,8 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_DEPTH_CLAMP: /* XXX implemented, but breaks Regnum Online */ case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: case PIPE_CAP_SHADER_STENCIL_EXPORT: + case PIPE_CAP_STREAM_OUTPUT: + case PIPE_CAP_PRIMITIVE_RESTART: return 0; /* Texturing. */ -- cgit v1.2.3 From 39c742fe2a25e925a2c4c42b1e654b72ea319b28 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sat, 23 Oct 2010 07:45:59 +1000 Subject: r600g: not fatal if we can't get tiling info from kernel --- src/gallium/winsys/r600/drm/r600_drm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/winsys/r600/drm/r600_drm.c b/src/gallium/winsys/r600/drm/r600_drm.c index c9de95ffc02..60c2f51fac0 100644 --- a/src/gallium/winsys/r600/drm/r600_drm.c +++ b/src/gallium/winsys/r600/drm/r600_drm.c @@ -65,7 +65,7 @@ static int radeon_drm_get_tiling(struct radeon *radeon) sizeof(struct drm_radeon_info)); if (r) - return r; + return 0; switch ((tiling_config & 0xe) >> 1) { case 0: -- cgit v1.2.3 From 8a6bdf3979c2dda0efc6771308bf9e5c32bbdab4 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 23 Oct 2010 00:47:22 +0800 Subject: egl: Minor changes to the _EGLConfig interface. Mainly to rename _eglAddConfig to _eglLinkConfig, along with a few clean ups. --- src/egl/drivers/dri2/egl_dri2.c | 2 +- src/egl/drivers/glx/egl_glx.c | 2 +- src/egl/main/eglconfig.c | 34 ++++++++++++++++--------- src/egl/main/eglconfig.h | 27 +++++--------------- src/gallium/state_trackers/egl/common/egl_g3d.c | 2 +- 5 files changed, 32 insertions(+), 35 deletions(-) (limited to 'src/gallium') diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index eb8996f7a75..75aa29f55b9 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -272,7 +272,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id, if (conf != NULL) { memcpy(&conf->base, &base, sizeof base); conf->dri_config = dri_config; - _eglAddConfig(disp, &conf->base); + _eglLinkConfig(&conf->base); } return conf; diff --git a/src/egl/drivers/glx/egl_glx.c b/src/egl/drivers/glx/egl_glx.c index 9bebc61de9c..256de57ed87 100644 --- a/src/egl/drivers/glx/egl_glx.c +++ b/src/egl/drivers/glx/egl_glx.c @@ -452,7 +452,7 @@ create_configs(_EGLDisplay *dpy, struct GLX_egl_display *GLX_dpy, memcpy(GLX_conf, &template, sizeof(template)); GLX_conf->index = i; - _eglAddConfig(dpy, &GLX_conf->Base); + _eglLinkConfig(&GLX_conf->Base); id++; } } diff --git a/src/egl/main/eglconfig.c b/src/egl/main/eglconfig.c index 4d313a9bb5b..fec94fb20cd 100644 --- a/src/egl/main/eglconfig.c +++ b/src/egl/main/eglconfig.c @@ -40,16 +40,18 @@ _eglInitConfig(_EGLConfig *conf, _EGLDisplay *dpy, EGLint id) /** - * Link a config to a display and return the handle of the link. + * Link a config to its display and return the handle of the link. * The handle can be passed to client directly. * * Note that we just save the ptr to the config (we don't copy the config). */ -EGLConfig -_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf) +PUBLIC EGLConfig +_eglLinkConfig(_EGLConfig *conf) { + _EGLDisplay *dpy = conf->Display; + /* sanity check */ - assert(conf->ConfigID > 0); + assert(dpy && conf->ConfigID > 0); if (!dpy->Configs) { dpy->Configs = _eglCreateArray("Config", 16); @@ -57,23 +59,29 @@ _eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf) return (EGLConfig) NULL; } - conf->Display = dpy; _eglAppendArray(dpy->Configs, (void *) conf); return (EGLConfig) conf; } -EGLBoolean -_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy) +/** + * Lookup a handle to find the linked config. + * Return NULL if the handle has no corresponding linked config. + */ +_EGLConfig * +_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy) { _EGLConfig *conf; + if (!dpy) + return NULL; + conf = (_EGLConfig *) _eglFindArray(dpy->Configs, (void *) config); if (conf) assert(conf->Display == dpy); - return (conf != NULL); + return conf; } @@ -464,10 +472,13 @@ _eglIsConfigAttribValid(_EGLConfig *conf, EGLint attr) * Return EGL_FALSE if any of the attribute is invalid. */ EGLBoolean -_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list) +_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy, + const EGLint *attrib_list) { EGLint attr, val, i; + _eglInitConfig(conf, dpy, EGL_DONT_CARE); + /* reset to default values */ for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) { attr = _eglValidationTable[i].attr; @@ -494,7 +505,7 @@ _eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list) return EGL_FALSE; /* ignore other attributes when EGL_CONFIG_ID is given */ - if (conf->ConfigID > 0) { + if (conf->ConfigID != EGL_DONT_CARE) { for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) { attr = _eglValidationTable[i].attr; if (attr != EGL_CONFIG_ID) @@ -683,8 +694,7 @@ _eglChooseConfig(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attrib_list, if (!num_configs) return _eglError(EGL_BAD_PARAMETER, "eglChooseConfigs"); - _eglInitConfig(&criteria, disp, 0); - if (!_eglParseConfigAttribList(&criteria, attrib_list)) + if (!_eglParseConfigAttribList(&criteria, disp, attrib_list)) return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig"); configList = (_EGLConfig **) _eglFilterArray(disp->Configs, &count, diff --git a/src/egl/main/eglconfig.h b/src/egl/main/eglconfig.h index 892815fa631..3457670bfa5 100644 --- a/src/egl/main/eglconfig.h +++ b/src/egl/main/eglconfig.h @@ -136,34 +136,20 @@ _eglInitConfig(_EGLConfig *config, _EGLDisplay *dpy, EGLint id); PUBLIC EGLConfig -_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf); +_eglLinkConfig(_EGLConfig *conf); -extern EGLBoolean -_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy); - - -/** - * Lookup a handle to find the linked config. - * Return NULL if the handle has no corresponding linked config. - */ -static INLINE _EGLConfig * -_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy) -{ - _EGLConfig *conf = (_EGLConfig *) config; - if (!dpy || !_eglCheckConfigHandle(config, dpy)) - conf = NULL; - return conf; -} +extern _EGLConfig * +_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy); /** - * Return the handle of a linked config, or NULL. + * Return the handle of a linked config. */ static INLINE EGLConfig _eglGetConfigHandle(_EGLConfig *conf) { - return (EGLConfig) ((conf && conf->Display) ? conf : NULL); + return (EGLConfig) conf; } @@ -176,7 +162,8 @@ _eglMatchConfig(const _EGLConfig *conf, const _EGLConfig *criteria); PUBLIC EGLBoolean -_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list); +_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy, + const EGLint *attrib_list); PUBLIC EGLint diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c b/src/gallium/state_trackers/egl/common/egl_g3d.c index aaa2ff6bb2f..8999b86e9b9 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c @@ -373,7 +373,7 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id) break; } - _eglAddConfig(dpy, &gconf->base); + _eglLinkConfig(&gconf->base); id++; } } -- cgit v1.2.3 From 37213ceacc2d7b309de7641da501282f8f24c8c2 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 23 Oct 2010 02:11:21 +0800 Subject: egl: Minor changes to the _EGLScreen interface. Make _eglInitScreen take a display and rename _eglAddScreen to _eglLinkScreen. Remove unused functions. --- src/egl/main/eglscreen.c | 101 ++++++++---------------- src/egl/main/eglscreen.h | 34 ++++---- src/gallium/state_trackers/egl/common/egl_g3d.c | 4 +- 3 files changed, 49 insertions(+), 90 deletions(-) (limited to 'src/gallium') diff --git a/src/egl/main/eglscreen.c b/src/egl/main/eglscreen.c index 2ae403494e2..0bbead84769 100644 --- a/src/egl/main/eglscreen.c +++ b/src/egl/main/eglscreen.c @@ -53,16 +53,42 @@ _eglAllocScreenHandle(void) * Initialize an _EGLScreen object to default values. */ void -_eglInitScreen(_EGLScreen *screen) +_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy) { memset(screen, 0, sizeof(_EGLScreen)); + screen->Display = dpy; screen->StepX = 1; screen->StepY = 1; } /** - * Given a public screen handle, return the internal _EGLScreen object. + * Link a screen to its display and return the handle of the link. + * The handle can be passed to client directly. + */ +EGLScreenMESA +_eglLinkScreen(_EGLScreen *screen) +{ + _EGLDisplay *display; + + assert(screen && screen->Display); + display = screen->Display; + + if (!display->Screens) { + display->Screens = _eglCreateArray("Screen", 4); + if (!display->Screens) + return (EGLScreenMESA) 0; + } + screen->Handle = _eglAllocScreenHandle(); + _eglAppendArray(display->Screens, (void *) screen); + + return screen->Handle; +} + + +/** + * Lookup a handle to find the linked config. + * Return NULL if the handle has no corresponding linked config. */ _EGLScreen * _eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *display) @@ -74,39 +100,21 @@ _eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *display) for (i = 0; i < display->Screens->Size; i++) { _EGLScreen *scr = (_EGLScreen *) display->Screens->Elements[i]; - if (scr->Handle == screen) + if (scr->Handle == screen) { + assert(scr->Display == display); return scr; + } } return NULL; } -/** - * Add the given _EGLScreen to the display's list of screens. - */ -void -_eglAddScreen(_EGLDisplay *display, _EGLScreen *screen) -{ - assert(display); - assert(screen); - - if (!display->Screens) { - display->Screens = _eglCreateArray("Screen", 4); - if (!display->Screens) - return; - } - screen->Handle = _eglAllocScreenHandle(); - _eglAppendArray(display->Screens, (void *) screen); -} - - - static EGLBoolean _eglFlattenScreen(void *elem, void *buffer) { _EGLScreen *scr = (_EGLScreen *) elem; EGLScreenMESA *handle = (EGLScreenMESA *) buffer; - *handle = scr->Handle; + *handle = _eglGetScreenHandle(scr); return EGL_TRUE; } @@ -122,22 +130,6 @@ _eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *display, EGLScreenMESA *screens } -/** - * Set a screen's current display mode. - * Note: mode = EGL_NO_MODE is valid (turns off the screen) - * - * This is just a placeholder function; drivers will always override - * this with code that _really_ sets the mode. - */ -EGLBoolean -_eglScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, - _EGLMode *m) -{ - scrn->CurrentMode = m; - return EGL_TRUE; -} - - /** * Set a screen's surface origin. */ @@ -198,33 +190,4 @@ _eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, } -/** - * Delete the modes associated with given screen. - */ -void -_eglDestroyScreenModes(_EGLScreen *scrn) -{ - EGLint i; - for (i = 0; i < scrn->NumModes; i++) { - if (scrn->Modes[i].Name) - free((char *) scrn->Modes[i].Name); /* cast away const */ - } - if (scrn->Modes) - free(scrn->Modes); - scrn->Modes = NULL; - scrn->NumModes = 0; -} - - -/** - * Default fallback routine - drivers should usually override this. - */ -void -_eglDestroyScreen(_EGLScreen *scrn) -{ - _eglDestroyScreenModes(scrn); - free(scrn); -} - - #endif /* EGL_MESA_screen_surface */ diff --git a/src/egl/main/eglscreen.h b/src/egl/main/eglscreen.h index e564793e511..44fe20da3be 100644 --- a/src/egl/main/eglscreen.h +++ b/src/egl/main/eglscreen.h @@ -19,6 +19,8 @@ */ struct _egl_screen { + _EGLDisplay *Display; + EGLScreenMESA Handle; /* The public/opaque handle which names this object */ _EGLMode *CurrentMode; @@ -33,33 +35,35 @@ struct _egl_screen PUBLIC void -_eglInitScreen(_EGLScreen *screen); +_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy); + + +PUBLIC EGLScreenMESA +_eglLinkScreen(_EGLScreen *screen); extern _EGLScreen * _eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *dpy); -PUBLIC void -_eglAddScreen(_EGLDisplay *display, _EGLScreen *screen); +/** + * Return the handle of a linked screen. + */ +static INLINE EGLScreenMESA +_eglGetScreenHandle(_EGLScreen *screen) +{ + return (screen) ? screen->Handle : (EGLScreenMESA) 0; +} extern EGLBoolean _eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens); -extern EGLBoolean -_eglScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLMode *m); - - extern EGLBoolean _eglScreenPositionMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint x, EGLint y); -extern EGLBoolean -_eglQueryDisplayMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLint attribute, EGLint *value); - - extern EGLBoolean _eglQueryScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLSurface **surface); @@ -73,14 +77,6 @@ extern EGLBoolean _eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint attribute, EGLint *value); -extern void -_eglDestroyScreenModes(_EGLScreen *scrn); - - -PUBLIC void -_eglDestroyScreen(_EGLScreen *scrn); - - #endif /* EGL_MESA_screen_surface */ diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c b/src/gallium/state_trackers/egl/common/egl_g3d.c index 8999b86e9b9..772c65daf50 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c @@ -126,7 +126,7 @@ egl_g3d_add_screens(_EGLDriver *drv, _EGLDisplay *dpy) continue; } - _eglInitScreen(&gscr->base); + _eglInitScreen(&gscr->base, dpy); for (j = 0; j < num_modes; j++) { const struct native_mode *nmode = native_modes[j]; @@ -143,7 +143,7 @@ egl_g3d_add_screens(_EGLDriver *drv, _EGLDisplay *dpy) gscr->native = nconn; gscr->native_modes = native_modes; - _eglAddScreen(dpy, &gscr->base); + _eglLinkScreen(&gscr->base); } FREE(native_connectors); -- cgit v1.2.3 From e32ac5b8a963202dcdfb91354f77979765083000 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 23 Oct 2010 02:52:14 +0800 Subject: egl: Fix _eglModeLookup. Internally a mode belongs to a screen. But functions like eglGetModeAttribMESA treat a mode as a display resource: a mode can be looked up without a screen. Considering how KMS works, it is better to stick to the current implementation. To properly support looking up a mode without a screen, this commit assigns each mode (of all screens) a unique ID. --- src/egl/main/eglmode.c | 58 ++++++------------------- src/egl/main/eglmode.h | 5 --- src/egl/main/eglscreen.c | 17 +++++++- src/egl/main/eglscreen.h | 5 ++- src/gallium/state_trackers/egl/common/egl_g3d.c | 22 +++++----- 5 files changed, 43 insertions(+), 64 deletions(-) (limited to 'src/gallium') diff --git a/src/egl/main/eglmode.c b/src/egl/main/eglmode.c index ed107d5d7a7..29d7964386e 100644 --- a/src/egl/main/eglmode.c +++ b/src/egl/main/eglmode.c @@ -31,56 +31,24 @@ _eglLookupMode(EGLModeMESA mode, _EGLDisplay *disp) /* loop over all screens on the display */ for (scrnum = 0; scrnum < disp->Screens->Size; scrnum++) { const _EGLScreen *scrn = disp->Screens->Elements[scrnum]; - EGLint i; - /* search list of modes for handle */ - for (i = 0; i < scrn->NumModes; i++) { - if (scrn->Modes[i].Handle == mode) { - return scrn->Modes + i; - } - } - } + EGLint idx; - return NULL; -} + /* + * the mode ids of a screen ranges from scrn->Handle to scrn->Handle + + * scrn->NumModes + */ + if (mode >= scrn->Handle && + mode < scrn->Handle + _EGL_SCREEN_MAX_MODES) { + idx = mode - scrn->Handle; + assert(idx < scrn->NumModes && scrn->Modes[idx].Handle == mode); -/** - * Add a new mode with the given attributes (width, height, depth, refreshRate) - * to the given screen. - * Assign a new mode ID/handle to the mode as well. - * \return pointer to the new _EGLMode - */ -_EGLMode * -_eglAddNewMode(_EGLScreen *screen, EGLint width, EGLint height, - EGLint refreshRate, const char *name) -{ - EGLint n; - _EGLMode *newModes; - - assert(screen); - assert(width > 0); - assert(height > 0); - assert(refreshRate > 0); - - n = screen->NumModes; - newModes = (_EGLMode *) realloc(screen->Modes, (n+1) * sizeof(_EGLMode)); - if (newModes) { - screen->Modes = newModes; - screen->Modes[n].Handle = n + 1; - screen->Modes[n].Width = width; - screen->Modes[n].Height = height; - screen->Modes[n].RefreshRate = refreshRate; - screen->Modes[n].Optimal = EGL_FALSE; - screen->Modes[n].Interlaced = EGL_FALSE; - screen->Modes[n].Name = _eglstrdup(name); - screen->NumModes++; - return screen->Modes + n; - } - else { - return NULL; + return &scrn->Modes[idx]; + } } -} + return NULL; +} /** diff --git a/src/egl/main/eglmode.h b/src/egl/main/eglmode.h index 9167cbc4b9b..ed4eb2c34af 100644 --- a/src/egl/main/eglmode.h +++ b/src/egl/main/eglmode.h @@ -32,11 +32,6 @@ extern _EGLMode * _eglLookupMode(EGLModeMESA mode, _EGLDisplay *dpy); -PUBLIC _EGLMode * -_eglAddNewMode(_EGLScreen *screen, EGLint width, EGLint height, - EGLint refreshRate, const char *name); - - extern EGLBoolean _eglChooseModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, const EGLint *attrib_list, EGLModeMESA *modes, diff --git a/src/egl/main/eglscreen.c b/src/egl/main/eglscreen.c index 0bbead84769..fc3ab322ab0 100644 --- a/src/egl/main/eglscreen.c +++ b/src/egl/main/eglscreen.c @@ -42,7 +42,8 @@ _eglAllocScreenHandle(void) EGLScreenMESA s; _eglLockMutex(&_eglNextScreenHandleMutex); - s = _eglNextScreenHandle++; + s = _eglNextScreenHandle; + _eglNextScreenHandle += _EGL_SCREEN_MAX_MODES; _eglUnlockMutex(&_eglNextScreenHandleMutex); return s; @@ -53,12 +54,19 @@ _eglAllocScreenHandle(void) * Initialize an _EGLScreen object to default values. */ void -_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy) +_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes) { memset(screen, 0, sizeof(_EGLScreen)); + screen->Display = dpy; + screen->NumModes = num_modes; screen->StepX = 1; screen->StepY = 1; + + if (num_modes > _EGL_SCREEN_MAX_MODES) + num_modes = _EGL_SCREEN_MAX_MODES; + screen->Modes = (_EGLMode *) calloc(num_modes, sizeof(*screen->Modes)); + screen->NumModes = (screen->Modes) ? num_modes : 0; } @@ -70,6 +78,7 @@ EGLScreenMESA _eglLinkScreen(_EGLScreen *screen) { _EGLDisplay *display; + EGLint i; assert(screen && screen->Display); display = screen->Display; @@ -79,7 +88,11 @@ _eglLinkScreen(_EGLScreen *screen) if (!display->Screens) return (EGLScreenMESA) 0; } + screen->Handle = _eglAllocScreenHandle(); + for (i = 0; i < screen->NumModes; i++) + screen->Modes[i].Handle = screen->Handle + i; + _eglAppendArray(display->Screens, (void *) screen); return screen->Handle; diff --git a/src/egl/main/eglscreen.h b/src/egl/main/eglscreen.h index 44fe20da3be..2a99f23c50a 100644 --- a/src/egl/main/eglscreen.h +++ b/src/egl/main/eglscreen.h @@ -8,6 +8,9 @@ #ifdef EGL_MESA_screen_surface +#define _EGL_SCREEN_MAX_MODES 16 + + /** * Per-screen information. * Note that an EGL screen doesn't have a size. A screen may be set to @@ -35,7 +38,7 @@ struct _egl_screen PUBLIC void -_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy); +_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes); PUBLIC EGLScreenMESA diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c b/src/gallium/state_trackers/egl/common/egl_g3d.c index 772c65daf50..30ddcd5bc14 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c @@ -126,18 +126,18 @@ egl_g3d_add_screens(_EGLDriver *drv, _EGLDisplay *dpy) continue; } - _eglInitScreen(&gscr->base, dpy); - - for (j = 0; j < num_modes; j++) { + _eglInitScreen(&gscr->base, dpy, num_modes); + for (j = 0; j < gscr->base.NumModes; j++) { const struct native_mode *nmode = native_modes[j]; - _EGLMode *mode; - - mode = _eglAddNewMode(&gscr->base, nmode->width, nmode->height, - nmode->refresh_rate, nmode->desc); - if (!mode) - break; - /* gscr->native_modes and gscr->base.Modes should be consistent */ - assert(mode == &gscr->base.Modes[j]); + _EGLMode *mode = &gscr->base.Modes[j]; + + mode->Width = nmode->width; + mode->Height = nmode->height; + mode->RefreshRate = nmode->refresh_rate; + mode->Optimal = EGL_FALSE; + mode->Interlaced = EGL_FALSE; + /* no need to strdup() */ + mode->Name = nmode->desc; } gscr->native = nconn; -- cgit v1.2.3 From 662e098b560c6983f5ac320cc5ff7a82ecdc5f8a Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 23 Oct 2010 11:31:29 +0800 Subject: st/egl: Fix native_mode refresh mode. Define the unit to match _EGLMode's. --- src/gallium/state_trackers/egl/common/native_modeset.h | 2 +- src/gallium/state_trackers/egl/drm/modeset.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/egl/common/native_modeset.h b/src/gallium/state_trackers/egl/common/native_modeset.h index dee757b3a88..2598082d687 100644 --- a/src/gallium/state_trackers/egl/common/native_modeset.h +++ b/src/gallium/state_trackers/egl/common/native_modeset.h @@ -39,7 +39,7 @@ struct native_connector { struct native_mode { const char *desc; int width, height; - int refresh_rate; + int refresh_rate; /* HZ * 1000 */ }; /** diff --git a/src/gallium/state_trackers/egl/drm/modeset.c b/src/gallium/state_trackers/egl/drm/modeset.c index 06a60770537..5ed22f7b9d4 100644 --- a/src/gallium/state_trackers/egl/drm/modeset.c +++ b/src/gallium/state_trackers/egl/drm/modeset.c @@ -469,8 +469,8 @@ drm_display_get_modes(struct native_display *ndpy, drmmode->base.height = drmmode->mode.vdisplay; drmmode->base.refresh_rate = drmmode->mode.vrefresh; /* not all kernels have vrefresh = refresh_rate * 1000 */ - if (drmmode->base.refresh_rate > 1000) - drmmode->base.refresh_rate = (drmmode->base.refresh_rate + 500) / 1000; + if (drmmode->base.refresh_rate < 1000) + drmmode->base.refresh_rate *= 1000; } nmodes_return = MALLOC(count * sizeof(*nmodes_return)); -- cgit v1.2.3 From d19afc57fe49816f3f3290410e0124d326577be2 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 23 Oct 2010 12:52:26 +0800 Subject: egl: Use reference counting to replace IsLinked or IsBound. Remove all _eglIsLinked and _eglIsBound. Update _eglBindContext and drivers to do reference counting. --- src/egl/drivers/dri2/egl_dri2.c | 35 +++++++--- src/egl/drivers/glx/egl_glx.c | 32 ++++++--- src/egl/main/eglapi.c | 17 +++-- src/egl/main/eglcontext.c | 75 +++++++++++++--------- src/egl/main/eglcontext.h | 31 +-------- src/egl/main/eglimage.h | 11 ---- src/egl/main/eglsurface.h | 27 -------- src/egl/main/eglsync.h | 14 ---- .../state_trackers/egl/common/egl_g3d_api.c | 44 +++++++++---- 9 files changed, 138 insertions(+), 148 deletions(-) (limited to 'src/gallium') diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 75aa29f55b9..a5f95b944c5 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1160,7 +1160,7 @@ dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf) (void) drv; - if (_eglIsSurfaceBound(surf)) + if (!_eglPutSurface(surf)) return EGL_TRUE; (*dri2_dpy->core->destroyDrawable)(dri2_surf->dri_drawable); @@ -1187,11 +1187,13 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, struct dri2_egl_surface *dri2_dsurf = dri2_egl_surface(dsurf); struct dri2_egl_surface *dri2_rsurf = dri2_egl_surface(rsurf); struct dri2_egl_context *dri2_ctx = dri2_egl_context(ctx); + _EGLContext *old_ctx; + _EGLSurface *old_dsurf, *old_rsurf; __DRIdrawable *ddraw, *rdraw; __DRIcontext *cctx; - /* bind the new context and return the "orphaned" one */ - if (!_eglBindContext(&ctx, &dsurf, &rsurf)) + /* make new bindings */ + if (!_eglBindContext(ctx, dsurf, rsurf, &old_ctx, &old_dsurf, &old_rsurf)) return EGL_FALSE; /* flush before context switch */ @@ -1204,16 +1206,29 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, if ((cctx == NULL && ddraw == NULL && rdraw == NULL) || dri2_dpy->core->bindContext(cctx, ddraw, rdraw)) { - if (dsurf && !_eglIsSurfaceLinked(dsurf)) - dri2_destroy_surface(drv, disp, dsurf); - if (rsurf && rsurf != dsurf && !_eglIsSurfaceLinked(dsurf)) - dri2_destroy_surface(drv, disp, rsurf); - if (ctx != NULL && !_eglIsContextLinked(ctx)) - dri2_dpy->core->unbindContext(dri2_egl_context(ctx)->dri_context); + dri2_destroy_surface(drv, disp, old_dsurf); + dri2_destroy_surface(drv, disp, old_rsurf); + if (old_ctx) { + dri2_dpy->core->unbindContext(dri2_egl_context(old_ctx)->dri_context); + /* no destroy? */ + _eglPutContext(old_ctx); + } return EGL_TRUE; } else { - _eglBindContext(&ctx, &dsurf, &rsurf); + /* undo the previous _eglBindContext */ + _eglBindContext(old_ctx, old_dsurf, old_rsurf, &ctx, &dsurf, &rsurf); + assert(&dri2_ctx->base == ctx && + &dri2_dsurf->base == dsurf && + &dri2_rsurf->base == rsurf); + + _eglPutSurface(dsurf); + _eglPutSurface(rsurf); + _eglPutContext(ctx); + + _eglPutSurface(old_dsurf); + _eglPutSurface(old_rsurf); + _eglPutContext(old_ctx); return EGL_FALSE; } diff --git a/src/egl/drivers/glx/egl_glx.c b/src/egl/drivers/glx/egl_glx.c index 256de57ed87..8ec7c48c50e 100644 --- a/src/egl/drivers/glx/egl_glx.c +++ b/src/egl/drivers/glx/egl_glx.c @@ -677,14 +677,16 @@ GLX_eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, struct GLX_egl_surface *GLX_dsurf = GLX_egl_surface(dsurf); struct GLX_egl_surface *GLX_rsurf = GLX_egl_surface(rsurf); struct GLX_egl_context *GLX_ctx = GLX_egl_context(ctx); + _EGLContext *old_ctx; + _EGLSurface *old_dsurf, *old_rsurf; GLXDrawable ddraw, rdraw; GLXContext cctx; EGLBoolean ret = EGL_FALSE; (void) drv; - /* bind the new context and return the "orphaned" one */ - if (!_eglBindContext(&ctx, &dsurf, &rsurf)) + /* make new bindings */ + if (!_eglBindContext(ctx, dsurf, rsurf, &old_ctx, &old_dsurf, &old_rsurf)) return EGL_FALSE; ddraw = (GLX_dsurf) ? GLX_dsurf->glx_drawable : None; @@ -697,13 +699,27 @@ GLX_eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, ret = glXMakeCurrent(GLX_dpy->dpy, ddraw, cctx); if (ret) { - if (dsurf && !_eglIsSurfaceLinked(dsurf)) - destroy_surface(disp, dsurf); - if (rsurf && rsurf != dsurf && !_eglIsSurfaceLinked(rsurf)) - destroy_surface(disp, rsurf); + if (_eglPutSurface(old_dsurf)) + destroy_surface(disp, old_dsurf); + if (_eglPutSurface(old_rsurf)) + destroy_surface(disp, old_rsurf); + /* no destroy? */ + _eglPutContext(old_ctx); } else { - _eglBindContext(&ctx, &dsurf, &rsurf); + /* undo the previous _eglBindContext */ + _eglBindContext(old_ctx, old_dsurf, old_rsurf, &ctx, &dsurf, &rsurf); + assert(&GLX_ctx->Base == ctx && + &GLX_dsurf->Base == dsurf && + &GLX_rsurf->Base == rsurf); + + _eglPutSurface(dsurf); + _eglPutSurface(rsurf); + _eglPutContext(ctx); + + _eglPutSurface(old_dsurf); + _eglPutSurface(old_rsurf); + _eglPutContext(old_ctx); } return ret; @@ -907,7 +923,7 @@ GLX_eglDestroySurface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf) { (void) drv; - if (!_eglIsSurfaceBound(surf)) + if (_eglPutSurface(surf)) destroy_surface(disp, surf); return EGL_TRUE; diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 913ddd288bd..efa9e97346b 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -648,11 +648,12 @@ eglSwapInterval(EGLDisplay dpy, EGLint interval) _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv); - if (!ctx || !_eglIsContextLinked(ctx) || ctx->Resource.Display != disp) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + ctx->Resource.Display != disp) RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_FALSE); surf = ctx->DrawSurface; - if (!_eglIsSurfaceLinked(surf)) + if (_eglGetSurfaceHandle(surf) == EGL_NO_SURFACE) RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE); ret = drv->API.SwapInterval(drv, disp, surf, interval); @@ -673,7 +674,8 @@ eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv); /* surface must be bound to current context in EGL 1.4 */ - if (!ctx || !_eglIsContextLinked(ctx) || surf != ctx->DrawSurface) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + surf != ctx->DrawSurface) RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE); ret = drv->API.SwapBuffers(drv, disp, surf); @@ -714,7 +716,8 @@ eglWaitClient(void) _eglLockMutex(&disp->Mutex); /* let bad current context imply bad current surface */ - if (!_eglIsContextLinked(ctx) || !_eglIsSurfaceLinked(ctx->DrawSurface)) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + _eglGetSurfaceHandle(ctx->DrawSurface) == EGL_NO_SURFACE) RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE); /* a valid current context implies an initialized current display */ @@ -763,7 +766,8 @@ eglWaitNative(EGLint engine) _eglLockMutex(&disp->Mutex); /* let bad current context imply bad current surface */ - if (!_eglIsContextLinked(ctx) || !_eglIsSurfaceLinked(ctx->DrawSurface)) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + _eglGetSurfaceHandle(ctx->DrawSurface) == EGL_NO_SURFACE) RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE); /* a valid current context implies an initialized current display */ @@ -1437,7 +1441,8 @@ eglSwapBuffersRegionNOK(EGLDisplay dpy, EGLSurface surface, RETURN_EGL_EVAL(disp, EGL_FALSE); /* surface must be bound to current context in EGL 1.4 */ - if (!ctx || !_eglIsContextLinked(ctx) || surf != ctx->DrawSurface) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + surf != ctx->DrawSurface) RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE); ret = drv->API.SwapBuffersRegionNOK(drv, disp, surf, numRects, rects); diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index b4cc7439583..3266a758249 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -300,54 +300,65 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read) /** * Bind the context to the current thread and given surfaces. Return the - * "orphaned" context and surfaces. Each argument is both input and output. + * previous bound context and surfaces. The caller should unreference the + * returned context and surfaces. + * + * Making a second call with the resources returned by the first call + * unsurprisingly undoes the first call, except for the resouce reference + * counts. */ EGLBoolean -_eglBindContext(_EGLContext **ctx, _EGLSurface **draw, _EGLSurface **read) +_eglBindContext(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read, + _EGLContext **old_ctx, + _EGLSurface **old_draw, _EGLSurface **old_read) { _EGLThreadInfo *t = _eglGetCurrentThread(); - _EGLContext *newCtx = *ctx, *oldCtx; - _EGLSurface *newDraw = *draw, *newRead = *read; + _EGLContext *prev_ctx; + _EGLSurface *prev_draw, *prev_read; - if (!_eglCheckMakeCurrent(newCtx, newDraw, newRead)) + if (!_eglCheckMakeCurrent(ctx, draw, read)) return EGL_FALSE; + /* increment refcounts before binding */ + _eglGetContext(ctx); + _eglGetSurface(draw); + _eglGetSurface(read); + /* bind the new context */ - oldCtx = _eglBindContextToThread(newCtx, t); + prev_ctx = _eglBindContextToThread(ctx, t); - /* break old bindings */ - if (oldCtx) { - *ctx = oldCtx; - *draw = oldCtx->DrawSurface; - *read = oldCtx->ReadSurface; + /* break previous bindings */ + if (prev_ctx) { + prev_draw = prev_ctx->DrawSurface; + prev_read = prev_ctx->ReadSurface; - if (*draw) - (*draw)->CurrentContext = NULL; - if (*read) - (*read)->CurrentContext = NULL; + if (prev_draw) + prev_draw->CurrentContext = NULL; + if (prev_read) + prev_read->CurrentContext = NULL; - oldCtx->DrawSurface = NULL; - oldCtx->ReadSurface = NULL; + prev_ctx->DrawSurface = NULL; + prev_ctx->ReadSurface = NULL; + } + else { + prev_draw = prev_read = NULL; } /* establish new bindings */ - if (newCtx) { - if (newDraw) - newDraw->CurrentContext = newCtx; - if (newRead) - newRead->CurrentContext = newCtx; - - newCtx->DrawSurface = newDraw; - newCtx->ReadSurface = newRead; + if (ctx) { + if (draw) + draw->CurrentContext = ctx; + if (read) + read->CurrentContext = ctx; + + ctx->DrawSurface = draw; + ctx->ReadSurface = read; } - /* an old context or surface is not orphaned if it is still bound */ - if (*ctx == newCtx) - *ctx = NULL; - if (*draw == newDraw || *draw == newRead) - *draw = NULL; - if (*read == newDraw || *read == newRead) - *read = NULL; + assert(old_ctx && old_draw && old_read); + *old_ctx = prev_ctx; + *old_draw = prev_draw; + *old_read = prev_read; return EGL_TRUE; } diff --git a/src/egl/main/eglcontext.h b/src/egl/main/eglcontext.h index 9c1e2184c64..8cd0df17313 100644 --- a/src/egl/main/eglcontext.h +++ b/src/egl/main/eglcontext.h @@ -39,7 +39,9 @@ _eglQueryContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, EGLint att PUBLIC EGLBoolean -_eglBindContext(_EGLContext **ctx, _EGLSurface **draw, _EGLSurface **read); +_eglBindContext(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read, + _EGLContext **old_ctx, + _EGLSurface **old_draw, _EGLSurface **old_read); /** @@ -64,19 +66,6 @@ _eglPutContext(_EGLContext *ctx) } -/** - * Return true if the context is bound to a thread. - * - * The binding is considered a reference to the context. Drivers should not - * destroy a context when it is bound. - */ -static INLINE EGLBoolean -_eglIsContextBound(_EGLContext *ctx) -{ - return (ctx->Binding != NULL); -} - - /** * Link a context to its display and return the handle of the link. * The handle can be passed to client directly. @@ -126,18 +115,4 @@ _eglGetContextHandle(_EGLContext *ctx) } -/** - * Return true if the context is linked to a display. - * - * The link is considered a reference to the context (the display is owning the - * context). Drivers should not destroy a context when it is linked. - */ -static INLINE EGLBoolean -_eglIsContextLinked(_EGLContext *ctx) -{ - _EGLResource *res = (_EGLResource *) ctx; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGLCONTEXT_INCLUDED */ diff --git a/src/egl/main/eglimage.h b/src/egl/main/eglimage.h index bdc325a7f33..adb939a9e02 100644 --- a/src/egl/main/eglimage.h +++ b/src/egl/main/eglimage.h @@ -113,15 +113,4 @@ _eglGetImageHandle(_EGLImage *img) } -/** - * Return true if the image is linked to a display. - */ -static INLINE EGLBoolean -_eglIsImageLinked(_EGLImage *img) -{ - _EGLResource *res = (_EGLResource *) img; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGLIMAGE_INCLUDED */ diff --git a/src/egl/main/eglsurface.h b/src/egl/main/eglsurface.h index b833258bf69..ef01b32ede3 100644 --- a/src/egl/main/eglsurface.h +++ b/src/egl/main/eglsurface.h @@ -67,19 +67,6 @@ extern EGLBoolean _eglSwapInterval(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf, EGLint interval); -/** - * Return true if there is a context bound to the surface. - * - * The binding is considered a reference to the surface. Drivers should not - * destroy a surface when it is bound. - */ -static INLINE EGLBoolean -_eglIsSurfaceBound(_EGLSurface *surf) -{ - return (surf->CurrentContext != NULL); -} - - /** * Increment reference count for the surface. */ @@ -151,18 +138,4 @@ _eglGetSurfaceHandle(_EGLSurface *surf) } -/** - * Return true if the surface is linked to a display. - * - * The link is considered a reference to the surface (the display is owning the - * surface). Drivers should not destroy a surface when it is linked. - */ -static INLINE EGLBoolean -_eglIsSurfaceLinked(_EGLSurface *surf) -{ - _EGLResource *res = (_EGLResource *) surf; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGLSURFACE_INCLUDED */ diff --git a/src/egl/main/eglsync.h b/src/egl/main/eglsync.h index 97ae67cf866..a0025237e7a 100644 --- a/src/egl/main/eglsync.h +++ b/src/egl/main/eglsync.h @@ -103,20 +103,6 @@ _eglGetSyncHandle(_EGLSync *sync) } -/** - * Return true if the sync is linked to a display. - * - * The link is considered a reference to the sync (the display is owning the - * sync). Drivers should not destroy a sync when it is linked. - */ -static INLINE EGLBoolean -_eglIsSyncLinked(_EGLSync *sync) -{ - _EGLResource *res = (_EGLResource *) sync; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGL_KHR_reusable_sync */ diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c b/src/gallium/state_trackers/egl/common/egl_g3d_api.c index 3bde39737ba..c10245bb067 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c @@ -160,7 +160,7 @@ destroy_context(_EGLDisplay *dpy, _EGLContext *ctx) static EGLBoolean egl_g3d_destroy_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx) { - if (!_eglIsContextBound(ctx)) + if (_eglPutContext(ctx)) destroy_context(dpy, ctx); return EGL_TRUE; } @@ -433,7 +433,7 @@ destroy_surface(_EGLDisplay *dpy, _EGLSurface *surf) static EGLBoolean egl_g3d_destroy_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf) { - if (!_eglIsSurfaceBound(surf)) + if (_eglPutSurface(surf)) destroy_surface(dpy, surf); return EGL_TRUE; } @@ -446,13 +446,15 @@ egl_g3d_make_current(_EGLDriver *drv, _EGLDisplay *dpy, struct egl_g3d_surface *gdraw = egl_g3d_surface(draw); struct egl_g3d_surface *gread = egl_g3d_surface(read); struct egl_g3d_context *old_gctx; + _EGLContext *old_ctx; + _EGLSurface *old_draw, *old_read; EGLBoolean ok = EGL_TRUE; - /* bind the new context and return the "orphaned" one */ - if (!_eglBindContext(&ctx, &draw, &read)) + /* make new bindings */ + if (!_eglBindContext(ctx, draw, read, &old_ctx, &old_draw, &old_read)) return EGL_FALSE; - old_gctx = egl_g3d_context(ctx); + old_gctx = egl_g3d_context(old_ctx); if (old_gctx) { /* flush old context */ old_gctx->stctxi->flush(old_gctx->stctxi, @@ -481,15 +483,33 @@ egl_g3d_make_current(_EGLDriver *drv, _EGLDisplay *dpy, } else if (old_gctx) { ok = old_gctx->stapi->make_current(old_gctx->stapi, NULL, NULL, NULL); - old_gctx->base.WindowRenderBuffer = EGL_NONE; + if (ok) + old_gctx->base.WindowRenderBuffer = EGL_NONE; } - if (ctx && !_eglIsContextLinked(ctx)) - destroy_context(dpy, ctx); - if (draw && !_eglIsSurfaceLinked(draw)) - destroy_surface(dpy, draw); - if (read && read != draw && !_eglIsSurfaceLinked(read)) - destroy_surface(dpy, read); + if (ok) { + if (_eglPutContext(old_ctx)) + destroy_context(dpy, old_ctx); + if (_eglPutSurface(old_draw)) + destroy_surface(dpy, old_draw); + if (_eglPutSurface(old_read)) + destroy_surface(dpy, old_read); + } + else { + /* undo the previous _eglBindContext */ + _eglBindContext(old_ctx, old_draw, old_read, &ctx, &draw, &read); + assert(&gctx->base == ctx && + &gdraw->base == draw && + &gread->base == read); + + _eglPutSurface(draw); + _eglPutSurface(read); + _eglPutContext(ctx); + + _eglPutSurface(old_draw); + _eglPutSurface(old_read); + _eglPutContext(old_ctx); + } return ok; } -- cgit v1.2.3 From 6c13fdf60e610f670c812a310e2a3cc9f5bed568 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 23 Oct 2010 17:27:58 +0800 Subject: st/egl: Use resource reference count for egl_g3d_sync. --- src/gallium/state_trackers/egl/common/egl_g3d.h | 2 -- src/gallium/state_trackers/egl/common/egl_g3d_sync.c | 5 ++--- 2 files changed, 2 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.h b/src/gallium/state_trackers/egl/common/egl_g3d.h index be450bbede3..72c14f0ac49 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.h +++ b/src/gallium/state_trackers/egl/common/egl_g3d.h @@ -106,8 +106,6 @@ _EGL_DRIVER_TYPECAST(egl_g3d_image, _EGLImage, obj) struct egl_g3d_sync { _EGLSync base; - int refs; - /* the mutex protects only the condvar, not the struct */ pipe_mutex mutex; pipe_condvar condvar; diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_sync.c b/src/gallium/state_trackers/egl/common/egl_g3d_sync.c index ec74e9eb94c..4e6d944c151 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_sync.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_sync.c @@ -128,13 +128,13 @@ egl_g3d_wait_fence_sync(struct egl_g3d_sync *gsync, EGLTimeKHR timeout) static INLINE void egl_g3d_ref_sync(struct egl_g3d_sync *gsync) { - p_atomic_inc(&gsync->refs); + _eglGetSync(&gsync->base); } static INLINE void egl_g3d_unref_sync(struct egl_g3d_sync *gsync) { - if (p_atomic_dec_zero(&gsync->refs)) { + if (_eglPutSync(&gsync->base)) { pipe_condvar_destroy(gsync->condvar); pipe_mutex_destroy(gsync->mutex); @@ -194,7 +194,6 @@ egl_g3d_create_sync(_EGLDriver *drv, _EGLDisplay *dpy, pipe_mutex_init(gsync->mutex); pipe_condvar_init(gsync->condvar); - p_atomic_set(&gsync->refs, 1); return &gsync->base; } -- cgit v1.2.3 From 4250882ccf8326ba9074c671110370534489caa6 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 23 Oct 2010 09:35:37 -0600 Subject: softpipe: added some texture sample debug code (disabled) --- src/gallium/drivers/softpipe/sp_tex_sample.c | 57 ++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 7 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c index 088e48f81fe..2eac4c7a82b 100644 --- a/src/gallium/drivers/softpipe/sp_tex_sample.c +++ b/src/gallium/drivers/softpipe/sp_tex_sample.c @@ -44,6 +44,9 @@ #include "sp_tex_tile_cache.h" +/** Set to one to help debug texture sampling */ +#define DEBUG_TEX 0 + /* * Return fractional part of 'f'. Used for computing interpolation weights. @@ -774,6 +777,18 @@ pot_level_size(unsigned base_pot, unsigned level) } +static void +print_sample(const char *function, float rgba[NUM_CHANNELS][QUAD_SIZE]) +{ + debug_printf("%s %g %g %g %g, %g %g %g %g, %g %g %g %g, %g %g %g %g\n", + function, + rgba[0][0], rgba[1][0], rgba[2][0], rgba[3][0], + rgba[0][1], rgba[1][1], rgba[2][1], rgba[3][1], + rgba[0][2], rgba[1][2], rgba[2][2], rgba[3][2], + rgba[0][3], rgba[1][3], rgba[2][3], rgba[3][3]); +} + + /* Some image-filter fastpaths: */ static INLINE void @@ -832,6 +847,10 @@ img_filter_2d_linear_repeat_POT(struct tgsi_sampler *tgsi_sampler, tx[2][c], tx[3][c]); } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -872,6 +891,10 @@ img_filter_2d_nearest_repeat_POT(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -921,6 +944,10 @@ img_filter_2d_nearest_clamp_POT(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -957,6 +984,10 @@ img_filter_1d_nearest(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -997,6 +1028,10 @@ img_filter_2d_nearest(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1045,6 +1080,10 @@ img_filter_cube_nearest(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1357,6 +1396,10 @@ mip_filter_linear(struct tgsi_sampler *tgsi_sampler, } } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1402,13 +1445,9 @@ mip_filter_nearest(struct tgsi_sampler *tgsi_sampler, samp->min_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } -#if 0 - printf("RGBA %g %g %g %g, %g %g %g %g, %g %g %g %g, %g %g %g %g\n", - rgba[0][0], rgba[1][0], rgba[2][0], rgba[3][0], - rgba[0][1], rgba[1][1], rgba[2][1], rgba[3][1], - rgba[0][2], rgba[1][2], rgba[2][2], rgba[3][2], - rgba[0][3], rgba[1][3], rgba[2][3], rgba[3][3]); -#endif + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1510,6 +1549,10 @@ mip_filter_linear_2d_linear_repeat_POT( } } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } -- cgit v1.2.3 From d8740b77ac30298c1742107e2afc4edabca562f0 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 23 Oct 2010 10:27:19 -0600 Subject: softpipe: remove >32bpp color restriction The comment was out of date. The tile cache does handle >32-bit colors. --- src/gallium/drivers/softpipe/sp_screen.c | 7 ------- src/gallium/drivers/softpipe/sp_tile_cache.h | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index a2bfa1bd8d5..d90cf56808c 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -209,13 +209,6 @@ softpipe_is_format_supported( struct pipe_screen *screen, if (format_desc->block.width != 1 || format_desc->block.height != 1) return FALSE; - - /* - * TODO: Unfortunately we cannot render into anything more than 32 bits - * because we encode color clear values into a 32bit word. - */ - if (format_desc->block.bits > 32) - return FALSE; } if (bind & PIPE_BIND_DEPTH_STENCIL) { diff --git a/src/gallium/drivers/softpipe/sp_tile_cache.h b/src/gallium/drivers/softpipe/sp_tile_cache.h index 031c7c1ea5c..4151a47c323 100644 --- a/src/gallium/drivers/softpipe/sp_tile_cache.h +++ b/src/gallium/drivers/softpipe/sp_tile_cache.h @@ -86,7 +86,7 @@ struct softpipe_tile_cache struct softpipe_cached_tile *entries[NUM_ENTRIES]; uint clear_flags[(MAX_WIDTH / TILE_SIZE) * (MAX_HEIGHT / TILE_SIZE) / 32]; float clear_color[4]; /**< for color bufs */ - uint clear_val; /**< for z+stencil, or packed color clear value */ + uint clear_val; /**< for z+stencil */ boolean depth_stencil; /**< Is the surface a depth/stencil format? */ struct softpipe_cached_tile *tile; /**< scratch tile for clears */ -- cgit v1.2.3 From 9f9d24c89a2286f952b123c703e8268d2f1aa719 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Sat, 23 Oct 2010 13:33:15 +0200 Subject: r600g: Fixed r600_vertex_element leak. Signed-off-by: Tilman Sauerbeck Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/evergreen_state.c | 13 +++++-------- src/gallium/drivers/r600/r600_pipe.h | 1 - src/gallium/drivers/r600/r600_state.c | 13 +++++-------- src/gallium/drivers/r600/r600_state_common.c | 1 - 4 files changed, 10 insertions(+), 18 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index f394527edfd..81241478ab2 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -561,13 +561,12 @@ static void evergreen_delete_state(struct pipe_context *ctx, void *state) static void evergreen_delete_vertex_element(struct pipe_context *ctx, void *state) { - struct r600_vertex_element *v = (struct r600_vertex_element*)state; + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - if (v == NULL) - return; - if (--v->refcount) - return; - free(v); + FREE(state); + + if (rctx->vertex_elements == state) + rctx->vertex_elements = NULL; } static void evergreen_set_clip_state(struct pipe_context *ctx, @@ -610,10 +609,8 @@ static void evergreen_bind_vertex_elements(struct pipe_context *ctx, void *state struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_vertex_element *v = (struct r600_vertex_element*)state; - evergreen_delete_vertex_element(ctx, rctx->vertex_elements); rctx->vertex_elements = v; if (v) { - v->refcount++; // rctx->vs_rebuild = TRUE; } } diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 11410f17c75..b27bbbac8c1 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -83,7 +83,6 @@ struct r600_pipe_blend { struct r600_vertex_element { unsigned count; - unsigned refcount; struct pipe_vertex_element elements[PIPE_MAX_ATTRIBS]; enum pipe_format hw_format[PIPE_MAX_ATTRIBS]; unsigned hw_format_size[PIPE_MAX_ATTRIBS]; diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index df2c05ea139..71005297646 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -755,13 +755,12 @@ static void r600_delete_state(struct pipe_context *ctx, void *state) static void r600_delete_vertex_element(struct pipe_context *ctx, void *state) { - struct r600_vertex_element *v = (struct r600_vertex_element*)state; + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - if (v == NULL) - return; - if (--v->refcount) - return; - free(v); + FREE(state); + + if (rctx->vertex_elements == state) + rctx->vertex_elements = NULL; } static void r600_set_clip_state(struct pipe_context *ctx, @@ -804,10 +803,8 @@ static void r600_bind_vertex_elements(struct pipe_context *ctx, void *state) struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_vertex_element *v = (struct r600_vertex_element*)state; - r600_delete_vertex_element(ctx, rctx->vertex_elements); rctx->vertex_elements = v; if (v) { - v->refcount++; // rctx->vs_rebuild = TRUE; } } diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 722ce32263e..e127bac7797 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -118,6 +118,5 @@ void *r600_create_vertex_elements(struct pipe_context *ctx, align(util_format_get_blocksize(v->hw_format[i]), 4); } - v->refcount = 1; return v; } -- cgit v1.2.3 From 9612b482e2c8e994709bcaab79185224b4d76670 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sun, 24 Oct 2010 12:53:50 +1000 Subject: r600g: merge more of the common r600/evergreen state handling --- src/gallium/drivers/r600/evergreen_state.c | 92 +++------------------------- src/gallium/drivers/r600/r600_pipe.h | 9 +++ src/gallium/drivers/r600/r600_state.c | 89 --------------------------- src/gallium/drivers/r600/r600_state_common.c | 88 ++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 172 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 81241478ab2..c7ed422df34 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -137,20 +137,6 @@ static void *evergreen_create_blend_state(struct pipe_context *ctx, return rstate; } -static void evergreen_bind_blend_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state; - struct r600_pipe_state *rstate; - - if (state == NULL) - return; - rstate = &blend->rstate; - rctx->states[rstate->id] = rstate; - rctx->cb_target_mask = blend->cb_target_mask; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void *evergreen_create_dsa_state(struct pipe_context *ctx, const struct pipe_depth_stencil_alpha_state *state) { @@ -307,36 +293,6 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, return rstate; } -static void evergreen_bind_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - if (state == NULL) - return; - - rctx->flatshade = rs->flatshade; - rctx->sprite_coord_enable = rs->sprite_coord_enable; - rctx->rasterizer = rs; - - rctx->states[rs->rstate.id] = &rs->rstate; - r600_context_pipe_state_set(&rctx->ctx, &rs->rstate); -} - -static void evergreen_delete_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; - - if (rctx->rasterizer == rs) { - rctx->rasterizer = NULL; - } - if (rctx->states[rs->rstate.id] == &rs->rstate) { - rctx->states[rs->rstate.id] = NULL; - } - free(rs); -} - static void *evergreen_create_sampler_state(struct pipe_context *ctx, const struct pipe_sampler_state *state) { @@ -377,15 +333,6 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx, return rstate; } -static void evergreen_sampler_view_destroy(struct pipe_context *ctx, - struct pipe_sampler_view *state) -{ - struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state; - - pipe_resource_reference(&state->texture, NULL); - FREE(resource); -} - static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_context *ctx, struct pipe_resource *texture, const struct pipe_sampler_view *state) @@ -510,17 +457,6 @@ static void evergreen_set_ps_sampler_view(struct pipe_context *ctx, unsigned cou rctx->ps_samplers.n_views = count; } -static void evergreen_bind_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (state == NULL) - return; - rctx->states[rstate->id] = rstate; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void evergreen_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void **states) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; @@ -559,16 +495,6 @@ static void evergreen_delete_state(struct pipe_context *ctx, void *state) free(rstate); } -static void evergreen_delete_vertex_element(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - FREE(state); - - if (rctx->vertex_elements == state) - rctx->vertex_elements = NULL; -} - static void evergreen_set_clip_state(struct pipe_context *ctx, const struct pipe_clip_state *state) { @@ -1017,20 +943,20 @@ void evergreen_init_state_functions(struct r600_pipe_context *rctx) rctx->context.create_sampler_view = evergreen_create_sampler_view; rctx->context.create_vertex_elements_state = r600_create_vertex_elements; rctx->context.create_vs_state = evergreen_create_shader_state; - rctx->context.bind_blend_state = evergreen_bind_blend_state; - rctx->context.bind_depth_stencil_alpha_state = evergreen_bind_state; + rctx->context.bind_blend_state = r600_bind_blend_state; + rctx->context.bind_depth_stencil_alpha_state = r600_bind_state; rctx->context.bind_fragment_sampler_states = evergreen_bind_ps_sampler; rctx->context.bind_fs_state = evergreen_bind_ps_shader; - rctx->context.bind_rasterizer_state = evergreen_bind_rs_state; + rctx->context.bind_rasterizer_state = r600_bind_rs_state; rctx->context.bind_vertex_elements_state = evergreen_bind_vertex_elements; rctx->context.bind_vertex_sampler_states = evergreen_bind_vs_sampler; rctx->context.bind_vs_state = evergreen_bind_vs_shader; - rctx->context.delete_blend_state = evergreen_delete_state; - rctx->context.delete_depth_stencil_alpha_state = evergreen_delete_state; + rctx->context.delete_blend_state = r600_delete_state; + rctx->context.delete_depth_stencil_alpha_state = r600_delete_state; rctx->context.delete_fs_state = evergreen_delete_ps_shader; - rctx->context.delete_rasterizer_state = evergreen_delete_rs_state; - rctx->context.delete_sampler_state = evergreen_delete_state; - rctx->context.delete_vertex_elements_state = evergreen_delete_vertex_element; + rctx->context.delete_rasterizer_state = r600_delete_rs_state; + rctx->context.delete_sampler_state = r600_delete_state; + rctx->context.delete_vertex_elements_state = r600_delete_vertex_element; rctx->context.delete_vs_state = evergreen_delete_vs_shader; rctx->context.set_blend_color = evergreen_set_blend_color; rctx->context.set_clip_state = evergreen_set_clip_state; @@ -1045,7 +971,7 @@ void evergreen_init_state_functions(struct r600_pipe_context *rctx) rctx->context.set_index_buffer = r600_set_index_buffer; rctx->context.set_vertex_sampler_views = evergreen_set_vs_sampler_view; rctx->context.set_viewport_state = evergreen_set_viewport_state; - rctx->context.sampler_view_destroy = evergreen_sampler_view_destroy; + rctx->context.sampler_view_destroy = r600_sampler_view_destroy; } void evergreen_init_config(struct r600_pipe_context *rctx) diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index b27bbbac8c1..b0bd2659de9 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -241,6 +241,15 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, void *r600_create_vertex_elements(struct pipe_context *ctx, unsigned count, const struct pipe_vertex_element *elements); +void r600_delete_vertex_element(struct pipe_context *ctx, void *state); +void r600_bind_blend_state(struct pipe_context *ctx, void *state); +void r600_bind_rs_state(struct pipe_context *ctx, void *state); +void r600_delete_rs_state(struct pipe_context *ctx, void *state); +void r600_sampler_view_destroy(struct pipe_context *ctx, + struct pipe_sampler_view *state); +void r600_bind_state(struct pipe_context *ctx, void *state); +void r600_delete_state(struct pipe_context *ctx, void *state); + /* * common helpers */ diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 71005297646..f5601a5effa 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -324,20 +324,6 @@ static void *r600_create_blend_state(struct pipe_context *ctx, return rstate; } -static void r600_bind_blend_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state; - struct r600_pipe_state *rstate; - - if (state == NULL) - return; - rstate = &blend->rstate; - rctx->states[rstate->id] = rstate; - rctx->cb_target_mask = blend->cb_target_mask; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void *r600_create_dsa_state(struct pipe_context *ctx, const struct pipe_depth_stencil_alpha_state *state) { @@ -499,36 +485,6 @@ static void *r600_create_rs_state(struct pipe_context *ctx, return rstate; } -static void r600_bind_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - if (state == NULL) - return; - - rctx->flatshade = rs->flatshade; - rctx->sprite_coord_enable = rs->sprite_coord_enable; - rctx->rasterizer = rs; - - rctx->states[rs->rstate.id] = &rs->rstate; - r600_context_pipe_state_set(&rctx->ctx, &rs->rstate); -} - -static void r600_delete_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; - - if (rctx->rasterizer == rs) { - rctx->rasterizer = NULL; - } - if (rctx->states[rs->rstate.id] == &rs->rstate) { - rctx->states[rs->rstate.id] = NULL; - } - free(rs); -} - static void *r600_create_sampler_state(struct pipe_context *ctx, const struct pipe_sampler_state *state) { @@ -565,16 +521,6 @@ static void *r600_create_sampler_state(struct pipe_context *ctx, return rstate; } - -static void r600_sampler_view_destroy(struct pipe_context *ctx, - struct pipe_sampler_view *state) -{ - struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state; - - pipe_resource_reference(&state->texture, NULL); - FREE(resource); -} - static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *ctx, struct pipe_resource *texture, const struct pipe_sampler_view *state) @@ -705,17 +651,6 @@ static void r600_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, rctx->ps_samplers.n_views = count; } -static void r600_bind_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (state == NULL) - return; - rctx->states[rstate->id] = rstate; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void r600_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void **states) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; @@ -739,30 +674,6 @@ static void r600_bind_vs_sampler(struct pipe_context *ctx, unsigned count, void } } -static void r600_delete_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (rctx->states[rstate->id] == rstate) { - rctx->states[rstate->id] = NULL; - } - for (int i = 0; i < rstate->nregs; i++) { - r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL); - } - free(rstate); -} - -static void r600_delete_vertex_element(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - FREE(state); - - if (rctx->vertex_elements == state) - rctx->vertex_elements = NULL; -} - static void r600_set_clip_state(struct pipe_context *ctx, const struct pipe_clip_state *state) { diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index e127bac7797..0ea70868c7d 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -30,6 +30,94 @@ #include "r600_pipe.h" /* common state between evergreen and r600 */ +void r600_bind_blend_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state; + struct r600_pipe_state *rstate; + + if (state == NULL) + return; + rstate = &blend->rstate; + rctx->states[rstate->id] = rstate; + rctx->cb_target_mask = blend->cb_target_mask; + r600_context_pipe_state_set(&rctx->ctx, rstate); +} + +void r600_bind_rs_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + if (state == NULL) + return; + + rctx->flatshade = rs->flatshade; + rctx->sprite_coord_enable = rs->sprite_coord_enable; + rctx->rasterizer = rs; + + rctx->states[rs->rstate.id] = &rs->rstate; + r600_context_pipe_state_set(&rctx->ctx, &rs->rstate); +} + +void r600_delete_rs_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; + + if (rctx->rasterizer == rs) { + rctx->rasterizer = NULL; + } + if (rctx->states[rs->rstate.id] == &rs->rstate) { + rctx->states[rs->rstate.id] = NULL; + } + free(rs); +} + +void r600_sampler_view_destroy(struct pipe_context *ctx, + struct pipe_sampler_view *state) +{ + struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state; + + pipe_resource_reference(&state->texture, NULL); + FREE(resource); +} + +void r600_bind_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; + + if (state == NULL) + return; + rctx->states[rstate->id] = rstate; + r600_context_pipe_state_set(&rctx->ctx, rstate); +} + +void r600_delete_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; + + if (rctx->states[rstate->id] == rstate) { + rctx->states[rstate->id] = NULL; + } + for (int i = 0; i < rstate->nregs; i++) { + r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL); + } + free(rstate); +} + +void r600_delete_vertex_element(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + FREE(state); + + if (rctx->vertex_elements == state) + rctx->vertex_elements = NULL; +} + void r600_set_index_buffer(struct pipe_context *ctx, const struct pipe_index_buffer *ib) -- cgit v1.2.3 From ccb9be105602edaaff196046e324c8cb4a12fe0a Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Sat, 23 Oct 2010 13:33:18 +0200 Subject: r600g: Added r600_pipe_shader_destroy(). Not yet complete. Signed-off-by: Tilman Sauerbeck Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600_pipe.h | 1 + src/gallium/drivers/r600/r600_shader.c | 11 +++++++++++ src/gallium/drivers/r600/r600_state.c | 6 ++++-- 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index b0bd2659de9..0bfa7afeadc 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -208,6 +208,7 @@ void r600_init_context_resource_functions(struct r600_pipe_context *r600); /* r600_shader.c */ int r600_pipe_shader_update(struct pipe_context *ctx, struct r600_pipe_shader *shader); int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *shader, const struct tgsi_token *tokens); +void r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader); int r600_find_vs_semantic_index(struct r600_shader *vs, struct r600_shader *ps, int id); diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 0dd416c0d83..a4e052c23a3 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -338,6 +338,17 @@ int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *s return 0; } +void +r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_bc_cf *cf, *next_cf; + + r600_bo_reference(rctx->radeon, &shader->bo, NULL); + + /* FIXME: is there more stuff to free? */ +} + /* * tgsi -> r600 shader */ diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index f5601a5effa..d496051948f 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -1095,7 +1095,8 @@ static void r600_delete_ps_shader(struct pipe_context *ctx, void *state) if (rctx->ps_shader == shader) { rctx->ps_shader = NULL; } - /* TODO proper delete */ + + r600_pipe_shader_destroy(ctx, shader); free(shader); } @@ -1107,7 +1108,8 @@ static void r600_delete_vs_shader(struct pipe_context *ctx, void *state) if (rctx->vs_shader == shader) { rctx->vs_shader = NULL; } - /* TODO proper delete */ + + r600_pipe_shader_destroy(ctx, shader); free(shader); } -- cgit v1.2.3 From f4a2c62af56ce10e43688e8283f8defeb05cef1a Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Sat, 23 Oct 2010 13:33:22 +0200 Subject: r600g: Also clear bc data when we're destroying a shader. [airlied: remove unused vars] Signed-off-by: Tilman Sauerbeck Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600_asm.c | 36 ++++++++++++++++++++++++++++++++++ src/gallium/drivers/r600/r600_asm.h | 1 + src/gallium/drivers/r600/r600_shader.c | 3 ++- 3 files changed, 39 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index d13da0ef638..a71d95ff1d0 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -871,3 +871,39 @@ int r600_bc_build(struct r600_bc *bc) } return 0; } + +void r600_bc_clear(struct r600_bc *bc) +{ + struct r600_bc_cf *cf, *next_cf; + + free(bc->bytecode); + bc->bytecode = NULL; + + LIST_FOR_EACH_ENTRY_SAFE(cf, next_cf, &bc->cf, list) { + struct r600_bc_alu *alu, *next_alu; + struct r600_bc_tex *tex, *next_tex; + struct r600_bc_tex *vtx, *next_vtx; + + LIST_FOR_EACH_ENTRY_SAFE(alu, next_alu, &cf->alu, list) { + free(alu); + } + + LIST_INITHEAD(&cf->alu); + + LIST_FOR_EACH_ENTRY_SAFE(tex, next_tex, &cf->tex, list) { + free(tex); + } + + LIST_INITHEAD(&cf->tex); + + LIST_FOR_EACH_ENTRY_SAFE(vtx, next_vtx, &cf->vtx, list) { + free(vtx); + } + + LIST_INITHEAD(&cf->vtx); + + free(cf); + } + + LIST_INITHEAD(&cf->list); +} diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h index bebc7c15b00..97d08ee4b54 100644 --- a/src/gallium/drivers/r600/r600_asm.h +++ b/src/gallium/drivers/r600/r600_asm.h @@ -185,6 +185,7 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf); /* r600_asm.c */ int r600_bc_init(struct r600_bc *bc, enum radeon_family family); +void r600_bc_clear(struct r600_bc *bc); int r600_bc_add_alu(struct r600_bc *bc, const struct r600_bc_alu *alu); int r600_bc_add_literal(struct r600_bc *bc, const u32 *value); int r600_bc_add_vtx(struct r600_bc *bc, const struct r600_bc_vtx *vtx); diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index a4e052c23a3..4106587398b 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -342,10 +342,11 @@ void r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_bc_cf *cf, *next_cf; r600_bo_reference(rctx->radeon, &shader->bo, NULL); + r600_bc_clear(&shader->shader.bc); + /* FIXME: is there more stuff to free? */ } -- cgit v1.2.3 From a20c2347a0bb9e0e1591b070ee5d0cac81168114 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sun, 24 Oct 2010 13:04:44 +1000 Subject: r600g: drop more common state handling code --- src/gallium/drivers/r600/evergreen_state.c | 92 +++------------------------- src/gallium/drivers/r600/r600_pipe.h | 7 +++ src/gallium/drivers/r600/r600_state.c | 66 -------------------- src/gallium/drivers/r600/r600_state_common.c | 66 ++++++++++++++++++++ 4 files changed, 80 insertions(+), 151 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index c7ed422df34..e3f11da7d8c 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -481,20 +481,6 @@ static void evergreen_bind_vs_sampler(struct pipe_context *ctx, unsigned count, } } -static void evergreen_delete_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (rctx->states[rstate->id] == rstate) { - rctx->states[rstate->id] = NULL; - } - for (int i = 0; i < rstate->nregs; i++) { - r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL); - } - free(rstate); -} - static void evergreen_set_clip_state(struct pipe_context *ctx, const struct pipe_clip_state *state) { @@ -530,17 +516,6 @@ static void evergreen_set_clip_state(struct pipe_context *ctx, r600_context_pipe_state_set(&rctx->ctx, rstate); } -static void evergreen_bind_vertex_elements(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_vertex_element *v = (struct r600_vertex_element*)state; - - rctx->vertex_elements = v; - if (v) { -// rctx->vs_rebuild = TRUE; - } -} - static void evergreen_set_polygon_stipple(struct pipe_context *ctx, const struct pipe_poly_stipple *state) { @@ -880,84 +855,31 @@ static void evergreen_set_constant_buffer(struct pipe_context *ctx, uint shader, } } -static void *evergreen_create_shader_state(struct pipe_context *ctx, - const struct pipe_shader_state *state) -{ - struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader); - int r; - - r = r600_pipe_shader_create(ctx, shader, state->tokens); - if (r) { - return NULL; - } - return shader; -} - -static void evergreen_bind_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->ps_shader = (struct r600_pipe_shader *)state; -} - -static void evergreen_bind_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->vs_shader = (struct r600_pipe_shader *)state; -} - -static void evergreen_delete_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->ps_shader == shader) { - rctx->ps_shader = NULL; - } - /* TODO proper delete */ - free(shader); -} - -static void evergreen_delete_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->vs_shader == shader) { - rctx->vs_shader = NULL; - } - /* TODO proper delete */ - free(shader); -} - void evergreen_init_state_functions(struct r600_pipe_context *rctx) { rctx->context.create_blend_state = evergreen_create_blend_state; rctx->context.create_depth_stencil_alpha_state = evergreen_create_dsa_state; - rctx->context.create_fs_state = evergreen_create_shader_state; + rctx->context.create_fs_state = r600_create_shader_state; rctx->context.create_rasterizer_state = evergreen_create_rs_state; rctx->context.create_sampler_state = evergreen_create_sampler_state; rctx->context.create_sampler_view = evergreen_create_sampler_view; rctx->context.create_vertex_elements_state = r600_create_vertex_elements; - rctx->context.create_vs_state = evergreen_create_shader_state; + rctx->context.create_vs_state = r600_create_shader_state; rctx->context.bind_blend_state = r600_bind_blend_state; rctx->context.bind_depth_stencil_alpha_state = r600_bind_state; rctx->context.bind_fragment_sampler_states = evergreen_bind_ps_sampler; - rctx->context.bind_fs_state = evergreen_bind_ps_shader; + rctx->context.bind_fs_state = r600_bind_ps_shader; rctx->context.bind_rasterizer_state = r600_bind_rs_state; - rctx->context.bind_vertex_elements_state = evergreen_bind_vertex_elements; + rctx->context.bind_vertex_elements_state = r600_bind_vertex_elements; rctx->context.bind_vertex_sampler_states = evergreen_bind_vs_sampler; - rctx->context.bind_vs_state = evergreen_bind_vs_shader; + rctx->context.bind_vs_state = r600_bind_vs_shader; rctx->context.delete_blend_state = r600_delete_state; rctx->context.delete_depth_stencil_alpha_state = r600_delete_state; - rctx->context.delete_fs_state = evergreen_delete_ps_shader; + rctx->context.delete_fs_state = r600_delete_ps_shader; rctx->context.delete_rasterizer_state = r600_delete_rs_state; rctx->context.delete_sampler_state = r600_delete_state; rctx->context.delete_vertex_elements_state = r600_delete_vertex_element; - rctx->context.delete_vs_state = evergreen_delete_vs_shader; + rctx->context.delete_vs_state = r600_delete_vs_shader; rctx->context.set_blend_color = evergreen_set_blend_color; rctx->context.set_clip_state = evergreen_set_clip_state; rctx->context.set_constant_buffer = evergreen_set_constant_buffer; diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 0bfa7afeadc..1c691f6b764 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -250,7 +250,14 @@ void r600_sampler_view_destroy(struct pipe_context *ctx, struct pipe_sampler_view *state); void r600_bind_state(struct pipe_context *ctx, void *state); void r600_delete_state(struct pipe_context *ctx, void *state); +void r600_bind_vertex_elements(struct pipe_context *ctx, void *state); +void *r600_create_shader_state(struct pipe_context *ctx, + const struct pipe_shader_state *state); +void r600_bind_ps_shader(struct pipe_context *ctx, void *state); +void r600_bind_vs_shader(struct pipe_context *ctx, void *state); +void r600_delete_ps_shader(struct pipe_context *ctx, void *state); +void r600_delete_vs_shader(struct pipe_context *ctx, void *state); /* * common helpers */ diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index d496051948f..1c80075245d 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -709,17 +709,6 @@ static void r600_set_clip_state(struct pipe_context *ctx, r600_context_pipe_state_set(&rctx->ctx, rstate); } -static void r600_bind_vertex_elements(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_vertex_element *v = (struct r600_vertex_element*)state; - - rctx->vertex_elements = v; - if (v) { -// rctx->vs_rebuild = TRUE; - } -} - static void r600_set_polygon_stipple(struct pipe_context *ctx, const struct pipe_poly_stipple *state) { @@ -1058,61 +1047,6 @@ static void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint } } -static void *r600_create_shader_state(struct pipe_context *ctx, - const struct pipe_shader_state *state) -{ - struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader); - int r; - - r = r600_pipe_shader_create(ctx, shader, state->tokens); - if (r) { - return NULL; - } - return shader; -} - -static void r600_bind_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->ps_shader = (struct r600_pipe_shader *)state; -} - -static void r600_bind_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->vs_shader = (struct r600_pipe_shader *)state; -} - -static void r600_delete_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->ps_shader == shader) { - rctx->ps_shader = NULL; - } - - r600_pipe_shader_destroy(ctx, shader); - free(shader); -} - -static void r600_delete_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->vs_shader == shader) { - rctx->vs_shader = NULL; - } - - r600_pipe_shader_destroy(ctx, shader); - free(shader); -} - void r600_init_state_functions(struct r600_pipe_context *rctx) { rctx->context.create_blend_state = r600_create_blend_state; diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 0ea70868c7d..210420e823b 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -108,6 +108,17 @@ void r600_delete_state(struct pipe_context *ctx, void *state) free(rstate); } +void r600_bind_vertex_elements(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_vertex_element *v = (struct r600_vertex_element*)state; + + rctx->vertex_elements = v; + if (v) { +// rctx->vs_rebuild = TRUE; + } +} + void r600_delete_vertex_element(struct pipe_context *ctx, void *state) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; @@ -208,3 +219,58 @@ void *r600_create_vertex_elements(struct pipe_context *ctx, return v; } + +void *r600_create_shader_state(struct pipe_context *ctx, + const struct pipe_shader_state *state) +{ + struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader); + int r; + + r = r600_pipe_shader_create(ctx, shader, state->tokens); + if (r) { + return NULL; + } + return shader; +} + +void r600_bind_ps_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + /* TODO delete old shader */ + rctx->ps_shader = (struct r600_pipe_shader *)state; +} + +void r600_bind_vs_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + /* TODO delete old shader */ + rctx->vs_shader = (struct r600_pipe_shader *)state; +} + +void r600_delete_ps_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; + + if (rctx->ps_shader == shader) { + rctx->ps_shader = NULL; + } + + r600_pipe_shader_destroy(ctx, shader); + free(shader); +} + +void r600_delete_vs_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; + + if (rctx->vs_shader == shader) { + rctx->vs_shader = NULL; + } + + r600_pipe_shader_destroy(ctx, shader); + free(shader); +} -- cgit v1.2.3 From 70f60c9c89b4773089c621faf0e5765d9488e9fa Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Sun, 24 Oct 2010 14:06:50 +0100 Subject: Ensure -L$(TOP)/$(LIB_DIR) appears in link line before any -L in $LDFLAGS Ensure -L$(TOP)/$(LIB_DIR) (the staging dir for build products), appears in the link line before any -L in $LDFLAGS, so that we link driver we are building with libEGL we have just built, and not an installed version [olv: make a similar change to targets/egl] Signed-off-by: Jon TURNEY --- src/egl/drivers/Makefile.template | 4 ++-- src/gallium/targets/egl/Makefile | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'src/gallium') diff --git a/src/egl/drivers/Makefile.template b/src/egl/drivers/Makefile.template index 08e82c65e9b..47709e3c59f 100644 --- a/src/egl/drivers/Makefile.template +++ b/src/egl/drivers/Makefile.template @@ -24,8 +24,8 @@ $(EGL_DRIVER_PATH): $(EGL_DRIVER) $(EGL_DRIVER): $(EGL_OBJECTS) Makefile $(TOP)/src/egl/drivers/Makefile.template @$(MKLIB) -o $(EGL_DRIVER) -noprefix \ - -linker '$(CC)' -ldflags '$(LDFLAGS)' \ - -L$(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \ + -linker '$(CC)' -ldflags '-L$(TOP)/$(LIB_DIR) $(LDFLAGS)' \ + $(MKLIB_OPTIONS) \ $(EGL_OBJECTS) $(EGL_LIBS) -l$(EGL_LIB) .c.o: diff --git a/src/gallium/targets/egl/Makefile b/src/gallium/targets/egl/Makefile index 38e60dbafbf..57979c4e9d4 100644 --- a/src/gallium/targets/egl/Makefile +++ b/src/gallium/targets/egl/Makefile @@ -39,7 +39,7 @@ egl_CPPFLAGS := \ -I$(TOP)/src/gallium/state_trackers/egl \ -I$(TOP)/src/egl/main \ -DPIPE_PREFIX=\"$(PIPE_PREFIX)\" -DST_PREFIX=\"$(ST_PREFIX)\" -egl_SYS := -lm $(DLOPEN_LIBS) -L$(TOP)/$(LIB_DIR) -lEGL +egl_SYS := -lm $(DLOPEN_LIBS) -lEGL egl_LIBS := $(TOP)/src/gallium/state_trackers/egl/libegl.a ifneq ($(findstring x11, $(EGL_PLATFORMS)),) @@ -134,17 +134,17 @@ GL_LIBS := $(TOP)/src/mesa/libmesagallium.a # OpenGL ES 1.x state tracker GLESv1_CM_CPPFLAGS := -I$(TOP)/src/mesa -GLESv1_CM_SYS := $(DRI_LIB_DEPS) -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB) +GLESv1_CM_SYS := $(DRI_LIB_DEPS) -l$(GLESv1_CM_LIB) GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a # OpenGL ES 2.x state tracker GLESv2_CPPFLAGS := -I$(TOP)/src/mesa -GLESv2_SYS := $(DRI_LIB_DEPS) -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB) +GLESv2_SYS := $(DRI_LIB_DEPS) -l$(GLESv2_LIB) GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a # OpenVG state tracker OpenVG_CPPFLAGS := -I$(TOP)/src/gallium/state_trackers/vega -OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB) +OpenVG_SYS := -lm -l$(VG_LIB) OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a @@ -181,14 +181,16 @@ OUTPUTS := $(addprefix $(OUTPUT_PATH)/, $(OUTPUTS)) default: $(OUTPUTS) define mklib -$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' \ + -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \ -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \ -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \ $(common_SYS) $($(1)_SYS) endef define mklib-cxx -$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CXX)' -ldflags '$(LDFLAGS)' \ +$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CXX)' \ + -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \ -cplusplus -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \ -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \ $(common_SYS) $($(1)_SYS) -- cgit v1.2.3 From 8449a4772a73f613d9425b691cffba6a261df813 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Tue, 5 Oct 2010 02:52:03 +0200 Subject: r300g: fix texture border for 16-bits-per-channel formats This is kinda hacky, but it's hard to come up with a generic solution for all formats when only a few are used in practice (I mostly get B8G8R8*8). --- src/gallium/drivers/r300/r300_state_derived.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c index 904736ef06d..730ef7a3ee2 100644 --- a/src/gallium/drivers/r300/r300_state_derived.c +++ b/src/gallium/drivers/r300/r300_state_derived.c @@ -620,14 +620,19 @@ static uint32_t r300_get_border_color(enum pipe_format format, } break; - default: - /* I think the fat formats (16, 32) are specified - * as the 8-bit ones. I am not sure how compressed formats - * work here. */ + case 8: r = ((float_to_ubyte(border_swizzled[0]) & 0xff) << 0) | ((float_to_ubyte(border_swizzled[1]) & 0xff) << 8) | ((float_to_ubyte(border_swizzled[2]) & 0xff) << 16) | ((float_to_ubyte(border_swizzled[3]) & 0xff) << 24); + break; + + case 16: + r = ((float_to_ubyte(border_swizzled[2]) & 0xff) << 0) | + ((float_to_ubyte(border_swizzled[1]) & 0xff) << 8) | + ((float_to_ubyte(border_swizzled[0]) & 0xff) << 16) | + ((float_to_ubyte(border_swizzled[3]) & 0xff) << 24); + break; } return r; -- cgit v1.2.3 From e1e7843d030c0a14521642131097d795c0103685 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 25 Oct 2010 09:17:40 -0600 Subject: util: use pointer_to_func() to silence warning --- src/gallium/auxiliary/util/u_dl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_dl.c b/src/gallium/auxiliary/util/u_dl.c index 220860ebf4b..aca435d6cad 100644 --- a/src/gallium/auxiliary/util/u_dl.c +++ b/src/gallium/auxiliary/util/u_dl.c @@ -38,6 +38,7 @@ #endif #include "u_dl.h" +#include "u_pointer.h" struct util_dl_library * @@ -58,7 +59,7 @@ util_dl_get_proc_address(struct util_dl_library *library, const char *procname) { #if defined(PIPE_OS_UNIX) - return (util_dl_proc)dlsym((void *)library, procname); + return (util_dl_proc) pointer_to_func(dlsym((void *)library, procname)); #elif defined(PIPE_OS_WINDOWS) return (util_dl_proc)GetProcAddress((HMODULE)library, procname); #else -- cgit v1.2.3 From 1686db70d6c05ddc238c0aa0cb04e35e35264731 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 25 Oct 2010 09:18:07 -0600 Subject: rtasm: use pointer_to_func() to silence warning --- src/gallium/auxiliary/rtasm/rtasm_ppc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/rtasm/rtasm_ppc.c b/src/gallium/auxiliary/rtasm/rtasm_ppc.c index ef4b306cb67..330838d23cf 100644 --- a/src/gallium/auxiliary/rtasm/rtasm_ppc.c +++ b/src/gallium/auxiliary/rtasm/rtasm_ppc.c @@ -97,7 +97,7 @@ void (*ppc_get_func(struct ppc_function *p))(void) return (void (*)(void)) NULL; else #endif - return (void (*)(void)) p->store; + return (void (*)(void)) pointer_to_func(p->store); } -- cgit v1.2.3 From 81d5afbbecce4ccf2b4bf10b10f47585febfe9c8 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 25 Oct 2010 10:31:42 -0600 Subject: translate: use function typedefs, casts to silence warnings --- src/gallium/auxiliary/translate/translate.h | 54 ++++++++++++++----------- src/gallium/auxiliary/translate/translate_sse.c | 8 ++-- 2 files changed, 35 insertions(+), 27 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/translate/translate.h b/src/gallium/auxiliary/translate/translate.h index a75380228b1..34f2d972328 100644 --- a/src/gallium/auxiliary/translate/translate.h +++ b/src/gallium/auxiliary/translate/translate.h @@ -68,6 +68,33 @@ struct translate_key { }; +struct translate; + + +typedef void (PIPE_CDECL *run_elts_func)(struct translate *, + const unsigned *elts, + unsigned count, + unsigned instance_id, + void *output_buffer); + +typedef void (PIPE_CDECL *run_elts16_func)(struct translate *, + const uint16_t *elts, + unsigned count, + unsigned instance_id, + void *output_buffer); + +typedef void (PIPE_CDECL *run_elts8_func)(struct translate *, + const uint8_t *elts, + unsigned count, + unsigned instance_id, + void *output_buffer); + +typedef void (PIPE_CDECL *run_func)(struct translate *, + unsigned start, + unsigned count, + unsigned instance_id, + void *output_buffer); + struct translate { struct translate_key key; @@ -79,29 +106,10 @@ struct translate { unsigned stride, unsigned max_index ); - void (PIPE_CDECL *run_elts)( struct translate *, - const unsigned *elts, - unsigned count, - unsigned instance_id, - void *output_buffer); - - void (PIPE_CDECL *run_elts16)( struct translate *, - const uint16_t *elts, - unsigned count, - unsigned instance_id, - void *output_buffer); - - void (PIPE_CDECL *run_elts8)( struct translate *, - const uint8_t *elts, - unsigned count, - unsigned instance_id, - void *output_buffer); - - void (PIPE_CDECL *run)( struct translate *, - unsigned start, - unsigned count, - unsigned instance_id, - void *output_buffer); + run_elts_func run_elts; + run_elts16_func run_elts16; + run_elts8_func run_elts8; + run_func run; }; diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c index f8bf5b46692..ef7f4be4c3e 100644 --- a/src/gallium/auxiliary/translate/translate_sse.c +++ b/src/gallium/auxiliary/translate/translate_sse.c @@ -1495,19 +1495,19 @@ struct translate *translate_sse2_create( const struct translate_key *key ) if (!build_vertex_emit(p, &p->elt8_func, 1)) goto fail; - p->translate.run = (void*)x86_get_func(&p->linear_func); + p->translate.run = (run_func) x86_get_func(&p->linear_func); if (p->translate.run == NULL) goto fail; - p->translate.run_elts = (void*)x86_get_func(&p->elt_func); + p->translate.run_elts = (run_elts_func) x86_get_func(&p->elt_func); if (p->translate.run_elts == NULL) goto fail; - p->translate.run_elts16 = (void*)x86_get_func(&p->elt16_func); + p->translate.run_elts16 = (run_elts16_func) x86_get_func(&p->elt16_func); if (p->translate.run_elts16 == NULL) goto fail; - p->translate.run_elts8 = (void*)x86_get_func(&p->elt8_func); + p->translate.run_elts8 = (run_elts8_func) x86_get_func(&p->elt8_func); if (p->translate.run_elts8 == NULL) goto fail; -- cgit v1.2.3 From af03c14d4cc82eaeb884fe19171bfbb23b5dc75e Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 25 Oct 2010 10:34:44 -0600 Subject: translate: remove unused prototypes --- src/gallium/auxiliary/translate/translate.h | 9 --------- 1 file changed, 9 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/translate/translate.h b/src/gallium/auxiliary/translate/translate.h index 34f2d972328..850ef39ef21 100644 --- a/src/gallium/auxiliary/translate/translate.h +++ b/src/gallium/auxiliary/translate/translate.h @@ -114,15 +114,6 @@ struct translate { -#if 0 -struct translate_context *translate_context_create( void ); -void translate_context_destroy( struct translate_context * ); - -struct translate *translate_lookup_or_create( struct translate_context *tctx, - const struct translate_key *key ); -#endif - - struct translate *translate_create( const struct translate_key *key ); boolean translate_is_output_format_supported(enum pipe_format format); -- cgit v1.2.3 From 2d2bafdb30110e83b7e14017326a454d7e7f37f3 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 14 Oct 2010 11:15:37 +1000 Subject: r600g: fix magic 0x1 ->flat shade ena --- src/gallium/drivers/r600/evergreen_state.c | 2 +- src/gallium/drivers/r600/r600_state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index e3f11da7d8c..72223485067 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -247,7 +247,7 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_RASTERIZER; if (state->flatshade_first) prov_vtx = 0; - tmp = 0x00000001; + tmp = S_0286D4_FLAT_SHADE_ENA(1); if (state->sprite_coord_enable) { tmp |= S_0286D4_PNT_SPRITE_ENA(1) | S_0286D4_PNT_SPRITE_OVRD_X(2) | diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 1c80075245d..b3e0d493217 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -434,7 +434,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_RASTERIZER; if (state->flatshade_first) prov_vtx = 0; - tmp = 0x00000001; + tmp = S_0286D4_FLAT_SHADE_ENA(1); if (state->sprite_coord_enable) { tmp |= S_0286D4_PNT_SPRITE_ENA(1) | S_0286D4_PNT_SPRITE_OVRD_X(2) | -- cgit v1.2.3 From d1acb920163ab0f39ff2fc72b85fc7bf16c37262 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 26 Oct 2010 12:08:00 +1000 Subject: r600g: add assembler support for all the kcache fields. --- src/gallium/drivers/r600/eg_asm.c | 7 ++++++- src/gallium/drivers/r600/r600_asm.c | 7 ++++++- src/gallium/drivers/r600/r600_asm.h | 5 +++++ 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r600/eg_asm.c b/src/gallium/drivers/r600/eg_asm.c index 52b7189e9e5..c30f09c394b 100644 --- a/src/gallium/drivers/r600/eg_asm.c +++ b/src/gallium/drivers/r600/eg_asm.c @@ -36,8 +36,13 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf) case (EG_V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU << 3): case (EG_V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3): bc->bytecode[id++] = S_SQ_CF_ALU_WORD0_ADDR(cf->addr >> 1) | - S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode); + S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK0(cf->kcache0_bank) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK1(cf->kcache1_bank); bc->bytecode[id++] = S_SQ_CF_ALU_WORD1_CF_INST(cf->inst >> 3) | + S_SQ_CF_ALU_WORD1_KCACHE_MODE1(cf->kcache1_mode) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(cf->kcache0_addr) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(cf->kcache1_addr) | S_SQ_CF_ALU_WORD1_BARRIER(1) | S_SQ_CF_ALU_WORD1_COUNT((cf->ndw / 2) - 1); break; diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index a71d95ff1d0..c22628423bd 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -701,9 +701,14 @@ static int r600_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf) case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU << 3): case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3): bc->bytecode[id++] = S_SQ_CF_ALU_WORD0_ADDR(cf->addr >> 1) | - S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode); + S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK0(cf->kcache0_bank) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK1(cf->kcache1_bank); bc->bytecode[id++] = S_SQ_CF_ALU_WORD1_CF_INST(cf->inst >> 3) | + S_SQ_CF_ALU_WORD1_KCACHE_MODE1(cf->kcache1_mode) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(cf->kcache0_addr) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(cf->kcache1_addr) | S_SQ_CF_ALU_WORD1_BARRIER(1) | S_SQ_CF_ALU_WORD1_USES_WATERFALL(bc->chiprev == 0 ? cf->r6xx_uses_waterfall : 0) | S_SQ_CF_ALU_WORD1_COUNT((cf->ndw / 2) - 1); diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h index 97d08ee4b54..25cda16837d 100644 --- a/src/gallium/drivers/r600/r600_asm.h +++ b/src/gallium/drivers/r600/r600_asm.h @@ -132,6 +132,11 @@ struct r600_bc_cf { unsigned pop_count; unsigned cf_addr; /* control flow addr */ unsigned kcache0_mode; + unsigned kcache1_mode; + unsigned kcache0_addr; + unsigned kcache1_addr; + unsigned kcache0_bank; + unsigned kcache1_bank; unsigned r6xx_uses_waterfall; struct list_head alu; struct list_head tex; -- cgit v1.2.3