~ubuntu-branches/ubuntu/precise/mesa/precise-updates

« back to all changes in this revision

Viewing changes to src/mesa/tnl/NOTES

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers
  • Date: 2011-08-04 16:25:08 UTC
  • mfrom: (1.2.37 upstream)
  • Revision ID: james.westby@ubuntu.com-20110804162508-kujg82moxerjg1kk
Tags: 7.11-0ubuntu1
* Fake merge from Debian experimental, updating previous changelog entries.
  New upstream release fixes infrequent X crash (LP: #800778).
  Remaining Ubuntu changes:
 - debian/control
    + Drop lesstif-dev from Build-Depends; it's in Universe.
    + Comment out GLw libs since it depends on lesstif-dev.
    + Drop i686 swx11 libgl package.
    + Add libdrm-dev to mesa-common-dev Depends.
    + Drop libwayland-dev from Build-Depends; it's in Universe.
    + Update Breaks for Ubuntu versions
    + Enable llvm on armel as well as i386 and amd64
  - debian/rules
    + Use --disable-glw for swx11 targets too.
    + Don't enable motif for swx11 targets.
    + Use lzma compression for binary debs to save CD space.
    + Drop unloved mach64 driver.
    + Use --enable-shared-dricore to claw back CD space.
    + Enable llvmpipe software rasteriser.
    + Enable llvm on armel as well as i386 and amd64
  - debian/patches
    + 100_no_abi_tag.patch
    + 101_ubuntu_hidden_glname.patch
    + 103_savage-expose_fbmodes_with_nonzero_alpha.patch
  - rules, libgl1-mesa-{glx,dev,swx11,swx11-dev}.install.in,
    libgl1-mesa-{glx,swx11}.{postinst,prerm}.in, libgl1-mesa-dev.links.in:
    Install libGL.so* in /usr/lib/mesa to allow things to work with
    alternatives.
  - debian/not-installed:
    + Drop i686 files; we don't build 686-optimised packages in the first
      place.
  - debian/gbp.conf
    + Point at Ubuntu branch to make git-buildpackage less narky.
  - 113_fix_tls.diff: Fix crashes in unrelated code due to TLS usage.
  - debian/patches/111_export_searchdirs_in_dripc.diff:
    + Add drisearchdirs variable to dri.pc so the Xserver can pick up the
      alternate DRI driver dirs.
  - debian/patches/115_llvm_dynamic_linking.diff
    + Dynamically link DRI drivers to libllvm.  Saves ~6MiB per DRI driver.
  - debian/patches/116_use_shared_galliumcore.diff:
  - debian/libgl1-mesa-dri.install.in:
    + Link gallium DRI drivers against shared gallium routines to save CD
      space.
* debian/rules:
* debian/libgl1-mesa-dri-experimental.install.{i386,amd64}.in
  - Explicitly install i915g only when it has been built, matching what is
    done with r300g.
* debian/rules:
* debian/control:
* debian/libegl1-mesa{,-dev}.install.in:
* debian/libegl1-mesa.symbols:
  - Enable the Wayland EGL backend.
* debian/rules:
* debian/libegl1-mesa.{postinst,prerm,install}.in:
* debian/libegl1-mesa-dev.{install,links}.in:
* debian/libgles{1,2}-mesa.install.in:
* debian/libgles{1,2}-mesa-dev.links.in:
* debian/libopenvg1-mesa{,-dev}.install.in:
* debian/libopenvg1-mesa-dev.links.in:
  - Use alternatives for libEGL to match the handling of libGL.
    libEGL (and associated GL|ES and OpenVG libraries) now live in
    /usr/lib/$MULTIARCH/mesa-egl.  (LP: #812639)
* debian/patches/118_fix_24bpp_software_rendering.diff:
  - Cherry pick upstream patch from master fixing graphical corruption when
    using a 24bpp framebuffer and software rendering. (LP: #810339)
* debian/rules:
* debian/clean:
  - Generate xmlpool pot file and clean up other po files for
    pkgbinarymangler's benefit (LP: #410264).
* debian/patches/119_r600g_gnome_shell_rendering_fix.diff:
  - Cherry pick upstream commit fixing rendering corruption in gnome-shell
    (and therefore likely Unity as well).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
INTRODUCTION
2
 
 
3
 
A generic, configurable software implementation of GL transformation &
4
 
lighting.
5
 
 
6
 
This module provides an implementation of the routines required by the
7
 
'vtxfmt' mechanism of core mesa for tnl functionality in all
8
 
combinations of compile and execute modes.
9
 
 
10
 
Most current drivers use the tnl module exclusively to provide this
11
 
functionality, though there is an experimental alternate
12
 
implementation provided by the tnl_dd/t_dd_imm_* files which can
13
 
handle a small subset of GL states in execute mode only.
14
 
 
15
 
 
16
 
STATE
17
 
 
18
 
To create and destroy the module:
19
 
 
20
 
        GLboolean _tnl_CreateContext( struct gl_context *ctx );
21
 
        void _tnl_DestroyContext( struct gl_context *ctx );
22
 
 
23
 
The module is not active by default, and must be installed by calling
24
 
_tnl_Wakeup().  This function installs internal tnl functions into all
25
 
the vtxfmt dispatch hooks, thus taking over the task of transformation
26
 
and lighting entirely:
27
 
 
28
 
        void _tnl_wakeup_exec( struct gl_context *ctx );
29
 
        void _tnl_wakeup_save_exec( struct gl_context *ctx );
30
 
 
31
 
   
32
 
This module tracks state changes internally and maintains derived
33
 
values based on the current state.  For this to work, the driver
34
 
ensure the following funciton is called whenever the state changes and
35
 
the swsetup module is 'awake':
36
 
 
37
 
        void _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state );
38
 
 
39
 
There is no explicit call to put the tnl module to sleep.  Simply
40
 
install other function pointers into all the vtxfmt dispatch slots,
41
 
and (optionally) cease calling _tnl_InvalidateState().
42
 
 
43
 
CUSTOMIZATION
44
 
 
45
 
The module provides customizability through several mechanisms.  The
46
 
most important is by allowing drivers to specify the pipeline through
47
 
which vertex data is passed, including its eventual transfer to
48
 
rasterization hardware (or software).
49
 
 
50
 
The default pipeline is specified in t_pipeline.c, and is usually a
51
 
starting point for driver pipelines.  Some drivers will remove a stage
52
 
where hardware provides support for the implemented operation (for
53
 
instance fog where per-pixel hardware fog is available, as in the dri
54
 
tdfx driver), or add stages to shortcircuit latter operations (for
55
 
example taking advantage of hardware support for strips and other
56
 
higher-level primitives (for example the radeon driver).
57
 
 
58
 
In addition, the following functions provide further tweaks:
59
 
 
60
 
extern void
61
 
_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag );
62
 
 
63
 
        - Direct the default vertex transformation stage to
64
 
          produce/not produce projected clip coordinates.
65
 
          
66
 
extern void
67
 
_tnl_need_dlist_loopback( struct gl_context *ctx, GLboolean flag );
68
 
      
69
 
        - Direct the display list component of the tnl module to
70
 
          replay display lists as 'glVertex' type calls, rather than
71
 
          passing the display list data directly into the tnl pipeline
72
 
          mechanism.  
73
 
 
74
 
          This allows display lists to be replayed by the tnl module
75
 
          even when the module is not strictly active.
76
 
 
77
 
 
78
 
extern void
79
 
_tnl_need_dlist_norm_lengths( struct gl_context *ctx, GLboolean flag );
80
 
 
81
 
        - Direct the display list component to enable/disable caching
82
 
          1/length values for display list normals.  Doing so is
83
 
          ususally helpful when lighting is performed in software, but
84
 
          wasteful otherwise.
85
 
 
86
 
 
87
 
DRIVER INTERFACE
88
 
 
89
 
The module itself offers a minimal driver interface:
90
 
 
91
 
         void (*RunPipeline)( struct gl_context *ctx );
92
 
 
93
 
Normally this is set to _tnl_RunPipeline(), however the driver can use
94
 
this hook to wrap checks or other code around this call. 
95
 
 
96
 
In addition, the driver interface for the default render pipeline
97
 
stage is housed in the tnl context struct (this could be cleaner).  
98
 
 
99
 
 
100
 
RENDER DRIVER INTERFACE
101
 
 
102
 
See t_context.h for the definition and explanation of this.
 
 
b'\\ No newline at end of file'