From e561737c5208765ef450c70879837da059573249 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Wed, 16 Nov 2016 00:31:26 +0000 Subject: [PATCH] docs: split Codying style into separate document Signed-off-by: Emil Velikov Reviewed-by: Brian Paul --- docs/codingstyle.html | 142 ++++++++++++++++++++++++++++++++++++++++++ docs/contents.html | 1 + docs/devinfo.html | 128 +------------------------------------ 3 files changed, 145 insertions(+), 126 deletions(-) create mode 100644 docs/codingstyle.html diff --git a/docs/codingstyle.html b/docs/codingstyle.html new file mode 100644 index 00000000000..4dfb0cc02f0 --- /dev/null +++ b/docs/codingstyle.html @@ -0,0 +1,142 @@ + + + + + Coding Style + + + + +
+

The Mesa 3D Graphics Library

+
+ + +
+ +

Coding Style

+ +

+Mesa is over 20 years old and the coding style has evolved over time. +Some old parts use a style that's a bit out of date. + +Different sections of mesa can use different coding style as set in the local +EditorConfig (.editorconfig) and/or Emacs (.dir-locals.el) file. + +Alternatively the following is applicable. + +If the guidelines below don't cover something, try following the format of +existing, neighboring code. +

+ +

+Basic formatting guidelines +

