Read/write structure used during the DeviceIOCtl_RasterRequirements, DeviceIOCtl_RenderingReady, DeviceIOCtl_RenderingPass and DeviceIOCtl_RenderingSheet IOCTL calls. More...
#include "swraster.h"
Read/write structure used during the DeviceIOCtl_RasterRequirements, DeviceIOCtl_RenderingReady, DeviceIOCtl_RenderingPass and DeviceIOCtl_RenderingSheet IOCTL calls.
int32 RASTER_REQUIREMENTS::band_order |
Band order indication. This is initialized by the RIP to BAND_ORDER_INCREASING. If the callee sets this to BAND_ORDER_ANY, it is indicating that it can handle band data writes out of order within a page. This may be changed in DeviceIOCtl_RenderingPass. The same value should be set in the DeviceIOCtl_RenderingSheet call as was set in the DeviceIOCtl_RenderingPass call.
HqBool RASTER_REQUIREMENTS::bands_handled_by_caller |
By default the callee (the RIP SDK PGB device in the first instance, though it may pass on this responsibility to raster output handlers) is responsible for issuing SWEVT_BANDS_HANDLED events to indicate to the RIP that bands have been copied, output, or otherwise handled. The callee can set this value to TRUE
to indicate that the caller (the RIP) should issue the events instead. Failure to issue this event after processing bands will cause deadlock. The value of this field is only used after the DeviceIOCtl_RenderingSheet call, though it is recommended that it is set consistently for all calls. Initialized by the RIP to FALSE
.
HqBool RASTER_REQUIREMENTS::copies_handled_by_output |
Can the skin handle multiple copies of each page if requested? Initialized by the RIP to FALSE
. The callee may change this value to TRUE
to indicate that the skin will handle making copies of pages. If set to TRUE
and the page device key NumCopies is greater than one, the RIP will render and output the page once but pass the NumCopies value to the output system to handle. If this value is left at FALSE
(the default value), the RIP will render and output the page NumCopies times. This value is only used after the DeviceIOCtl_RenderingReady call, though it is recommended that it is set consistently for all calls. The same value should be set in the DeviceIOCtl_RenderingPass and DeviceIOCtl_RenderingSheet calls as was set in the DeviceIOCtl_RenderingReady call.
int32 RASTER_REQUIREMENTS::eraseno |
Page generation ID. The page generation ID is the same for every call for a particular display list. It can be used to correlate calls from the interpreter (where RASTER_REQUIREMENTS::render_type is REQUIREMENTS_NO_RENDER) with each other and with later calls from renderer threads. Interpreter calls for later display lists may be interleaved with renderer calls to earlier display lists, but all interpreter calls will have the generation ID greater than or equal to previous interpreter calls, and all renderer calls will have the generation ID greater than or equal to previous renderer calls. Not every display list constructed will be rendered. When a renderer call is seen with a particular generation ID, there are guaranteed to be no further interpreter calls with previous generation IDs. Note that there may be more than one display list constructed for a page if partial painting, these display lists will have different generation IDs.
HqBool RASTER_REQUIREMENTS::handled |
Flag which is set to FALSE
by the caller, and set to TRUE
by the callee if it has completed. If not, the caller will keep calling with the same data until either this flag is set to TRUE
or the callee returns an error.
int32 RASTER_REQUIREMENTS::have_framebuffer |
Band allocation mode. This is initialized by the RIP to BAND_ALLOC_RIP. It may be set to BAND_ALLOC_FRAMEBUFFER in DeviceIOCtl_RasterRequirements or DeviceIOCtl_RenderingReady if the raster backend has (or is able to promise by the time DeviceIOCtl_GetBufferForRaster is called) a complete framebuffer. It may be set to BAND_ALLOC_SKIN in the DeviceIOCtl_RasterRequirements or DeviceIOCtl_RenderingReady calls if the skin will be allocating the output band memory, but it cannot promise a full framebuffer. It is an error to change this in the DeviceIOCtl_RenderingPass or DeviceIOCtl_RenderingSheet calls.
int32 RASTER_REQUIREMENTS::interleavingStyle |
Interleaving style. This is one of the interleaving styles defined in the SDK or plugin kit. The values for these are:
1 - Monochrome. Each separation consists of a single frame, with a single plane containing one channel.
2 - Pixel interleaved. Each separation consists of a single frame, with a single plane containing multiple interleaved channels.
3 - Band interleaved. Each separation consists of a single frame, with multiple planes each containing one channel.
4 - Frame interleaved. Each separation consists of multiple frames, each frame containing one plane with one channel in it.
In general, clients should avoid testing this parameter, but should make decisions by examining the raster_layout structure instead. Future versions of the RIP may support more complex layouts that do not conform to the simple classification above.
uint32 RASTER_REQUIREMENTS::minimum_bands |
The minimum number of raster destination bands that the RIP requires.
HqBool RASTER_REQUIREMENTS::no_partial |
Partial paint flag. This is set to TRUE
by the RIP if the page will not have any partial paints. Note that the converse does not hold; if FALSE
, the page may have partial paints.
RASTER_LAYOUT* RASTER_REQUIREMENTS::raster_layout |
The raster layout for the pagedevice. If the raster backend wishes to access this structure after the call is finished, it should call raster_layout_acquire() to get a pointer that will remain valid, or copy the layout into its own memory using raster_layout_copy(). Pointers acquired using raster_layout_acquire() must be released using raster_layout_release() before the RIP shuts down.
struct sw_datum* RASTER_REQUIREMENTS::raster_params |
Optional structured data for raster parameters. If the raster backend wishes to access these parameters after the call is finished, it should either unpack them into its own variables, or use the sw_data_api::retain() and sw_data_api::release() functions to preserve the data tree.
int32 RASTER_REQUIREMENTS::raster_sheet_index |
The index of the raster sheet being rendered in the raster layout's sheets array. This will be negative for calls that do not reference a sheet, and non-negative only for DeviceIOCtl_RenderingSheet calls.
int32 RASTER_REQUIREMENTS::render_type |
Render type. This will be one of the REQUIREMENTS_render_type enumeration values, indicating whether this call was related to a rendering pass, and if so the type of the pass.
void* RASTER_REQUIREMENTS::scratch_band |
Scratch buffer of size RASTER_REQUIREMENTS::band_size handed by the core to the DeviceIOCtl_RenderingPass and DeviceIOCtl_RenderingSheet calls.
size_t RASTER_REQUIREMENTS::scratch_size |
The callee should set this in the DeviceIOCtl_RasterRequirements or DeviceIOCtl_RenderingReady calls to the size of a scratch buffer requested from the core. It is an error to change this in the DeviceIOCtl_RenderingPass or DeviceIOCtl_RenderingSheet calls.
int32 RASTER_REQUIREMENTS::store_partial |
Partial paint and compositing raster store flag. Initialized by the RIP to PARTIAL_WSKIP_RSKIP if a framebuffer has been previously indicated, PARTIAL_WRAST_RSKIP if RLE output is being generated, or PARTIAL_WSTORE_RSTORE otherwise. The callee may change it in the DeviceIOCtl_RasterRequirements or DeviceIOCtl_RenderingReady calls to indicate that the raster backend is taking responsibility for storing and combining partial paints and compositing passes, or to indicate that the PGB's raster store should be used. The same value should be set in the DeviceIOCtl_RenderingPass and DeviceIOCtl_RenderingSheet call as was set in the DeviceIOCtl_RenderingReady call.
int32 RASTER_REQUIREMENTS::write_empty_bands |
Does the skin require empty bands in the output? Initialized by the RIP to WRITE_TRIMMED_OUTPUT. If this value is set to WRITE_TRIMMED_OUTPUT, the RIP will omit empty bands at the top and the bottom of the raster. If set to WRITE_NONEMPTY_OUTPUT, the RIP will omit empty bands anywhere in the raster. If this value is set to WRITE_ALL_OUTPUT, the RIP will not empty bands anywhere, even at the top and the bottom of the raster. The value of this field is only used after the DeviceIOCtl_RenderingPass call, though it is recommended that it is set consistently for all calls. The same value should be set in the DeviceIOCtl_RenderingSheet call as was set in the DeviceIOCtl_RenderingPass call.