Support for shared memory framebuffers for eHVD elements. This allows a Scalable RIP to share eHVD elements across the entire RIP farm, without needing coordination from a raster manager or central controller.
More...
|
| static void | shm_raster_name (char name[1024], const uint8 cache_id[256], const uint8 setup_id[256], const uint8 element_id[16], unsigned int index) |
| | Create a unique name for a shared memory raster. More...
|
| |
| HVD_shmfb_raster * | shmfb_raster_create (const uint8 cache_id[256], const uint8 setup_id[256], const uint8 id[16], unsigned int index, RasterDescription *pRD, size_t rasterSize, size_t userSize, HqnResult *perr) |
| | Function to create raster handles for passing to HVD_monitor_add_raster() when using shared memory rasters. More...
|
| |
| uint8 * | shmfb_raster_buffer (HVD_shmfb_raster *raster, size_t start, size_t length) |
| | Get the data address from a shared memory raster handle. More...
|
| |
| void * | shmfb_raster_userdata (HVD_shmfb_raster *raster) |
| | Get the user data address from a shared memory raster handle. More...
|
| |
| const RasterDescription * | shmfb_raster_description (void *hraster) |
| | Function to use as hvd_output_page_params::raster_description_fn when using shared memory elements. More...
|
| |
| void | shmfb_raster_error (HVD_shmfb_raster **ppraster) |
| | The RIP failed to construct a raster. Mark it with error, and release the raster handle. More...
|
| |
|
static HVD_result | shmfb_raster_find (HVD_cache *cache, void *store, const uint8 elementId[16], unsigned int index, const char *rasterId, void **pRaster) |
| | Function to use as HVD_cache_fns::raster_find when using shared memory framebuffers.
|
| |
|
static void | shmfb_raster_release (HVD_cache *cache, void *store, const uint8 id[16], void *hraster) |
| | Function to use as HVD_cache_fns::raster_release when using shared memory framebuffers.
|
| |
|
static HqBool | shmfb_recovery_filter (HVD_cache *cache, void *store, const uint8 id[16], HVD_recovery_reason reason) |
| | Function to use as HVD_cache_fns::recovery_filter when using shared memory framebuffers.
|
| |
|
HqBool | shmfb_cache_register (void) |
| | Register the shared memory framebuffer HVD cache implementation in RDR.
|
| |
|
void | shmfb_cache_deregister (void) |
| | Deregister the shared memory framebuffer HVD cache implementation from RDR.
|
| |
| void * | shmfb_acquire (size_t size, uint32 id, void *data, HqnResult *perr) |
| | Function to use as frame_acquire_fn when using framebuffer support to manage shared memory rasters. More...
|
| |
| void | shmfb_release (void *handle, size_t size, void *data) |
| | Function to use as frame_release_fn when using framebuffer support to manage shared memory rasters. More...
|
| |
| uint8 * | shmfb_raster (void *handle, size_t offset, size_t size) |
| | Function to use as frame_raster_fn when using framebuffer support to manage shared memory rasters. More...
|
| |
| void * | shmfb_element_raster_open (void *hraster, RASTER_PLANE *plane, HqnResult *perr) |
| | Function to use as hvd_output_page_params::element_raster_open when using shared memory elements. More...
|
| |
| const uint8 * | shmfb_element_raster_map (void *context, void *hraster, unsigned int *pstartline, unsigned int *pnlines, HqnResult *perr) |
| | Function to use as hvd_output_page_params::element_raster_map when using shared memory elements. More...
|
| |
| void | shmfb_element_raster_close (void *context, void *hraster) |
| | Function to use as hvd_output_page_params::element_raster_close when using shared memory elements. More...
|
| |
Support for shared memory framebuffers for eHVD elements. This allows a Scalable RIP to share eHVD elements across the entire RIP farm, without needing coordination from a raster manager or central controller.
Data needed for reading shmfb element planes. These assume a contiguous layout in memory for all frames of a sheet. When using the framebuffer support, it checks that all sheets have the same rendered_sheet_size, all frames have the same rendered_size_per_band, the same rendered_frame_size, and all planes have the same linesize.
We can calculate the offset of this plane knowing the frame's omitted index, the plane's omitted index, and the rendered size of frames and planes. We can calculate the band number from the line and band height to calculate the offset of the start of the band from the frame, add the plane offset to get the start of the plane in the band, and use the plane's linesize to find the start of the line in the plane. If there is more than one plane per frame, then we also need to limit the number of lines read to the end of the band to avoid encroaching onto another channel.
| static void shm_raster_name |
( |
char |
name[1024], |
|
|
const uint8 |
cache_id[256], |
|
|
const uint8 |
setup_id[256], |
|
|
const uint8 |
element_id[16], |
|
|
unsigned int |
index |
|
) |
| |
|
static |
Create a unique name for a shared memory raster.
- Parameters
-
| [out] | name | The shared memory object name storage. |
| [in] | cache_id | The ID of the cache the raster will be stored in. |
| [in] | setup_id | The ID of the setup used to construct this raster. If this is not an empty string, the object may persist for longer than one job. |
| [in] | element_id | The element ID for this raster. |
| [in] | index | The raster index for this element. There may be more than one raster attached to each element if writing separations. |
On exit, name should contain a zero-terminated string with the name of the shared memory object.
The length of names allowed by different platforms for shared memory objects varies widely. Linux doesn't have an explicit length, but shm_open() suggest that the name start with a slash and be less than 255 characters. Windows does not appear to have a limit, beyond the normal file name length. MacOS, however, is severely constrained, supporting only 31 characters. The interface here allows for up to SHM_RASTER_NAME_MAX characters, but the expectation is that the platform implementation will produce a name with a smaller limitation.