+ +
    +
  • 3-space indentation, no tabs. +
  • Limit lines to 78 or fewer characters. The idea is to prevent line +wrapping in 80-column editors and terminals. There are exceptions, such +as if you're defining a large, static table of information. +
  • Opening braces go on the same line as the if/for/while statement. +For example: +
    +   if (condition) {
    +      foo;
    +   } else {
    +      bar;
    +   }
    +
    + +
  • Put a space before/after operators. For example, a = b + c; +and not a=b+c; + +
  • This GNU indent command generally does the right thing for formatting: +
    +   indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
    +
    + +
  • Use comments wherever you think it would be helpful for other developers. +Several specific cases and style examples follow. Note that we roughly +follow Doxygen conventions. +
    +
    +Single-line comments: +
    +   /* null-out pointer to prevent dangling reference below */
    +   bufferObj = NULL;
    +
    +Or, +
    +   bufferObj = NULL;  /* prevent dangling reference below */
    +
    +Multi-line comment: +
    +   /* If this is a new buffer object id, or one which was generated but
    +    * never used before, allocate a buffer object now.
    +    */
    +
    +We try to quote the OpenGL specification where prudent: +
    +   /* Page 38 of the PDF of the OpenGL ES 3.0 spec says:
    +    *
    +    *     "An INVALID_OPERATION error is generated for any of the following
    +    *     conditions:
    +    *
    +    *     *  is zero."
    +    *
    +    * Additionally, page 94 of the PDF of the OpenGL 4.5 core spec
    +    * (30.10.2014) also says this, so it's no longer allowed for desktop GL,
    +    * either.
    +    */
    +
    +Function comment example: +
    +   /**
    +    * Create and initialize a new buffer object.  Called via the
    +    * ctx->Driver.CreateObject() driver callback function.
    +    * \param  name  integer name of the object
    +    * \param  type  one of GL_FOO, GL_BAR, etc.
    +    * \return  pointer to new object or NULL if error
    +    */
    +   struct gl_object *
    +   _mesa_create_object(GLuint name, GLenum type)
    +   {
    +      /* function body */
    +   }
    +
    + +
  • Put the function return type and qualifiers on one line and the function +name and parameters on the next, as seen above. This makes it easy to use +grep ^function_name dir/* to find function definitions. Also, +the opening brace goes on the next line by itself (see above.) + +
  • Function names follow various conventions depending on the type of function: +
    +   glFooBar()       - a public GL entry point (in glapi_dispatch.c)
    +   _mesa_FooBar()   - the internal immediate mode function
    +   save_FooBar()    - retained mode (display list) function in dlist.c
    +   foo_bar()        - a static (private) function
    +   _mesa_foo_bar()  - an internal non-static Mesa function
    +
    + +
  • Constants, macros and enumerant names are ALL_UPPERCASE, with _ between +words. +
  • Mesa usually uses camel case for local variables (Ex: "localVarname") +while gallium typically uses underscores (Ex: "local_var_name"). +
  • Global variables are almost never used because Mesa should be thread-safe. + +
  • Booleans. Places that are not directly visible to the GL API +should prefer the use of bool, true, and +false over GLboolean, GL_TRUE, and +GL_FALSE. In C code, this may mean that +#include <stdbool.h> needs to be added. The +try_emit_* methods in src/mesa/program/ir_to_mesa.cpp and +src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as examples. + +
+

+ +
+ + diff --git a/docs/contents.html b/docs/contents.html index 294804f6f5a..cdecac6475b 100644 --- a/docs/contents.html +++ b/docs/contents.html @@ -81,6 +81,7 @@
  • Utilities
  • Help Wanted
  • Development Notes +
  • Coding Style
  • Source Documentation
  • GL Dispatch diff --git a/docs/devinfo.html b/docs/devinfo.html index 58025e661a1..c40ea35c5ca 100644 --- a/docs/devinfo.html +++ b/docs/devinfo.html @@ -18,136 +18,11 @@ - -

    Coding Style

    - -

    -Mesa is over 20 years old and the coding style has evolved over time. -Some old parts use a style that's a bit out of date. - -Different sections of mesa can use different coding style as set in the local -EditorConfig (.editorconfig) and/or Emacs (.dir-locals.el) file. - -Alternatively the following is applicable. - -If the guidelines below don't cover something, try following the format of -existing, neighboring code. -

    - -

    -Basic formatting guidelines -

    - -
      -
    • 3-space indentation, no tabs. -
    • Limit lines to 78 or fewer characters. The idea is to prevent line -wrapping in 80-column editors and terminals. There are exceptions, such -as if you're defining a large, static table of information. -
    • Opening braces go on the same line as the if/for/while statement. -For example: -
      -   if (condition) {
      -      foo;
      -   } else {
      -      bar;
      -   }
      -
      - -
    • Put a space before/after operators. For example, a = b + c; -and not a=b+c; - -
    • This GNU indent command generally does the right thing for formatting: -
      -   indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
      -
      - -
    • Use comments wherever you think it would be helpful for other developers. -Several specific cases and style examples follow. Note that we roughly -follow Doxygen conventions. -
      -
      -Single-line comments: -
      -   /* null-out pointer to prevent dangling reference below */
      -   bufferObj = NULL;
      -
      -Or, -
      -   bufferObj = NULL;  /* prevent dangling reference below */
      -
      -Multi-line comment: -
      -   /* If this is a new buffer object id, or one which was generated but
      -    * never used before, allocate a buffer object now.
      -    */
      -
      -We try to quote the OpenGL specification where prudent: -
      -   /* Page 38 of the PDF of the OpenGL ES 3.0 spec says:
      -    *
      -    *     "An INVALID_OPERATION error is generated for any of the following
      -    *     conditions:
      -    *
      -    *     *  is zero."
      -    *
      -    * Additionally, page 94 of the PDF of the OpenGL 4.5 core spec
      -    * (30.10.2014) also says this, so it's no longer allowed for desktop GL,
      -    * either.
      -    */
      -
      -Function comment example: -
      -   /**
      -    * Create and initialize a new buffer object.  Called via the
      -    * ctx->Driver.CreateObject() driver callback function.
      -    * \param  name  integer name of the object
      -    * \param  type  one of GL_FOO, GL_BAR, etc.
      -    * \return  pointer to new object or NULL if error
      -    */
      -   struct gl_object *
      -   _mesa_create_object(GLuint name, GLenum type)
      -   {
      -      /* function body */
      -   }
      -
      - -
    • Put the function return type and qualifiers on one line and the function -name and parameters on the next, as seen above. This makes it easy to use -grep ^function_name dir/* to find function definitions. Also, -the opening brace goes on the next line by itself (see above.) - -
    • Function names follow various conventions depending on the type of function: -
      -   glFooBar()       - a public GL entry point (in glapi_dispatch.c)
      -   _mesa_FooBar()   - the internal immediate mode function
      -   save_FooBar()    - retained mode (display list) function in dlist.c
      -   foo_bar()        - a static (private) function
      -   _mesa_foo_bar()  - an internal non-static Mesa function
      -
      - -
    • Constants, macros and enumerant names are ALL_UPPERCASE, with _ between -words. -
    • Mesa usually uses camel case for local variables (Ex: "localVarname") -while gallium typically uses underscores (Ex: "local_var_name"). -
    • Global variables are almost never used because Mesa should be thread-safe. - -
    • Booleans. Places that are not directly visible to the GL API -should prefer the use of bool, true, and -false over GLboolean, GL_TRUE, and -GL_FALSE. In C code, this may mean that -#include <stdbool.h> needs to be added. The -try_emit_* methods in src/mesa/program/ir_to_mesa.cpp and -src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as examples. - -
    - -

    Submitting patches

    @@ -156,7 +31,8 @@ The basic guidelines for submitting patches are:

    • Patches should be sufficiently tested before submitting. -
    • Code patches should follow Mesa coding conventions. +
    • Code patches should follow Mesa +coding conventions.
    • Whenever possible, patches should only effect individual Mesa/Gallium components.
    • Patches should never introduce build breaks and should be bisectable (see