Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. Name
  2.  
  3.     MESA_shader_debug
  4.  
  5. Name Strings
  6.  
  7.     GL_MESA_shader_debug
  8.  
  9. Contact
  10.  
  11.     Brian Paul (brian.paul 'at' tungstengraphics.com)
  12.     Michal Krol (mjkrol 'at' gmail.com)
  13.  
  14. Status
  15.  
  16.     Obsolete.
  17.  
  18. Version
  19.  
  20.     Last Modified Date: July 30, 2006
  21.     Author Revision: 0.2
  22.  
  23. Number
  24.  
  25.     TBD
  26.  
  27. Dependencies
  28.  
  29.     OpenGL 1.0 is required.
  30.  
  31.     The ARB_shader_objects extension is required.
  32.  
  33.     The ARB_shading_language_100 extension is required.
  34.  
  35.     The extension is written against the OpenGL 1.5 specification.
  36.  
  37.     The extension is written against the OpenGL Shading Language 1.10
  38.     Specification.
  39.  
  40. Overview
  41.  
  42.     This extension introduces a debug object that can be attached to
  43.     a program object to enable debugging. Vertex and/or fragment shader,
  44.     during execution, issue diagnostic function calls that are logged
  45.     to the debug object's log. A separate debug log for each shader type
  46.     is maintained. A debug object can be attached, detached and queried
  47.     at any time outside the Begin/End pair. Multiple debug objects can
  48.     be attached to a single program object.
  49.  
  50. IP Status
  51.  
  52.     None
  53.  
  54. Issues
  55.  
  56.     None
  57.  
  58. New Procedures and Functions
  59.  
  60.     handleARB CreateDebugObjectMESA(void)
  61.     void ClearDebugLogMESA(handleARB obj, enum logType, enum shaderType)
  62.     void GetDebugLogMESA(handleARB obj, enum logType, enum shaderType,
  63.                          sizei maxLength, sizei *length,
  64.                          charARB *debugLog)
  65.     sizei GetDebugLogLengthMESA(handleARB obj, enum logType,
  66.                                 enum shaderType)
  67.  
  68. New Types
  69.  
  70.     None
  71.  
  72. New Tokens
  73.  
  74.     Returned by the <params> parameter of GetObjectParameter{fi}vARB:
  75.  
  76.         DEBUG_OBJECT_MESA                               0x8759
  77.  
  78.     Accepted by the <logType> argument of ClearDebugLogMESA,
  79.     GetDebugLogLengthMESA and GetDebugLogMESA:
  80.  
  81.         DEBUG_PRINT_MESA                                0x875A
  82.         DEBUG_ASSERT_MESA                               0x875B
  83.  
  84. Additions to Chapter 2 of the OpenGL 1.5 Specification
  85. (OpenGL Operation)
  86.  
  87.     None
  88.  
  89. Additions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization)
  90.  
  91.     None
  92.  
  93. Additions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment
  94. Operations and the Frame Buffer)
  95.  
  96.     None
  97.  
  98. Additions to Chapter 5 of the OpenGL 1.5 Specification
  99. (Special Functions)
  100.  
  101.     None
  102.  
  103. Additions to Chapter 6 of the OpenGL 1.5 Specification (State and State
  104. Requests)
  105.  
  106.     None
  107.  
  108. Additions to Appendix A of the OpenGL 1.5 Specification (Invariance)
  109.  
  110.     None
  111.  
  112. Additions to Chapter 1 of the OpenGL Shading Language 1.10 Specification
  113. (Introduction)
  114.  
  115.     None
  116.  
  117. Additions to Chapter 2 of the OpenGL Shading Language 1.10 Specification
  118. (Overview of OpenGL Shading)
  119.  
  120.     None
  121.  
  122. Additions to Chapter 3 of the OpenGL Shading Language 1.10 Specification
  123. (Basics)
  124.  
  125.     None
  126.  
  127. Additions to Chapter 4 of the OpenGL Shading Language 1.10 Specification
  128. (Variables and Types)
  129.  
  130.     None
  131.  
  132. Additions to Chapter 5 of the OpenGL Shading Language 1.10 Specification
  133. (Operators and Expressions)
  134.  
  135.     None
  136.  
  137. Additions to Chapter 6 of the OpenGL Shading Language 1.10 Specification
  138. (Statements and Structure)
  139.  
  140.     None
  141.  
  142. Additions to Chapter 7 of the OpenGL Shading Language 1.10 Specification
  143. (Built-in Variables)
  144.  
  145.     None
  146.  
  147. Additions to Chapter 8 of the OpenGL Shading Language 1.10 Specification
  148. (Built-in Functions)
  149.  
  150.     Add a new section 8.10 "Debug Functions":
  151.  
  152.     Debug functions are available to both fragment and vertex shaders.
  153.     They are used to track the execution of a shader by logging
  154.     passed-in arguments to the debug object's log. Those values can be
  155.     retrieved by the application for inspection after shader execution
  156.     is complete.
  157.  
  158.     The text, if any, produced by any of these functions is appended
  159.     to each debug object that is attached to the program object.
  160.     There are different debug log types
  161.  
  162.     Add a new section 8.10.1 "Print Function":
  163.  
  164.     The following printMESA prototypes are available.
  165.  
  166.         void printMESA(const float value)
  167.         void printMESA(const int value)
  168.         void printMESA(const bool value)
  169.         void printMESA(const vec2 value)
  170.         void printMESA(const vec3 value)
  171.         void printMESA(const vec4 value)
  172.         void printMESA(const ivec2 value)
  173.         void printMESA(const ivec3 value)
  174.         void printMESA(const ivec4 value)
  175.         void printMESA(const bvec2 value)
  176.         void printMESA(const bvec3 value)
  177.         void printMESA(const bvec4 value)
  178.         void printMESA(const mat2 value)
  179.         void printMESA(const mat3 value)
  180.         void printMESA(const mat4 value)
  181.         void printMESA(const sampler1D value)
  182.         void printMESA(const sampler2D value)
  183.         void printMESA(const sampler3D value)
  184.         void printMESA(const samplerCube value)
  185.         void printMESA(const sampler1DShadow value)
  186.         void printMESA(const sampler2DShadow value)
  187.  
  188.     The printMESA function writes the argument <value> to the "debug
  189.     print log" (XXX DEBUG_PRINT_MESA?). Each component is written in
  190.     text format (XXX format!) and is delimited by a white space (XXX 1
  191.     or more?).
  192.  
  193.     Add a new section 8.10.2 "Assert Function":
  194.  
  195.     The following assertMESA prototypes are available.
  196.  
  197.         void assertMESA(const bool condition)
  198.         void assertMESA(const bool condition, const int cookie)
  199.         void assertMESA(const bool condition, const int cookie,
  200.                         const int file, const int line)
  201.  
  202.     The assertMESA function checks if the argument <condition> is
  203.     true or false. If it is true, nothing happens. If it is false,
  204.     a diagnostic message is written to the "debug assert log".
  205.     The message contains the argument <file>, <line>, <cookie> and
  206.     implementation dependent double-quoted string, each of this
  207.     delimited by a white space. If the argument <cookie> is not present,
  208.     it is meant as if it was of value 0. If the arguments <file> and
  209.     <line> are not present, they are meant as if they were of values
  210.     __FILE__ and __LINE__, respectively. The following three calls
  211.     produce the same output, assuming they were issued from the same
  212.     file and line.
  213.  
  214.         assertMESA (false);
  215.         assertMESA (false, 0);
  216.         assertMESA (false, 0, __FILE__, __LINE__);
  217.  
  218.     The diagnostic message examples follow.
  219.  
  220.         1 89 0 ""
  221.         1 45 333 "all (lessThanEqual (fragColor, vec4 (1.0)))"
  222.         1 66 1 "assertion failed in file 1, line 66, cookie 1"
  223.  
  224. Additions to Chapter 9 of the OpenGL Shading Language 1.10 Specification
  225. (Shading Language Grammar)
  226.  
  227.     None
  228.  
  229. Additions to Chapter 10 of the OpenGL Shading Language 1.10
  230. Specification (Issues)
  231.  
  232.     None
  233.  
  234. Additions to the AGL/EGL/GLX/WGL Specifications
  235.  
  236.     None
  237.  
  238. GLX Protocol
  239.  
  240.     None
  241.  
  242. Errors
  243.  
  244.     TBD
  245.  
  246. New State
  247.  
  248.     TBD
  249.  
  250. New Implementation Dependent State
  251.  
  252.     TBD
  253.  
  254. Sample Code
  255.  
  256.     TBD
  257.  
  258. Revision History
  259.  
  260.     29 May 2006
  261.         Initial draft. (Michal Krol)
  262.     30 July 2006
  263.         Add Overview, New Procedures and Functions, New Tokens sections.
  264.         Add sections 8.10.1, 8.10.2 to GLSL spec.
  265.