HP j6700 OpenGL Implementation Guide for HP-UX 11.x - Page 14

HP-UX 11.0 Additional Core Enhancements ACE November

Page 14 highlights

overview of OpenGL the OpenGL product a. Depth- and stencil buffers are only allocated for image-plane visuals. b. Double buffering is set to True (1) if the X visual supports the X double-buffering extension (DBE). c. Alpha will only work correctly on 12- and 24-bit TrueColor and DirectColor visuals when the X server does not use the high-order nibble/byte in the X visual. Also, note that when alpha is present, Buffer Size will be 16 for the 12-bit visuals and 32 for the 24-bit visuals. buffer sharing between multiple processes and threads In the OpenGL implementation, all drawable buffers that are allocated in virtual memory are not sharable among multiple processes. As an example, on a HP Visualize fx-5 configuration, the accumulation buffer for a drawable resides in virtual memory (VM) and therefore, each OpenGL process rendering to the same drawable through a direct rendering context, will have its own separate copy of the accumulation buffer. For more information on hardware and software buffer configurations for OpenGL devices, see Tables 1-1 through 1-8 in the Supported Visuals section of this chapter. True buffer sharing between multiple processes can be accomplished by utilizing indirect rendering contexts. In this case, rendering on behalf of all GLX clients is performed by the X server OpenGL daemon process, and there is only one set of virtual memory buffers per drawable. Within a single process, multiple threads will share virtual memory buffers (both rendering and accumulation buffers) by default. GLX-compliant concurrent rendering into these buffers is supported. It is the responsibility of the application to synchronize buffer access or partition the rendering buffer amongst individual threads, if desired. SIGCHLD and the GRM daemon The Graphics Resource Manager daemon (grmd) is started when the X11 server is started. In normal operation, an OpenGL application will not start the daemon, and as a result grmd will not be affected by the SIGCHLD manipulation that occurs as part of that start-up. However, if grmd dies for some reason, the graphics libraries will restart grmd whenever they need shared memory. An example of where this can occur is during calls to glXCreateContext or glXMakeCurrent. threads support threads support in November, 1999 11. ACE release Starting with the HP-UX 11.0 Additional Core Enhancements (ACE) (November, 1999) release, HP OpenGL will support Level 1b threads. This means HP OpenGL can be used in a threaded application, but OpenGL graphics 12 Chapter 1

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

overview of OpenGL
the OpenGL product
Chapter 1
12
buffer sharing between multiple processes and threads
In the OpenGL implementation, all drawable buffers that are allocated
in virtual memory are not sharable among multiple processes. As an
example, on a HP Visualize fx-5 configuration, the accumulation buffer
for a drawable resides in virtual memory (VM) and therefore, each
OpenGL process rendering to the same drawable through a direct
rendering context, will have its own separate copy of the accumulation
buffer. For more information on hardware and software buffer
configurations for OpenGL devices, see Tables 1-1 through 1-8 in the
Supported Visuals section of this chapter.
True buffer sharing between multiple processes can be accomplished by
utilizing indirect rendering contexts. In this case, rendering on behalf of
all GLX clients is performed by the X server OpenGL daemon process,
and there is only one set of virtual memory buffers per drawable.
Within a single process, multiple threads will share virtual memory
buffers (both rendering and accumulation buffers) by default.
GLX-compliant concurrent rendering into these buffers is supported. It
is the responsibility of the application to synchronize buffer access or
partition the rendering buffer amongst individual threads, if desired.
SIGCHLD and the GRM daemon
The Graphics Resource Manager daemon (grmd) is started when the X11
server is started. In normal operation, an OpenGL application will not
start the daemon, and as a result grmd will not be affected by the
SIGCHLD manipulation that occurs as part of that start-up. However, if
grmd dies for some reason, the graphics libraries will restart grmd
whenever they need shared memory. An example of where this can occur
is during calls to glXCreateContext or glXMakeCurrent.
threads support
threads support in November, 1999 11. ACE release
Starting with the
HP-UX 11.0 Additional Core Enhancements (ACE) (November, 1999)
release, HP OpenGL will support Level 1b threads. This means HP
OpenGL can be used in a threaded application, but OpenGL graphics
a.
Depth- and stencil buffers are only allocated for image-plane visuals.
b.
Double buffering is set to True (1) if the X visual supports the X double-buffering extension (DBE).
c.
Alpha will only work correctly on 12- and 24-bit TrueColor and DirectColor visuals when the X server does not use
the high-order nibble/byte in the X visual. Also, note that when alpha is present, Buffer Size will be 16 for the 12-bit
visuals and 32 for the 24-bit visuals.