Development Notes
=================
-- `Adding Extensions <#extensions>`__
-
-.. _extensions:
-
Adding Extensions
-----------------
Last updated: 19 September 2018
-Index
------
-
-#. `High-level Questions and Answers <#part1>`__
-#. `Compilation and Installation Problems <#part2>`__
-#. `Runtime / Rendering Problems <#part3>`__
-#. `Developer Questions <#part4>`__
-
-.. _part1:
-
1. High-level Questions and Answers
-----------------------------------
There may be other open OpenGL implementations, but Mesa is the most
popular and feature-complete.
-.. _part2:
-
2. Compilation and Installation Problems
----------------------------------------
``meson configure --prefix=/usr --libdir=xxx -D dri-drivers-path=xxx``
and then install with ``sudo ninja install``.
-.. _part3:
-
3. Runtime / Rendering Problems
-------------------------------
translation of (0.375, 0.375, 0.0) to your coordinates will fix the
problem.
-.. _part4:
-
4. Developer Questions
----------------------
meson
-#. `Prerequisites for building <#prereq-general>`__
-
- - `General prerequisites <#prereq-general>`__
- - `For DRI and hardware acceleration <#prereq-dri>`__
-
-#. `Building with meson <#meson>`__
-#. `Building with SCons (Windows/Linux) <#scons>`__
-#. `Building with AOSP (Android) <#android>`__
-#. `Library Information <#libs>`__
-#. `Building OpenGL programs with pkg-config <#pkg-config>`__
-
-.. _prereq-general:
-
1. Prerequisites for building
-----------------------------
Some versions can be buggy (eg. flex 2.6.2) so do try others
if things fail.
-.. _prereq-dri:
-
1.2 Requirements
~~~~~~~~~~~~~~~~
apt-get build-dep mesa # Debian and derivatives
... # others
-.. _meson:
-
2. Building with meson
----------------------
Please read the `detailed meson instructions <meson.html>`__ for more
information
-.. _scons:
-
3. Building with SCons (Windows/Linux)
--------------------------------------
Put them all in the same directory to test them. Additional information
is available in `README.WIN32 <README.WIN32>`__.
-.. _android:
-
4. Building with AOSP (Android)
-------------------------------
FINISHME: Improve on the instructions add references to Rob H
repos/Jenkins, Android-x86 and/or other resources.
-.. _libs:
-
5. Library Information
----------------------
If you built with Gallium support, look in lib/gallium/ for
Gallium-based versions of libGL and device drivers.
-.. _pkg-config:
-
6. Building OpenGL programs with pkg-config
-------------------------------------------
Compilation and Installation Using Meson
========================================
-- `Introduction <#intro>`__
-- `Basic Usage <#basic>`__
-- `Advanced Usage <#advanced>`__
-- `Cross-compilation and 32-bit builds <#cross-compilation>`__
-
-.. _intro:
-
1. Introduction
---------------
You may need to add the python3 scripts directory to your path for
meson.
-.. _basic:
-
2. Basic Usage
--------------
want to use ICL or clang-cl with the vsbackend you will need meson
0.52.0 or greater. Older versions always use the microsoft compiler.
-.. _advanced:
-
3. Advanced Usage
-----------------
are disabled. This is unrelated to the ``buildtype``; setting the
latter to ``release`` will not turn off assertions.
-.. _cross-compilation:
-
4. Cross-compilation and 32-bit builds
--------------------------------------
Releasing Process
=================
-- `Overview <#overview>`__
-- `Release schedule <#schedule>`__
-- `Cherry-pick and test <#pickntest>`__
-- `Staging branch <#stagingbranch>`__
-- `Making a branchpoint <#branch>`__
-- `Making a new release <#release>`__
-- `Announce the release <#announce>`__
-- `Update Gitlab Issues <#gitlab>`__
-
Overview
--------
regressions.
- The branch history is not stable and it **will** be rebased,
-.. _branch:
-
Making a branchpoint
--------------------
extremely rarely - we had only one case so far (see commit
2ced8eb136528914e1bf4e000dea06a9d53c7e04).
-.. _release:
-
Making a new release
--------------------
Ensure the latest code is available - both in your local master and the
relevant branch.
-.. _basictesting:
-
Perform basic testing
~~~~~~~~~~~~~~~~~~~~~
git push origin master X.Y
-.. _announce:
-
Announce the release
--------------------
Again, pay attention to add a note to warn about a final release in a
series, if that is the case.
-.. _gitlab:
-
Update gitlab issues
--------------------
This page describes the features and status of Mesa's support for the
`OpenGL Shading Language <https://opengl.org/documentation/glsl/>`__.
-Contents
-
-- `Environment variables <#envvars>`__
-- `GLSL 1.40 support <#support>`__
-- `Unsupported Features <#unsup>`__
-- `Implementation Notes <#notes>`__
-- `Programming Hints <#hints>`__
-- `Stand-alone GLSL Compiler <#standalone>`__
-- `Compiler Implementation <#implementation>`__
-- `Compiler Validation <#validation>`__
-
.. _envvars:
Environment Variables
Notably, this captures linked GLSL shaders - with all stages together -
as well as ARB programs.
-.. _support:
-
GLSL Version
------------
- GL_ARB_fragment_coord_conventions
- GL_ARB_shader_bit_encoding
-.. _unsup:
-
Unsupported Features
--------------------
All other major features of the shading language should function.
-.. _notes:
-
Implementation Notes
--------------------
These issues will be addressed/resolved in the future.
-.. _hints:
-
Programming Hints
-----------------
float x = inversesqrt(y);
-.. _standalone:
-
Stand-alone GLSL Compiler
-------------------------
any header or separator
- **--version** - [Mandatory] define the GLSL version to use
-.. _implementation:
-
Compiler Implementation
-----------------------
(see prog_execute.c) or translated into a specific hardware architecture
(see drivers/dri/i915/i915_fragprog.c for example).
-.. _validation:
-
Compiler Validation
-------------------
Submitting Patches
==================
-- `Basic guidelines <#guidelines>`__
-- `Patch formatting <#formatting>`__
-- `Testing Patches <#testing>`__
-- `Submitting Patches <#submit>`__
-- `Reviewing Patches <#reviewing>`__
-- `Nominating a commit for a stable branch <#nominations>`__
-- `Criteria for accepting patches to the stable branch <#criteria>`__
-- `Sending backports for the stable branch <#backports>`__
-- `Git tips <#gittips>`__
-
-.. _guidelines:
-
Basic guidelines
----------------
appropriate amount of review feedback from people who also understand
the code before merging their patches.
-.. _nominations:
-
Nominating a commit for a stable branch
---------------------------------------
The current patch status can be observed in the `staging
branch <releasing.html#stagingbranch>`__.
-.. _thetag:
-
The stable tag
~~~~~~~~~~~~~~
stable branch policy. Assigning the MR to release maintainer for said
branch or mentioning them is helpful, but not required.
-.. _gittips:
-
Git tips
--------