Reindeer - Tasks: task #10264, DataBlock automatic data...
You are not allowed to post comments on this tracker with your current authentication level.
task #10264: DataBlock automatic data unload/reload
Submitter: | Patrik Olsson <peo> | ||
Submitted: | Sat 13 Mar 2010 08:01:53 PM UTC | ||
Should Start On: | Fri 12 Mar 2010 11:00:00 PM UTC | Should be Finished on: | Fri 12 Mar 2010 11:00:00 PM UTC |
Category: | libreindeer | Priority: | 3 - Low |
Status: | None | Privacy: | Public |
Assigned to: | None | Percent Complete: | 0% |
Open/Closed: | Open | Planned Release: | None |
Effort: | 0.00 |
No files currently attached
Depends on the following items
Items that depend on this one: None found
Carbon-Copy List
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
Follow 3 latest changes.
Date | Changed by | Updated Field | Previous Value | => | Replaced by |
---|---|---|---|---|---|
2010-03-13 | peo | Should Start On | - | 2010-03-12 | |
Should be Finished on | - | 2010-03-12 | |||
Dependencies | - | Depends on task #10265 |
Powered by Savane 3.13-caa5.
Corresponding source code
It would be nice if DataBlock would unload the data if it is not actively used. For example, OpenGL copies the data to a texture object or buffer object and then does not touch it anymore.
The application would have to register a callback that would reload the data on demand. Registering the callback would activate the feature for a DataBlock instance.
To implement this, there should be a data_ref field in DataBlock. Reindeer modules should use _begin_use when they are actively using the data, and _end_use when they are not anymore. The field data_ref is set to 1 at initialization to avoid repeatedly unload/reload each time a module wants the data only temporarily. The application should do _end_use when they believe it is okay. This is usually after one or a few frames when the data block has been used by all Reindeer contexts that need it.
Applications should only write data in the reload callback, and it must be the exact same data as previously (undefined behavior otherwise). The DataBlock becomes immutable. The reload callback gives the data pointer, the block size and user data (specified on registering the callback).
The use of the feature is only recommended when the data can be relatively quickly reloaded, or where it is known that it is unlikely to be reloaded anyway.