1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
---|
2 | <html lang="en">
|
---|
3 | <head>
|
---|
4 | <meta http-equiv="content-type" content="text/html; charset=utf-8">
|
---|
5 | <title>Development Notes</title>
|
---|
6 | <link rel="stylesheet" type="text/css" href="mesa.css">
|
---|
7 | </head>
|
---|
8 | <body>
|
---|
9 |
|
---|
10 | <div class="header">
|
---|
11 | <h1>The Mesa 3D Graphics Library</h1>
|
---|
12 | </div>
|
---|
13 |
|
---|
14 | <iframe src="contents.html"></iframe>
|
---|
15 | <div class="content">
|
---|
16 |
|
---|
17 | <h1>Development Notes</h1>
|
---|
18 |
|
---|
19 |
|
---|
20 | <ul>
|
---|
21 | <li><a href="#extensions">Adding Extensions</a>
|
---|
22 | </ul>
|
---|
23 |
|
---|
24 | <h2 id="extensions">Adding Extensions</h2>
|
---|
25 |
|
---|
26 | <p>
|
---|
27 | To add a new GL extension to Mesa you have to do at least the following.
|
---|
28 |
|
---|
29 | <ul>
|
---|
30 | <li>
|
---|
31 | If glext.h doesn't define the extension, edit include/GL/gl.h and add
|
---|
32 | code like this:
|
---|
33 | <pre>
|
---|
34 | #ifndef GL_EXT_the_extension_name
|
---|
35 | #define GL_EXT_the_extension_name 1
|
---|
36 | /* declare the new enum tokens */
|
---|
37 | /* prototype the new functions */
|
---|
38 | /* TYPEDEFS for the new functions */
|
---|
39 | #endif
|
---|
40 | </pre>
|
---|
41 | </li>
|
---|
42 | <li>
|
---|
43 | In the src/mapi/glapi/gen/ directory, add the new extension functions and
|
---|
44 | enums to the gl_API.xml file.
|
---|
45 | Then, a bunch of source files must be regenerated by executing the
|
---|
46 | corresponding Python scripts.
|
---|
47 | </li>
|
---|
48 | <li>
|
---|
49 | Add a new entry to the <code>gl_extensions</code> struct in mtypes.h
|
---|
50 | if the extension requires driver capabilities not already exposed by
|
---|
51 | another extension.
|
---|
52 | </li>
|
---|
53 | <li>
|
---|
54 | Add a new entry to the src/mesa/main/extensions_table.h file.
|
---|
55 | </li>
|
---|
56 | <li>
|
---|
57 | From this point, the best way to proceed is to find another extension,
|
---|
58 | similar to the new one, that's already implemented in Mesa and use it
|
---|
59 | as an example.
|
---|
60 | </li>
|
---|
61 | <li>
|
---|
62 | If the new extension adds new GL state, the functions in get.c, enable.c
|
---|
63 | and attrib.c will most likely require new code.
|
---|
64 | </li>
|
---|
65 | <li>
|
---|
66 | To determine if the new extension is active in the current context,
|
---|
67 | use the auto-generated _mesa_has_##name_str() function defined in
|
---|
68 | src/mesa/main/extensions.h.
|
---|
69 | </li>
|
---|
70 | <li>
|
---|
71 | The dispatch tests check_table.cpp and dispatch_sanity.cpp
|
---|
72 | should be updated with details about the new extensions functions. These
|
---|
73 | tests are run using 'make check'
|
---|
74 | </li>
|
---|
75 | </ul>
|
---|
76 | </p>
|
---|
77 |
|
---|
78 |
|
---|
79 |
|
---|
80 |
|
---|
81 | </div>
|
---|
82 | </body>
|
---|
83 | </html>
|
---|