SConstruct | 2 docs/envvars.html | 19 docs/lists.html | 31 progs/demos/Makefile | 7 progs/demos/isosurf.c | 1 progs/demos/morph3d.c | 1 progs/demos/shadowtex.c | 1 progs/glsl/shtest.c | 1 progs/redbook/aapoly.c | 1 progs/tests/getprocaddress.c | 4 progs/tests/vparray.c | 3 progs/trivial/tri-fbo-tex-mip.c | 2 progs/trivial/tri-fbo-tex.c | 2 progs/xdemos/corender.c | 1 progs/xdemos/glxgears.c | 1 scons/gallium.py | 5 src/gallium/auxiliary/draw/draw_context.c | 3 src/gallium/auxiliary/draw/draw_pipe.c | 44 src/gallium/auxiliary/draw/draw_pt.c | 1 src/gallium/auxiliary/draw/draw_pt_fetch.c | 1 src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c | 1 src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline.c | 1 src/gallium/auxiliary/draw/draw_pt_post_vs.c | 1 src/gallium/auxiliary/draw/draw_vs_varient.c | 1 src/gallium/auxiliary/pipebuffer/Makefile | 1 src/gallium/auxiliary/pipebuffer/SConscript | 1 src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c | 1013 +++++++++----- src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.h | 37 src/gallium/auxiliary/pipebuffer/pb_bufmgr.h | 4 src/gallium/auxiliary/pipebuffer/pb_bufmgr_debug.c | 3 src/gallium/auxiliary/pipebuffer/pb_bufmgr_fenced.c | 152 -- src/gallium/auxiliary/pipebuffer/pb_validate.c | 1 src/gallium/auxiliary/tgsi/tgsi_scan.c | 10 src/gallium/auxiliary/util/u_blit.c | 4 src/gallium/auxiliary/util/u_gen_mipmap.c | 4 src/gallium/auxiliary/util/u_tile.c | 2 src/gallium/auxiliary/util/u_upload_mgr.c | 4 src/gallium/drivers/i915/i915_clear.c | 1 src/gallium/drivers/i915/i915_context.c | 3 src/gallium/drivers/i915/i915_debug.c | 1 src/gallium/drivers/i915/i915_debug_fp.c | 1 src/gallium/drivers/i915/i915_state.c | 2 src/gallium/drivers/i915/i915_state_derived.c | 1 src/gallium/drivers/i915/i915_state_sampler.c | 1 src/gallium/drivers/i915/i915_surface.c | 6 src/gallium/drivers/i915/i915_texture.c | 2 src/gallium/drivers/llvmpipe/lp_bld_alpha.c | 1 src/gallium/drivers/llvmpipe/lp_bld_arit.c | 1 src/gallium/drivers/llvmpipe/lp_bld_blend_soa.c | 1 src/gallium/drivers/llvmpipe/lp_bld_conv.c | 2 src/gallium/drivers/llvmpipe/lp_bld_format_aos.c | 1 src/gallium/drivers/llvmpipe/lp_bld_tgsi_soa.c | 2 src/gallium/drivers/llvmpipe/lp_draw_arrays.c | 2 src/gallium/drivers/llvmpipe/lp_flush.c | 2 src/gallium/drivers/llvmpipe/lp_jit.c | 1 src/gallium/drivers/llvmpipe/lp_setup.c | 1 src/gallium/drivers/llvmpipe/lp_state_fs.c | 2 src/gallium/drivers/llvmpipe/lp_state_surface.c | 1 src/gallium/drivers/llvmpipe/lp_state_vertex.c | 1 src/gallium/drivers/llvmpipe/lp_test_blend.c | 1 src/gallium/drivers/llvmpipe/lp_tex_cache.c | 1 src/gallium/drivers/llvmpipe/lp_tex_sample_c.c | 1 src/gallium/drivers/llvmpipe/lp_tex_sample_llvm.c | 1 src/gallium/drivers/llvmpipe/lp_texture.c | 2 src/gallium/drivers/llvmpipe/lp_tile_cache.c | 2 src/gallium/drivers/softpipe/sp_context.c | 1 src/gallium/drivers/softpipe/sp_flush.c | 2 src/gallium/drivers/softpipe/sp_prim_vbuf.c | 2 src/gallium/drivers/softpipe/sp_quad_blend.c | 1 src/gallium/drivers/softpipe/sp_quad_depth_test.c | 4 src/gallium/drivers/softpipe/sp_quad_fs.c | 2 src/gallium/drivers/softpipe/sp_setup.c | 1 src/gallium/drivers/softpipe/sp_state_surface.c | 1 src/gallium/drivers/softpipe/sp_state_vertex.c | 1 src/gallium/drivers/softpipe/sp_tex_tile_cache.c | 1 src/gallium/drivers/softpipe/sp_texture.c | 1 src/gallium/drivers/svga/svga_draw_arrays.c | 1 src/gallium/drivers/svga/svga_draw_elements.c | 1 src/gallium/drivers/svga/svga_pipe_blend.c | 1 src/gallium/drivers/svga/svga_pipe_constants.c | 3 src/gallium/drivers/svga/svga_pipe_depthstencil.c | 1 src/gallium/drivers/svga/svga_pipe_draw.c | 1 src/gallium/drivers/svga/svga_pipe_flush.c | 5 src/gallium/drivers/svga/svga_pipe_fs.c | 2 src/gallium/drivers/svga/svga_pipe_misc.c | 6 src/gallium/drivers/svga/svga_pipe_query.c | 1 src/gallium/drivers/svga/svga_pipe_rasterizer.c | 1 src/gallium/drivers/svga/svga_pipe_sampler.c | 3 src/gallium/drivers/svga/svga_pipe_vertex.c | 4 src/gallium/drivers/svga/svga_pipe_vs.c | 1 src/gallium/drivers/svga/svga_screen.c | 4 src/gallium/drivers/svga/svga_screen.h | 6 src/gallium/drivers/svga/svga_screen_buffer.c | 104 - src/gallium/drivers/svga/svga_screen_buffer.h | 8 src/gallium/drivers/svga/svga_screen_texture.c | 68 src/gallium/drivers/svga/svga_state_framebuffer.c | 2 src/gallium/drivers/svga/svga_state_fs.c | 4 src/gallium/drivers/svga/svga_state_rss.c | 3 src/gallium/drivers/svga/svga_state_tss.c | 2 src/gallium/drivers/svga/svga_state_vs.c | 6 src/gallium/drivers/svga/svga_swtnl_backend.c | 15 src/gallium/drivers/svga/svga_swtnl_draw.c | 1 src/gallium/drivers/svga/svga_swtnl_state.c | 1 src/gallium/drivers/svga/svga_tgsi_decl_sm20.c | 3 src/gallium/drivers/svga/svga_tgsi_decl_sm30.c | 1 src/gallium/drivers/svga/svga_winsys.h | 6 src/gallium/drivers/trace/tr_drm.c | 1 src/gallium/include/pipe/p_inlines.h | 41 src/gallium/include/pipe/p_screen.h | 5 src/gallium/include/state_tracker/drm_api.h | 5 src/gallium/state_trackers/dri/dri_context.c | 6 src/gallium/state_trackers/dri/dri_drawable.c | 19 src/gallium/state_trackers/dri/dri_drawable.h | 3 src/gallium/state_trackers/dri/dri_screen.c | 16 src/gallium/state_trackers/dri/dri_screen.h | 1 src/gallium/state_trackers/python/SConscript | 1 src/gallium/state_trackers/vega/shader.c | 4 src/gallium/state_trackers/wgl/stw_pixelformat.c | 5 src/gallium/state_trackers/xorg/xorg_composite.c | 3 src/gallium/state_trackers/xorg/xorg_dri2.c | 50 src/gallium/state_trackers/xorg/xorg_driver.c | 96 + src/gallium/state_trackers/xorg/xorg_exa.c | 1 src/gallium/state_trackers/xorg/xorg_exa_tgsi.c | 2 src/gallium/state_trackers/xorg/xorg_output.c | 2 src/gallium/state_trackers/xorg/xorg_tracker.h | 1 src/gallium/state_trackers/xorg/xorg_winsys.h | 1 src/gallium/state_trackers/xorg/xorg_xv.c | 10 src/gallium/winsys/drm/intel/gem/intel_drm_api.c | 1 src/gallium/winsys/drm/nouveau/drm/nouveau_drm_api.c | 1 src/gallium/winsys/drm/radeon/core/radeon_drm.c | 1 src/gallium/winsys/drm/vmware/core/vmw_context.c | 114 + src/gallium/winsys/drm/vmware/core/vmw_screen.h | 4 src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c | 86 - src/gallium/winsys/drm/vmware/core/vmw_screen_pools.c | 22 src/gallium/winsys/drm/vmware/xorg/vmw_video.c | 3 src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c | 10 src/gallium/winsys/xlib/xlib_softpipe.c | 40 src/glx/x11/glxcurrent.c | 1 src/mesa/drivers/dri/common/spantmp2.h | 2 src/mesa/drivers/dri/ffb/ffb_bitmap.c | 1 src/mesa/drivers/dri/ffb/ffb_clear.c | 3 src/mesa/drivers/dri/ffb/ffb_dd.c | 4 src/mesa/drivers/dri/ffb/ffb_depth.c | 1 src/mesa/drivers/dri/ffb/ffb_lines.c | 4 src/mesa/drivers/dri/ffb/ffb_points.c | 2 src/mesa/drivers/dri/ffb/ffb_span.c | 2 src/mesa/drivers/dri/ffb/ffb_state.c | 5 src/mesa/drivers/dri/ffb/ffb_stencil.c | 2 src/mesa/drivers/dri/ffb/ffb_vb.c | 2 src/mesa/drivers/dri/ffb/ffb_xmesa.c | 2 src/mesa/drivers/dri/i810/i810context.c | 3 src/mesa/drivers/dri/i810/i810render.c | 1 src/mesa/drivers/dri/i810/i810screen.c | 4 src/mesa/drivers/dri/i810/i810state.c | 2 src/mesa/drivers/dri/i810/i810tex.c | 2 src/mesa/drivers/dri/i810/i810texmem.c | 1 src/mesa/drivers/dri/i810/i810vb.c | 1 src/mesa/drivers/dri/i915/i830_context.c | 3 src/mesa/drivers/dri/i915/i915_context.c | 5 src/mesa/drivers/dri/i915/i915_debug_fp.c | 3 src/mesa/drivers/dri/i915/i915_vtbl.c | 1 src/mesa/drivers/dri/i915/intel_tris.c | 1 src/mesa/drivers/dri/i965/brw_cc.c | 2 src/mesa/drivers/dri/i965/brw_clip_line.c | 1 src/mesa/drivers/dri/i965/brw_clip_point.c | 1 src/mesa/drivers/dri/i965/brw_clip_state.c | 1 src/mesa/drivers/dri/i965/brw_clip_tri.c | 1 src/mesa/drivers/dri/i965/brw_clip_unfilled.c | 1 src/mesa/drivers/dri/i965/brw_clip_util.c | 1 src/mesa/drivers/dri/i965/brw_context.c | 9 src/mesa/drivers/dri/i965/brw_draw.c | 2 src/mesa/drivers/dri/i965/brw_draw_upload.c | 4 src/mesa/drivers/dri/i965/brw_fallback.c | 1 src/mesa/drivers/dri/i965/brw_gs_emit.c | 1 src/mesa/drivers/dri/i965/brw_gs_state.c | 1 src/mesa/drivers/dri/i965/brw_program.c | 1 src/mesa/drivers/dri/i965/brw_sf_state.c | 1 src/mesa/drivers/dri/i965/brw_vs_surface_state.c | 1 src/mesa/drivers/dri/i965/brw_vtbl.c | 1 src/mesa/drivers/dri/i965/brw_wm.c | 1 src/mesa/drivers/dri/intel/intel_blit.c | 1 src/mesa/drivers/dri/intel/intel_buffers.c | 2 src/mesa/drivers/dri/intel/intel_clear.c | 3 src/mesa/drivers/dri/intel/intel_context.c | 1 src/mesa/drivers/dri/intel/intel_pixel.c | 7 src/mesa/drivers/dri/intel/intel_pixel_bitmap.c | 3 src/mesa/drivers/dri/intel/intel_pixel_draw.c | 3 src/mesa/drivers/dri/intel/intel_pixel_read.c | 1 src/mesa/drivers/dri/intel/intel_regions.c | 1 src/mesa/drivers/dri/intel/intel_screen.c | 3 src/mesa/drivers/dri/intel/intel_state.c | 2 src/mesa/drivers/dri/intel/intel_swapbuffers.c | 1 src/mesa/drivers/dri/intel/intel_tex_copy.c | 1 src/mesa/drivers/dri/intel/intel_tex_image.c | 1 src/mesa/drivers/dri/intel/intel_tex_validate.c | 2 src/mesa/drivers/dri/mach64/mach64_context.c | 2 src/mesa/drivers/dri/mach64/mach64_dd.c | 3 src/mesa/drivers/dri/mach64/mach64_lock.c | 1 src/mesa/drivers/dri/mach64/mach64_screen.c | 2 src/mesa/drivers/dri/mach64/mach64_span.c | 1 src/mesa/drivers/dri/mach64/mach64_state.c | 3 src/mesa/drivers/dri/mach64/mach64_tex.c | 5 src/mesa/drivers/dri/mach64/mach64_texmem.c | 3 src/mesa/drivers/dri/mach64/mach64_texstate.c | 2 src/mesa/drivers/dri/mach64/mach64_vb.c | 1 src/mesa/drivers/dri/mga/mga_xmesa.c | 2 src/mesa/drivers/dri/mga/mgadd.c | 5 src/mesa/drivers/dri/mga/mgaioctl.c | 3 src/mesa/drivers/dri/mga/mgarender.c | 1 src/mesa/drivers/dri/mga/mgatex.c | 3 src/mesa/drivers/dri/mga/mgatris.c | 1 src/mesa/drivers/dri/mga/mgavb.c | 1 src/mesa/drivers/dri/r200/r200_state_init.c | 3 src/mesa/drivers/dri/r200/r200_vertprog.c | 2 src/mesa/drivers/dri/r300/r300_cmdbuf.c | 3 src/mesa/drivers/dri/r300/r300_context.c | 5 src/mesa/drivers/dri/r300/r300_draw.c | 3 src/mesa/drivers/dri/r300/r300_emit.c | 6 src/mesa/drivers/dri/r300/r300_fragprog_common.c | 2 src/mesa/drivers/dri/r300/r300_ioctl.c | 2 src/mesa/drivers/dri/r300/r300_render.c | 6 src/mesa/drivers/dri/r300/r300_state.c | 4 src/mesa/drivers/dri/r300/r300_tex.c | 5 src/mesa/drivers/dri/r300/r300_texstate.c | 2 src/mesa/drivers/dri/r300/r300_vertprog.c | 1 src/mesa/drivers/dri/r600/r600_texstate.c | 36 src/mesa/drivers/dri/r600/r700_state.c | 6 src/mesa/drivers/dri/radeon/radeon_common.c | 3 src/mesa/drivers/dri/radeon/radeon_cs_legacy.c | 1 src/mesa/drivers/dri/radeon/radeon_lighting.c | 681 --------- src/mesa/drivers/dri/savage/savagedd.c | 4 src/mesa/drivers/dri/savage/savageioctl.c | 2 src/mesa/drivers/dri/savage/savagerender.c | 1 src/mesa/drivers/dri/savage/savagespan.c | 1 src/mesa/drivers/dri/savage/savagetex.c | 2 src/mesa/drivers/dri/savage/savagetris.c | 1 src/mesa/drivers/dri/sis/sis6326_state.c | 2 src/mesa/drivers/dri/sis/sis_context.c | 3 src/mesa/drivers/dri/sis/sis_dd.c | 2 src/mesa/drivers/dri/sis/sis_fog.c | 1 src/mesa/drivers/dri/sis/sis_screen.c | 1 src/mesa/drivers/dri/sis/sis_state.c | 4 src/mesa/drivers/dri/sis/sis_tex.c | 1 src/mesa/drivers/dri/sis/sis_texstate.c | 1 src/mesa/drivers/dri/sis/sis_tris.c | 1 src/mesa/drivers/dri/tdfx/tdfx_dd.c | 7 src/mesa/drivers/dri/tdfx/tdfx_lock.c | 1 src/mesa/drivers/dri/tdfx/tdfx_pixels.c | 1 src/mesa/drivers/dri/tdfx/tdfx_screen.c | 2 src/mesa/drivers/dri/tdfx/tdfx_state.c | 4 src/mesa/drivers/dri/tdfx/tdfx_texman.c | 1 src/mesa/drivers/dri/tdfx/tdfx_texstate.c | 1 src/mesa/drivers/dri/tdfx/tdfx_vb.c | 5 src/mesa/drivers/dri/unichrome/via_context.c | 3 src/mesa/drivers/dri/unichrome/via_ioctl.c | 1 src/mesa/drivers/dri/unichrome/via_render.c | 1 src/mesa/drivers/dri/unichrome/via_screen.c | 4 src/mesa/drivers/dri/unichrome/via_state.c | 3 src/mesa/drivers/dri/unichrome/via_tex.c | 2 src/mesa/drivers/dri/unichrome/via_texcombine.c | 1 src/mesa/glapi/gl_x86_asm.py | 2 src/mesa/main/attrib.c | 1 src/mesa/main/blend.c | 1 src/mesa/main/buffers.c | 2 src/mesa/main/convolve.c | 1 src/mesa/main/debug.c | 4 src/mesa/main/depthstencil.c | 1 src/mesa/main/dlist.c | 21 src/mesa/main/drawpix.c | 1 src/mesa/main/enable.c | 1 src/mesa/main/fbobject.c | 30 src/mesa/main/formats.c | 1 src/mesa/main/image.c | 1 src/mesa/main/lines.c | 2 src/mesa/main/mipmap.c | 1 src/mesa/main/pixel.c | 1 src/mesa/main/pixelstore.c | 3 src/mesa/main/points.c | 1 src/mesa/main/polygon.c | 1 src/mesa/main/scissor.c | 6 src/mesa/main/state.c | 7 src/mesa/main/texcompress.c | 3 src/mesa/main/texformat.c | 2 src/mesa/main/texgetimage.c | 2 src/mesa/main/teximage.c | 1 src/mesa/main/texobj.c | 1 src/mesa/main/texparam.c | 1 src/mesa/main/texstate.c | 2 src/mesa/main/texstore.c | 4 src/mesa/main/vtxfmt.c | 2 src/mesa/shader/arbprogparse.c | 3 src/mesa/shader/arbprogram.c | 33 src/mesa/shader/nvvertparse.c | 1 src/mesa/shader/prog_execute.c | 67 src/mesa/shader/prog_statevars.c | 1 src/mesa/shader/shader_api.c | 2 src/mesa/shader/slang/slang_builtin.c | 1 src/mesa/shader/slang/slang_compile.c | 3 src/mesa/shader/slang/slang_emit.c | 1 src/mesa/shader/slang/slang_link.c | 1 src/mesa/shader/slang/slang_log.c | 1 src/mesa/state_tracker/st_atom_framebuffer.c | 1 src/mesa/state_tracker/st_atom_pixeltransfer.c | 1 src/mesa/state_tracker/st_atom_sampler.c | 1 src/mesa/state_tracker/st_atom_scissor.c | 17 src/mesa/state_tracker/st_atom_shader.c | 3 src/mesa/state_tracker/st_cb_accum.c | 2 src/mesa/state_tracker/st_cb_bitmap.c | 15 src/mesa/state_tracker/st_cb_blit.c | 4 src/mesa/state_tracker/st_cb_clear.c | 11 src/mesa/state_tracker/st_cb_drawpixels.c | 6 src/mesa/state_tracker/st_cb_fbo.c | 1 src/mesa/state_tracker/st_cb_feedback.c | 3 src/mesa/state_tracker/st_cb_program.c | 1 src/mesa/state_tracker/st_cb_queryobj.c | 1 src/mesa/state_tracker/st_cb_rasterpos.c | 1 src/mesa/state_tracker/st_cb_readpixels.c | 2 src/mesa/state_tracker/st_cb_strings.c | 1 src/mesa/state_tracker/st_cb_texture.c | 58 src/mesa/state_tracker/st_cb_viewport.c | 7 src/mesa/state_tracker/st_context.c | 6 src/mesa/state_tracker/st_draw_feedback.c | 1 src/mesa/state_tracker/st_extensions.c | 1 src/mesa/state_tracker/st_format.c | 3 src/mesa/state_tracker/st_framebuffer.c | 4 src/mesa/state_tracker/st_gen_mipmap.c | 2 src/mesa/state_tracker/st_inlines.h | 10 src/mesa/state_tracker/st_program.c | 1 src/mesa/state_tracker/st_texture.c | 1 src/mesa/swrast/s_accum.c | 1 src/mesa/swrast/s_atifragshader.c | 1 src/mesa/swrast/s_bitmap.c | 1 src/mesa/swrast/s_copypix.c | 2 src/mesa/swrast/s_depth.c | 42 src/mesa/swrast/s_drawpix.c | 1 src/mesa/swrast/s_feedback.c | 1 src/mesa/swrast/s_fragprog.c | 1 src/mesa/swrast/s_lines.c | 1 src/mesa/swrast/s_points.c | 1 src/mesa/swrast/s_readpix.c | 1 src/mesa/swrast/s_span.c | 7 src/mesa/swrast/s_texcombine.c | 1 src/mesa/tnl/t_context.c | 1 src/mesa/tnl/t_draw.c | 4 src/mesa/tnl/t_pipeline.c | 1 src/mesa/tnl/t_rasterpos.c | 1 src/mesa/tnl/t_vb_program.c | 1 src/mesa/vbo/vbo_exec.c | 3 src/mesa/vbo/vbo_exec_array.c | 15 src/mesa/vbo/vbo_exec_draw.c | 1 src/mesa/vbo/vbo_save.c | 2 src/mesa/vbo/vbo_save_loopback.c | 1 src/mesa/vbo/vbo_split_copy.c | 3 src/mesa/x86/assyntax.h | 4 src/mesa/x86/glapi_x86.S | 2 src/mesa/x86/read_rgba_span_x86.S | 4 src/mesa/x86/x86_xform.c | 1 357 files changed, 1614 insertions(+), 2124 deletions(-)
New commits: commit 2f28ca0a27cb0c539affb22c487c4bb44b6d54b4 Author: Dave Airlie <airl...@redhat.com> Date: Wed Jan 27 11:46:26 2010 +1000 radeon/r200/r300: don't clean non-emitted state. So if we don't actually emit an atom to the hw because we don't need it in the current state (e.g. lighting related atoms when lighting is off) then don't mark it as clean, because when lighting gets switched on we won't emit it at all. This fixes funky gears colors. Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index 9b64c21..47bc252 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -1015,10 +1015,11 @@ static INLINE void radeon_emit_atom(radeonContextPtr radeon, struct radeon_state OUT_BATCH_TABLE(atom->cmd, dwords); END_BATCH(); } + atom->dirty = GL_FALSE; + } else { radeon_print(RADEON_STATE, RADEON_VERBOSE, " skip state %s\n", atom->name); } - atom->dirty = GL_FALSE; } commit 0580e488daba592d442ab8a45aa8441064dd2705 Author: Dave Airlie <airl...@redhat.com> Date: Wed Jan 27 11:02:32 2010 +1000 radeon: remove unused file diff --git a/src/mesa/drivers/dri/radeon/radeon_lighting.c b/src/mesa/drivers/dri/radeon/radeon_lighting.c deleted file mode 100644 index ba444f2..0000000 --- a/src/mesa/drivers/dri/radeon/radeon_lighting.c +++ /dev/null @@ -1,681 +0,0 @@ -/* - * Copyright 2000, 2001 VA Linux Systems Inc., Fremont, California. - * - * 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 - * 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 - * VA LINUX SYSTEMS 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. - * - * Authors: - * Gareth Hughes <gar...@valinux.com> - * Keith Whitwell <ke...@tungstengraphics.com> - */ - -#include "main/glheader.h" -#include "main/imports.h" -#include "api_arrayelt.h" -/* #include "mmath.h" */ -#include "main/enums.h" -#include "colormac.h" - - -#include "radeon_context.h" -#include "radeon_ioctl.h" -#include "radeon_state.h" -#include "radeon_tcl.h" -#include "radeon_tex.h" -#include "radeon_vtxfmt.h" - - - -/* ============================================================= - * Materials - */ - - -/* Update on colormaterial, material emmissive/ambient, - * lightmodel.globalambient - */ -void update_global_ambient( GLcontext *ctx ) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - float *fcmd = (float *)RADEON_DB_STATE( glt ); - - /* Need to do more if both emmissive & ambient are PREMULT: - */ - if ((rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] & - ((3 << RADEON_EMISSIVE_SOURCE_SHIFT) | - (3 << RADEON_AMBIENT_SOURCE_SHIFT))) == 0) - { - COPY_3V( &fcmd[GLT_RED], - ctx->Light.Material[0].Emission); - ACC_SCALE_3V( &fcmd[GLT_RED], - ctx->Light.Model.Ambient, - ctx->Light.Material[0].Ambient); - } - else - { - COPY_3V( &fcmd[GLT_RED], ctx->Light.Model.Ambient ); - } - - RADEON_DB_STATECHANGE(rmesa, &rmesa->hw.glt); -} - -/* Update on change to - * - light[p].colors - * - light[p].enabled - * - material, - * - colormaterial enabled - * - colormaterial bitmask - */ -void update_light_colors( GLcontext *ctx, GLuint p ) -{ - struct gl_light *l = &ctx->Light.Light[p]; - -/* fprintf(stderr, "%s\n", __FUNCTION__); */ - - if (l->Enabled) { - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - float *fcmd = (float *)RADEON_DB_STATE( lit[p] ); - GLuint bitmask = ctx->Light.ColorMaterialBitmask; - struct gl_material *mat = &ctx->Light.Material[0]; - - COPY_4V( &fcmd[LIT_AMBIENT_RED], l->Ambient ); - COPY_4V( &fcmd[LIT_DIFFUSE_RED], l->Diffuse ); - COPY_4V( &fcmd[LIT_SPECULAR_RED], l->Specular ); - - if (!ctx->Light.ColorMaterialEnabled) - bitmask = 0; - - if ((bitmask & FRONT_AMBIENT_BIT) == 0) - SELF_SCALE_3V( &fcmd[LIT_AMBIENT_RED], mat->Ambient ); - - if ((bitmask & FRONT_DIFFUSE_BIT) == 0) - SELF_SCALE_3V( &fcmd[LIT_DIFFUSE_RED], mat->Diffuse ); - - if ((bitmask & FRONT_SPECULAR_BIT) == 0) - SELF_SCALE_3V( &fcmd[LIT_SPECULAR_RED], mat->Specular ); - - RADEON_DB_STATECHANGE( rmesa, &rmesa->hw.lit[p] ); - } -} - -/* Also fallback for asym colormaterial mode in twoside lighting... - */ -void check_twoside_fallback( GLcontext *ctx ) -{ - GLboolean fallback = GL_FALSE; - - if (ctx->Light.Enabled && ctx->Light.Model.TwoSide) { - if (memcmp( &ctx->Light.Material[0], - &ctx->Light.Material[1], - sizeof(struct gl_material)) != 0) - fallback = GL_TRUE; - else if (ctx->Light.ColorMaterialEnabled && - (ctx->Light.ColorMaterialBitmask & BACK_MATERIAL_BITS) != - ((ctx->Light.ColorMaterialBitmask & FRONT_MATERIAL_BITS)<<1)) - fallback = GL_TRUE; - } - - TCL_FALLBACK( ctx, RADEON_TCL_FALLBACK_LIGHT_TWOSIDE, fallback ); -} - -void radeonColorMaterial( GLcontext *ctx, GLenum face, GLenum mode ) -{ - if (ctx->Light.ColorMaterialEnabled) { - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - GLuint light_model_ctl = rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL]; - GLuint mask = ctx->Light.ColorMaterialBitmask; - - /* Default to PREMULT: - */ - light_model_ctl &= ~((3 << RADEON_EMISSIVE_SOURCE_SHIFT) | - (3 << RADEON_AMBIENT_SOURCE_SHIFT) | - (3 << RADEON_DIFFUSE_SOURCE_SHIFT) | - (3 << RADEON_SPECULAR_SOURCE_SHIFT)); - - if (mask & FRONT_EMISSION_BIT) { - light_model_ctl |= (RADEON_LM_SOURCE_VERTEX_DIFFUSE << - RADEON_EMISSIVE_SOURCE_SHIFT); - } - - if (mask & FRONT_AMBIENT_BIT) { - light_model_ctl |= (RADEON_LM_SOURCE_VERTEX_DIFFUSE << - RADEON_AMBIENT_SOURCE_SHIFT); - } - - if (mask & FRONT_DIFFUSE_BIT) { - light_model_ctl |= (RADEON_LM_SOURCE_VERTEX_DIFFUSE << - RADEON_DIFFUSE_SOURCE_SHIFT); - } - - if (mask & FRONT_SPECULAR_BIT) { - light_model_ctl |= (RADEON_LM_SOURCE_VERTEX_DIFFUSE << - RADEON_SPECULAR_SOURCE_SHIFT); - } - - if (light_model_ctl != rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL]) { - GLuint p; - - RADEON_STATECHANGE( rmesa, tcl ); - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] = light_model_ctl; - - for (p = 0 ; p < MAX_LIGHTS; p++) - update_light_colors( ctx, p ); - update_global_ambient( ctx ); - } - } - - check_twoside_fallback( ctx ); -} - -void radeonUpdateMaterial( GLcontext *ctx ) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - GLfloat *fcmd = (GLfloat *)RADEON_DB_STATE( mtl ); - GLuint p; - GLuint mask = ~0; - - if (ctx->Light.ColorMaterialEnabled) - mask &= ~ctx->Light.ColorMaterialBitmask; - - if (RADEON_DEBUG & RADEON_STATE) - fprintf(stderr, "%s\n", __FUNCTION__); - - - if (mask & FRONT_EMISSION_BIT) { - fcmd[MTL_EMMISSIVE_RED] = ctx->Light.Material[0].Emission[0]; - fcmd[MTL_EMMISSIVE_GREEN] = ctx->Light.Material[0].Emission[1]; - fcmd[MTL_EMMISSIVE_BLUE] = ctx->Light.Material[0].Emission[2]; - fcmd[MTL_EMMISSIVE_ALPHA] = ctx->Light.Material[0].Emission[3]; - } - if (mask & FRONT_AMBIENT_BIT) { - fcmd[MTL_AMBIENT_RED] = ctx->Light.Material[0].Ambient[0]; - fcmd[MTL_AMBIENT_GREEN] = ctx->Light.Material[0].Ambient[1]; - fcmd[MTL_AMBIENT_BLUE] = ctx->Light.Material[0].Ambient[2]; - fcmd[MTL_AMBIENT_ALPHA] = ctx->Light.Material[0].Ambient[3]; - } - if (mask & FRONT_DIFFUSE_BIT) { - fcmd[MTL_DIFFUSE_RED] = ctx->Light.Material[0].Diffuse[0]; - fcmd[MTL_DIFFUSE_GREEN] = ctx->Light.Material[0].Diffuse[1]; - fcmd[MTL_DIFFUSE_BLUE] = ctx->Light.Material[0].Diffuse[2]; - fcmd[MTL_DIFFUSE_ALPHA] = ctx->Light.Material[0].Diffuse[3]; - } - if (mask & FRONT_SPECULAR_BIT) { - fcmd[MTL_SPECULAR_RED] = ctx->Light.Material[0].Specular[0]; - fcmd[MTL_SPECULAR_GREEN] = ctx->Light.Material[0].Specular[1]; - fcmd[MTL_SPECULAR_BLUE] = ctx->Light.Material[0].Specular[2]; - fcmd[MTL_SPECULAR_ALPHA] = ctx->Light.Material[0].Specular[3]; - } - if (mask & FRONT_SHININESS_BIT) { - fcmd[MTL_SHININESS] = ctx->Light.Material[0].Shininess; - } - - if (RADEON_DB_STATECHANGE( rmesa, &rmesa->hw.mtl )) { - for (p = 0 ; p < MAX_LIGHTS; p++) - update_light_colors( ctx, p ); - - check_twoside_fallback( ctx ); - update_global_ambient( ctx ); - } - else if (RADEON_DEBUG & (RADEON_PRIMS|DEBUG_STATE)) - fprintf(stderr, "%s: Elided noop material call\n", __FUNCTION__); -} - -/* _NEW_LIGHT - * _NEW_MODELVIEW - * _MESA_NEW_NEED_EYE_COORDS - * - * Uses derived state from mesa: - * _VP_inf_norm - * _h_inf_norm - * _Position - * _NormSpotDirection - * _ModelViewInvScale - * _NeedEyeCoords - * _EyeZDir - * - * which are calculated in light.c and are correct for the current - * lighting space (model or eye), hence dependencies on _NEW_MODELVIEW - * and _MESA_NEW_NEED_EYE_COORDS. - */ -void radeonUpdateLighting( GLcontext *ctx ) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - - /* Have to check these, or have an automatic shortcircuit mechanism - * to remove noop statechanges. (Or just do a better job on the - * front end). - */ - { - GLuint tmp = rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL]; - - if (ctx->_NeedEyeCoords) - tmp &= ~RADEON_LIGHT_IN_MODELSPACE; - else - tmp |= RADEON_LIGHT_IN_MODELSPACE; - - - /* Leave this test disabled: (unexplained q3 lockup) (even with - new packets) - */ - if (tmp != rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL]) - { - RADEON_STATECHANGE( rmesa, tcl ); - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] = tmp; - } - } - - { - GLfloat *fcmd = (GLfloat *)RADEON_DB_STATE( eye ); - fcmd[EYE_X] = ctx->_EyeZDir[0]; - fcmd[EYE_Y] = ctx->_EyeZDir[1]; - fcmd[EYE_Z] = - ctx->_EyeZDir[2]; - fcmd[EYE_RESCALE_FACTOR] = ctx->_ModelViewInvScale; - RADEON_DB_STATECHANGE( rmesa, &rmesa->hw.eye ); - } - - -/* RADEON_STATECHANGE( rmesa, glt ); */ - - if (ctx->Light.Enabled) { - GLint p; - for (p = 0 ; p < MAX_LIGHTS; p++) { - if (ctx->Light.Light[p].Enabled) { - struct gl_light *l = &ctx->Light.Light[p]; - GLfloat *fcmd = (GLfloat *)RADEON_DB_STATE( lit[p] ); - - if (l->EyePosition[3] == 0.0) { - COPY_3FV( &fcmd[LIT_POSITION_X], l->_VP_inf_norm ); - COPY_3FV( &fcmd[LIT_DIRECTION_X], l->_h_inf_norm ); - fcmd[LIT_POSITION_W] = 0; - fcmd[LIT_DIRECTION_W] = 0; - } else { - COPY_4V( &fcmd[LIT_POSITION_X], l->_Position ); - fcmd[LIT_DIRECTION_X] = -l->_NormSpotDirection[0]; - fcmd[LIT_DIRECTION_Y] = -l->_NormSpotDirection[1]; - fcmd[LIT_DIRECTION_Z] = -l->_NormSpotDirection[2]; - fcmd[LIT_DIRECTION_W] = 0; - } - - RADEON_DB_STATECHANGE( rmesa, &rmesa->hw.lit[p] ); - } - } - } -} - - -void radeonLightfv( GLcontext *ctx, GLenum light, - GLenum pname, const GLfloat *params ) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - GLint p = light - GL_LIGHT0; - struct gl_light *l = &ctx->Light.Light[p]; - GLfloat *fcmd = (GLfloat *)rmesa->hw.lit[p].cmd; - - - switch (pname) { - case GL_AMBIENT: - case GL_DIFFUSE: - case GL_SPECULAR: - update_light_colors( ctx, p ); - break; - - case GL_SPOT_DIRECTION: - /* picked up in update_light */ - break; - - case GL_POSITION: { - /* positions picked up in update_light, but can do flag here */ - GLuint flag = (p&1)? RADEON_LIGHT_1_IS_LOCAL : RADEON_LIGHT_0_IS_LOCAL; - GLuint idx = TCL_PER_LIGHT_CTL_0 + p/2; - - RADEON_STATECHANGE(rmesa, tcl); - if (l->EyePosition[3] != 0.0F) - rmesa->hw.tcl.cmd[idx] |= flag; - else - rmesa->hw.tcl.cmd[idx] &= ~flag; - break; - } - - case GL_SPOT_EXPONENT: - RADEON_STATECHANGE(rmesa, lit[p]); - fcmd[LIT_SPOT_EXPONENT] = params[0]; - break; - - case GL_SPOT_CUTOFF: { - GLuint flag = (p&1) ? RADEON_LIGHT_1_IS_SPOT : RADEON_LIGHT_0_IS_SPOT; - GLuint idx = TCL_PER_LIGHT_CTL_0 + p/2; - - RADEON_STATECHANGE(rmesa, lit[p]); - fcmd[LIT_SPOT_CUTOFF] = l->_CosCutoff; - - RADEON_STATECHANGE(rmesa, tcl); - if (l->SpotCutoff != 180.0F) - rmesa->hw.tcl.cmd[idx] |= flag; - else - rmesa->hw.tcl.cmd[idx] &= ~flag; - break; - } - - case GL_CONSTANT_ATTENUATION: - RADEON_STATECHANGE(rmesa, lit[p]); - fcmd[LIT_ATTEN_CONST] = params[0]; - break; - case GL_LINEAR_ATTENUATION: - RADEON_STATECHANGE(rmesa, lit[p]); - fcmd[LIT_ATTEN_LINEAR] = params[0]; - break; - case GL_QUADRATIC_ATTENUATION: - RADEON_STATECHANGE(rmesa, lit[p]); - fcmd[LIT_ATTEN_QUADRATIC] = params[0]; - break; - default: - return; - } - -} - - - - -void radeonLightModelfv( GLcontext *ctx, GLenum pname, - const GLfloat *param ) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - - switch (pname) { - case GL_LIGHT_MODEL_AMBIENT: - update_global_ambient( ctx ); - break; - - case GL_LIGHT_MODEL_LOCAL_VIEWER: - RADEON_STATECHANGE( rmesa, tcl ); - if (ctx->Light.Model.LocalViewer) - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] |= RADEON_LOCAL_VIEWER; - else - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] &= ~RADEON_LOCAL_VIEWER; - break; - - case GL_LIGHT_MODEL_TWO_SIDE: - RADEON_STATECHANGE( rmesa, tcl ); - if (ctx->Light.Model.TwoSide) - rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] |= RADEON_LIGHT_TWOSIDE; - else - rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] &= ~RADEON_LIGHT_TWOSIDE; - - check_twoside_fallback( ctx ); - -#if _HAVE_SWTNL - if (rmesa->TclFallback) { - radeonChooseRenderState( ctx ); - radeonChooseVertexState( ctx ); - } -#endif - break; - - case GL_LIGHT_MODEL_COLOR_CONTROL: - radeonUpdateSpecular(ctx); - - RADEON_STATECHANGE( rmesa, tcl ); - if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR) - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] &= - ~RADEON_DIFFUSE_SPECULAR_COMBINE; - else - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] |= - RADEON_DIFFUSE_SPECULAR_COMBINE; - break; - - default: - break; - } -} - - -/* ============================================================= - * Fog - */ - - -static void radeonFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - union { int i; float f; } c, d; - GLchan col[4]; - - c.i = rmesa->hw.fog.cmd[FOG_C]; - d.i = rmesa->hw.fog.cmd[FOG_D]; - - switch (pname) { - case GL_FOG_MODE: - if (!ctx->Fog.Enabled) - return; - RADEON_STATECHANGE(rmesa, tcl); - rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] &= ~RADEON_TCL_FOG_MASK; - switch (ctx->Fog.Mode) { - case GL_LINEAR: - rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] |= RADEON_TCL_FOG_LINEAR; - if (ctx->Fog.Start == ctx->Fog.End) { - c.f = 1.0F; - d.f = 1.0F; - } - else { - c.f = ctx->Fog.End/(ctx->Fog.End-ctx->Fog.Start); - d.f = 1.0/(ctx->Fog.End-ctx->Fog.Start); - } - break; - case GL_EXP: - rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] |= RADEON_TCL_FOG_EXP; - c.f = 0.0; - d.f = ctx->Fog.Density; - break; - case GL_EXP2: - rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] |= RADEON_TCL_FOG_EXP2; - c.f = 0.0; - d.f = -(ctx->Fog.Density * ctx->Fog.Density); - break; - default: - return; - } - break; - case GL_FOG_DENSITY: - switch (ctx->Fog.Mode) { - case GL_EXP: - c.f = 0.0; - d.f = ctx->Fog.Density; - break; - case GL_EXP2: - c.f = 0.0; - d.f = -(ctx->Fog.Density * ctx->Fog.Density); - break; - default: - break; - } - break; - case GL_FOG_START: - case GL_FOG_END: - if (ctx->Fog.Mode == GL_LINEAR) { - if (ctx->Fog.Start == ctx->Fog.End) { - c.f = 1.0F; - d.f = 1.0F; - } else { - c.f = ctx->Fog.End/(ctx->Fog.End-ctx->Fog.Start); - d.f = 1.0/(ctx->Fog.End-ctx->Fog.Start); - } - } - break; - case GL_FOG_COLOR: - RADEON_STATECHANGE( rmesa, ctx ); - UNCLAMPED_FLOAT_TO_RGB_CHAN( col, ctx->Fog.Color ); - rmesa->hw.ctx.cmd[CTX_PP_FOG_COLOR] = - radeonPackColor( 4, col[0], col[1], col[2], 0 ); - break; - case GL_FOG_COORDINATE_SOURCE_EXT: - /* What to do? - */ - break; - default: - return; - } - - if (c.i != rmesa->hw.fog.cmd[FOG_C] || d.i != rmesa->hw.fog.cmd[FOG_D]) { - RADEON_STATECHANGE( rmesa, fog ); - rmesa->hw.fog.cmd[FOG_C] = c.i; - rmesa->hw.fog.cmd[FOG_D] = d.i; - } -} - -/* Examine lighting and texture state to determine if separate specular - * should be enabled. - */ -void radeonUpdateSpecular( GLcontext *ctx ) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - GLuint p = rmesa->hw.ctx.cmd[CTX_PP_CNTL]; - - if (NEED_SECONDARY_COLOR(ctx)) { - p |= RADEON_SPECULAR_ENABLE; - } else { - p &= ~RADEON_SPECULAR_ENABLE; - } - - if ( rmesa->hw.ctx.cmd[CTX_PP_CNTL] != p ) { - RADEON_STATECHANGE( rmesa, ctx ); - rmesa->hw.ctx.cmd[CTX_PP_CNTL] = p; - } - - /* Bizzare: have to leave lighting enabled to get fog. - */ - RADEON_STATECHANGE( rmesa, tcl ); - if ((ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)) { - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] |= RADEON_TCL_COMPUTE_SPECULAR; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] |= RADEON_TCL_COMPUTE_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] |= RADEON_TCL_VTX_PK_SPEC; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] |= RADEON_TCL_VTX_PK_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] |= RADEON_LIGHTING_ENABLE; - } - else if (ctx->Fog.Enabled) { - if (ctx->Light.Enabled) { - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] |= RADEON_TCL_COMPUTE_SPECULAR; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] |= RADEON_TCL_COMPUTE_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] |= RADEON_TCL_VTX_PK_SPEC; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] |= RADEON_TCL_VTX_PK_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] |= RADEON_LIGHTING_ENABLE; - } else { - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] |= RADEON_TCL_COMPUTE_SPECULAR; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] &= ~RADEON_TCL_COMPUTE_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] |= RADEON_TCL_VTX_PK_SPEC; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] |= RADEON_TCL_VTX_PK_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] |= RADEON_LIGHTING_ENABLE; - } - } - else if (ctx->Light.Enabled) { - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] &= ~RADEON_TCL_COMPUTE_SPECULAR; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXSEL] |= RADEON_TCL_COMPUTE_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] &= ~RADEON_TCL_VTX_PK_SPEC; - rmesa->hw.tcl.cmd[TCL_OUTPUT_VTXFMT] |= RADEON_TCL_VTX_PK_DIFFUSE; - rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL] |= RADEON_LIGHTING_ENABLE; - } else if (ctx->Fog.ColorSumEnabled ) { -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org