diff options
author | Chia-I Wu <olvaffe@gmail.com> | 2010-01-16 23:41:55 +0800 |
---|---|---|
committer | Chia-I Wu <olvaffe@gmail.com> | 2010-01-17 00:37:08 +0800 |
commit | a3303f1a060bbce6f674c373415e5788f2934383 (patch) | |
tree | 978865519df9f22ba4a0091f903b2df142167237 /DESIGN | |
parent | 1e629198a693dff88b4c0c403ed3471f3d3257e2 (diff) |
Add DESIGN.
Diffstat (limited to 'DESIGN')
-rw-r--r-- | DESIGN | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -0,0 +1,77 @@ +Overview + +st_api.h defines a new API for use by state trackers and state tracker +managers. The most significant characteristic of the API is that the state +trackers have direct access to windowing system drawable (st_framebuffer). +Jakob Bornecrantz designs the first version of the API. + +Issues + +1. Should we separate st_visual for contexts and framebuffers? + + UNRESOLVED: olv suggests that there should be st_context_config and + st_framebuffer_config. They are used to express user's desire (Do I want a + context capable of multisampling? Do I want the front buffer of a + framebuffer to be rendered to?). Because on modern window systems, the + buffers of a framebuffer are allocated on demand. We would like to provide + necessary information about a framebuffer to the state trackers without + them resorting to validate callback. The st_framebuffer_config should + provide information such as the formats of the various buffers. Note that + the information is available from the validate callback. It is provided + for saving the memory. + +2. Is resource lookup complicated? + + UNRESOLVED: It is agreed there should be a way to look up both state + tracker and st manager's resources. Currently, it requires two calls to + achieve this. The st or st manager should lock the resource to have access + to the underlying data structure and then unlock the resource when done. + It is possible for them to increase the reference count of the data + structure so that they can keep using the it even if the resource is + unlocked. Plus, there might be no real locking mechanism. They make + lock/unlock a bad name. But it does has the benefit to track the access + to the resources. + + Another approach is to provide a single lookup_resource call, and make + functions like eglCreatePbufferFromClientBuffer, which requires a real + locking mechanism, special cases. + +3. Do we want st_context->make_current? + + UNRESOLVED: olv thinks st_context->make_current should be replaced by + st_manager_api->get_current_context, st_framebuffer->bind_framebuffers, and + st_api->notify_current_context. He thinks the maintenance of "current + context" belongs to the st manager. What a state tracker cares is the + binding framebuffers. If a state tracker needs to have access to the + current context, it should call st_manager_api->get_current_context. + Because the current context is accessed in every OpenGL or OpenVG call, + the st manager notifies the state trackers the current context when it + is changed. This gives state trackers a chance to remember the per-thread + current context internally to provide quick access. + +4. Does validate destroy buffers? + + UNRESOLVED: If validate is called twice with different sets of buffers, + those not listed in the second call may be destroyed on certain window + systems. olv thinks this behavior is internal to the st manager and should + not be exposed in the interface. He thinks the buffers should not be + destroyed because of a call to validate. Instead, the st manager should + have enough knowledge to decide when to destroy buffers to save memory. + +5. Do we want versioning? + + UNRESOLVED: Because the state trackers and the state tracker managers may + be distributed separately (e.g. in the case of EGL), a simple major/minor + versioning should help avoid mysterious crashes. By adding some paddings, + and new callbacks are added to the end of the various structs, it is + possible to keep the major version fixed for a good while (once we reach + major version 1). + +6. No state tracker or st manager implements this API. + + UNRESOLVED: olv hopes the design phase should finish soon (in a week or + two). There should be some real implementations that help catch any defect + in the design. After two or three rounds of design/implement, the API can + be called usable. He suggested some relatively dramatic changes basing on + limited test. He personally would like to find out if they work as + expected as soon as possible. |