US20070229900A1 - Systems and methods for display list management - Google Patents
Systems and methods for display list management Download PDFInfo
- Publication number
- US20070229900A1 US20070229900A1 US11/515,337 US51533706A US2007229900A1 US 20070229900 A1 US20070229900 A1 US 20070229900A1 US 51533706 A US51533706 A US 51533706A US 2007229900 A1 US2007229900 A1 US 2007229900A1
- Authority
- US
- United States
- Prior art keywords
- memory
- display list
- control data
- blocks
- data structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1849—Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives
- G06K15/1851—Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives parted in a plurality of segments per page
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1856—Generation of the printable image characterized by its workflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1856—Generation of the printable image characterized by its workflow
- G06K15/1859—Generation of the printable image characterized by its workflow involving data processing distributed amongst different data processing apparatus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Definitions
- the present invention relates to the field of printing and in particular, to systems and methods to manage display lists.
- PDL page description language
- a PDL description of a document provides a high-level description of each page in a document. This PDL description is often translated to a series of lower-level printer-specific commands when the document is being printed.
- the translation process from PDL to lower-level printer-specific commands may be complex and depend on the features and capabilities offered by a particular printer.
- a printer manufacturer will often make several trade-offs in order to optimize printer performance based on available memory, desired print speed, and other cost and performance issues. For example, a manufacturer may choose to limit the maximum resolution of a printer with limited memory in order to improve the throughput of the printer.
- the introduction of new printers or upgrades to existing printers often require revisiting the optimization decisions and may even result in a major overhaul of translation algorithms. Consequently, the introduction of new printer models, or upgrades to existing printers, may be more expensive, sub-optimal, and needlessly delayed.
- the optimal use of printer resources allows a more complete exploitation of available printer capability and leads to good performance.
- the first printable data may take the form of a PDL description of a document and the intermediate printable data may take the form of a display list of objects generated from the PDL description.
- a computer memory comprising a data structure for storing an intermediate printable data generated from a first printable data may comprise at least one memory pool, which may further comprise a plurality of uniformly sized segments to store the intermediate printable data; at least one global structure for storing information related to the one or more memory pools; and buffers for performing operations on the first printable data and the intermediate printable data.
- the uniformly sized segments may occupy contiguous memory locations.
- the uniformly sized segments may have a predetermined size.
- uniformly sized segments may comprise of either control data structures, or a block to store objects present in the intermediate printable data.
- control data structure may comprise one or more of virtual pages, bands, and nodes.
- the vpage data structure may comprise a linked list of geometric band data structures representing geometric bands associated with the virtual page, wherein the geometric band data structure may further comprise a linked list of node data structures, wherein the node data structure may include references to any associated blocks.
- the data managed by the geometric band may contain offsets to objects stored in a reference band.
- the reference band may be configured to hold to data or graphical objects.
- the data or graphical objects span geometric band boundaries.
- the data or graphical objects may be repeatedly used.
- the vpage data structure may include offsets to a compression band.
- the compression band may be configured to hold compressed data or compressed graphical objects.
- the objects in the bands, nodes, and blocks may be individually accessed, edited, and processed. Processing of the objects may include one or more of the operations of compression, decompression, and pre-rasterization.
- each block may hold one or more of a data object, a graphical object, and/or offsets to data or graphical objects.
- each block may be uniformly-sized, and equal in size to the uniformly-sized segments.
- the global structure pertaining to the at least one memory pool may include fields for one or more of offsets to the start of the at least one memory pool; mechanisms to regulate access to the at least one memory pool; offsets to the start of the buffers; and lists of vpages, bands, nodes, and blocks.
- the buffers may include one or more of compression buffers, decompression buffers, and compaction buffers.
- the memory pool may include a base memory pool, which may be allocated at boot time and may also include additional dynamically allocated memory pools.
- Embodiments of the present invention also relate to data structures created, stored, accessed, or modified by processors using computer-readable media or computer-readable memory.
- FIG. 1 shows a block diagram illustrating components in a system for printing documents according to some embodiments of the present invention.
- FIG. 2 shows a high level block diagram of an exemplary printer.
- FIG. 3 shows an exemplary high-level architecture of a system for flexible display lists according to some embodiments of the present invention.
- FIG. 4 shows an exemplary data structure for flexible display lists according to some embodiments of the present invention.
- FIG. 5 shows the organization of exemplary memory pools according some embodiments of the present invention.
- FIG. 6 shows a flowchart for an exemplary algorithm to build a virtual page.
- the first printable data may take the form of a PDL description of a document and the intermediate printable data may take the form of a display list of objects generated from the PDL description.
- FIG. 1 shows a block diagram illustrating components in a system for printing documents according to some embodiments of the present invention.
- a computer software application consistent with the present invention may be deployed on a network of computers, as shown in FIG. 1 , that are connected through communication links that allow information to be exchanged using conventional communication protocols and/or data port interfaces.
- exemplary system 100 includes computers including a computing device 110 and a server 130 . Further, computing device 110 and server 130 may communicate over a connection 120 , which may pass through network 140 , which in one case could be the Internet.
- Computing device 110 may be a computer workstation, desktop computer, laptop computer, or any other computing device capable of being used in a networked environment.
- Server 130 may be a platform capable of connecting to computing device 110 and other devices (not shown). Computing device 110 and server 130 may be capable of executing software (not shown) that allows the printing of documents using printers 170 .
- Exemplary printer 170 includes devices that produce physical documents from electronic data including, but not limited to, laser printers, ink-jet printers, LED printers, plotters, facsimile machines, and digital copiers.
- printer 170 may also be capable of directly printing documents received from computing device 110 or server 130 over connection 120 . In some embodiments such an arrangement may allow for the direct printing of documents, with (or without) additional processing by computing device 110 or server 130 .
- documents may contain one or more of text, graphics, and images.
- printer 170 may receive PDL descriptions of documents for printing. Note, too, that document print processing can be distributed.
- computing device 110 , server 130 , and/or the printer may perform portions of document print processing such as half-toning, color matching, and/or other manipulation processes before a document is physically printed by printer 170 .
- Computing device 110 also contains removable media drive 150 .
- Removable media drive 150 may include, for example, 3.5 inch floppy drives, CD-ROM drives, DVD ROM drives, CD ⁇ RW or DVD ⁇ RW drives, USB flash drives, and/or any other removable media drives consistent with embodiments of the present invention.
- portions of the software application may reside on removable media and be read and executed by computing device 110 using removable media drive 150 .
- Connection 120 couples computing device 110 , server 130 , and printer 170 and may be implemented as a wired or wireless connection using conventional communication protocols and/or data port interfaces.
- connections 120 can be any communication channel that allows transmission of data between the devices.
- the devices may be provided with conventional data ports, such as parallel ports, serial ports, Ethernet, USB, SCSI, FIREWIRE, and/or coaxial cable ports for transmission of data through the appropriate connection.
- connection 120 may be a Digital Subscriber Line (DSL), an Asymmetric Digital Subscriber Line (ADSL), or a cable connection.
- the communication links could be wireless links or wired links or any combination consistent with embodiments of the present invention that allows communication between the various devices.
- Network 140 could include a Local Area Network (LAN), a Wide Area Network (WAN), or the Internet. In some embodiments, information sent over network 140 may be encrypted to ensure the security of the data being transmitted.
- Printer 170 may be connected to network 140 through connection 120 . In some embodiments, printer 170 may also be connected directly to computing device 110 and/or server 130 . System 100 may also include other peripheral devices (not shown), according to some embodiments of the present invention.
- a computer software application consistent with the present invention may be deployed on any of the exemplary computers, as shown in FIG. 1 . For example, computing device 110 could execute software that may be downloaded directly from server 130 . Portions of the application may also be executed by printer 170 in accordance with some embodiments of the present invention.
- FIG. 2 shows a high-level block diagram of exemplary printer 170 .
- printer 170 may contain bus 174 that couples CPU 176 , firmware 171 , memory 172 , input-output ports 175 , print engine 177 , and secondary storage device 173 .
- Printer 170 may also contain other Application Specific Integrated Circuits (ASICs), and/or Field Programmable Gate Arrays (FPGAs) 178 that are capable of executing portions of an application to print documents according to some embodiments of the present invention.
- ASICs Application Specific Integrated Circuits
- FPGAs Field Programmable Gate Arrays
- printer 170 may also be able to access secondary storage or other memory in computing device 110 using I/O ports 175 and connection 120 .
- printer 170 may also be capable of executing software including a printer operating system and other appropriate application software. In some embodiments, printer 170 may allow paper sizes, output trays, color selections, and print resolution, among other options, to be user-configurable.
- CPU 176 may be a general-purpose processor, a special purpose processor, or an embedded processor. CPU 176 can exchange data including control information and instructions with memory 172 and/or firmware 171 .
- Memory 172 may be any type of Dynamic Random Access Memory (“DRAM”) such as but not limited to SDRAM, or RDRAM.
- Firmware 171 may hold instructions and data including but not limited to a boot-up sequence, pre-defined routines, and other code.
- code and data in firmware 171 may be copied to memory 172 prior to being acted upon by CPU 176 . Routines in firmware 171 may include code to translate page descriptions received from computing device 110 to display lists and image bands.
- firmware 171 may include rasterization routines to convert display commands in a display list to an appropriate rasterized bit map and store the bit map in memory 172 .
- Firmware 171 may also include compression routines and memory management routines.
- data and instructions in firmware 171 may be upgradeable.
- CPU 176 may act upon instructions and data and provide control and data to ASICs/FPGAs 178 and print engine 177 to generate printed documents.
- ASICs/FPGAs 178 may also provide control and data to print engine 177 .
- FPGAs/ASICs 178 may also implement one or more of translation, compression, and rasterization algorithms.
- computing device 110 can transform document data into a first printable data. Then, the first printable data can be sent to printer 170 for transformation into intermediate printable data. Printer 170 may transform intermediate printable data into a final form of printable data and print according to this final form. In some embodiments, the first printable data may correspond to a PDL description of a document.
- the translation process from a PDL description of a document to the final printable data comprising of a series of lower-level printer-specific commands may include the generation intermediate printable data comprising of display lists of objects.
- display lists may hold one or more of text, graphics, and image data objects.
- objects in display lists may correspond to similar objects in a user document.
- display lists may aid in the generation of intermediate printable data.
- display lists may be stored in memory 172 or secondary storage 173 .
- Exemplary secondary storage 173 may be an internal or external hard disk, memory stick, or any other memory storage device capable of being used system 200 .
- the display list may reside one or more of printer 170 , computing device 110 , and server 130 .
- Memory to store display lists may be a dedicated memory or form part of general purpose memory, or some combination thereof according to some embodiments of the present invention.
- memory may be dynamically allocated to hold display lists as needed.
- memory allocated to store display lists may be dynamically released after processing.
- FIG. 3 shows an exemplary high-level architecture of a system for creating and managing display lists flexibly according to some embodiments of the present invention.
- language server 340 , engine server 360 , and raster server 320 may communicate with each other.
- language server 340 , engine server 360 , and raster server 320 may invoke routines and communicate with RDL library 330 .
- the display list may include commands defining data objects and their contexts within a document or a page within the document to be printed. These display commands may include data comprising characters or text, line drawings or vectors, and images or raster data.
- the display list may be dynamically reconfigurable and is termed a Reconfigurable Display List (“RDL”).
- RDL Reconfigurable Display List
- the translation of a PDL description of a document into a display list representation may be performed by language server 340 using routines in RDL library 330 .
- language server 340 may take PDL language primitives and transform these into data and graphical objects and add these to the display list using the capability provided by RDL library 330 .
- access to functions and routines in RDL library 330 may be provided through an Application Programming Interface (“API”).
- the display list may be stored and manipulated in a dynamically allocated memory pool such as exemplary RDL memory pool 320 .
- the display list may be a second or intermediate step in the processing of data prior to actual printing and may be parsed before conversion into a subsequent form.
- the subsequent form may be a final representation, and the conversion process may be referred to as rasterizing the data.
- rasterization may be performed by raster server 320 .
- the rasterized data may be stored in frame buffer 350 , which may be part of memory 172 .
- Print engine 177 may process the rasterized data in frame buffer 350 , and form a printable image of the page on a print medium, such as paper.
- raster server 320 and engine server 360 may also use routines in RDL library 330 to perform their functions.
- engine server 360 may provide control information, instructions, and data to print engine 177 .
- engine server 360 may free memory used by display list objects after processing for return to RDL memory pool 320 .
- portions of RDL memory pool and/or frame buffer 350 may reside in memory 172 or secondary storage 173 .
- routines for language server 340 , raster server 320 , and engine server 360 may be provided in firmware 171 or may be implemented using ASICs/FPGAs 178 .
- FIG. 4 shows an exemplary data structure 400 for flexible display lists, according to some embodiments of the present invention.
- flexible display lists may take the form of RDLs.
- flexible display lists such as exemplary RDLs, may be stored in a data structure, such as exemplary data structure 400 that facilitates the dynamic manipulation and processing of data objects.
- a physical page may comprise one or more virtual or logical pages.
- a virtual or logical page may be represented by exemplary vpage data structure 410 .
- Instantiated vpage data structures 410 are referred to as vpages.
- exemplary vpage data 410 allows a logical model of a virtual page to be stored and manipulated in memory, such as exemplary memory 172 .
- vpage data structure 410 may include information specific to a virtual or logical page, including offsets to geometric bands, reference bands, and compression bands.
- a virtual page may further comprise one or more bands, which are also called geometric bands.
- the bands may be horizontal bands or sections each holding objects present within that band of the logical page.
- vpage data structure 410 may include offsets to or reference a linked list comprising of instances of exemplary individual band data structures (also called geometric band data structures) 420 .
- Instantiated band data structures 420 are referred to as bands (or geometric bands).
- vpage data structure may further comprise a linked list of instances of exemplary individual band data structures 420 .
- each vpage data structure 410 may include information about any bands that it references.
- a band or geometric band relates to a geometrically defined region within the geometrical bounds of a virtual page. Typically this geometric region is rectangular in nature and may be as large as the vpage boundaries, or a sub region of the vpage.
- the printable region of a vpage includes all geometric bands contained within that vpage.
- band data is used to refer to object data within block 440 that is linked to a node data structure 430 that is further linked to band data structure 420 .
- individual band data structure 420 may contain data objects pertaining to that entire band.
- each band data structure may include offsets to or reference a linked list of instances of individual node data structures 430 .
- Instantiated node data structures 430 are referred to as nodes.
- each band data structure 420 may include information about any nodes that it references.
- individual node data structure 430 may include offsets to or reference any associated (zero or more) blocks of memory (“blocks”) 440 .
- block 440 may be used to store intermediate graphical objects and other data generated from a PDL description.
- language server 340 may generate intermediate graphical objects and other data objects from a PDL description for use by raster server 320 .
- each node data structure may include information about any blocks that it references.
- blocks 440 may be a uniform, fixed size.
- vpage data structure 410 , band data structure 420 , and node data structure 430 are also referred to as control data structures.
- data stored in data structure 400 may also be accessed and edited.
- printer 170 language server 340 may invoke routines from RDL library 330 leading to the instantiations of vpage data structure 410 and an appropriate number of band data structures 420 .
- the system may maintain a list of free vpages, bands, and nodes in a vpage control data field, a band control data field, and a node control data field, respectively.
- an instantiation of another vpage data structure 410 may occur for new virtual pages.
- an instantiation of another band data structure may occur for new bands in a virtual page.
- objects generated by language server 340 may be used to build a vpage.
- a vpage may be rasterized by raster server 320 .
- a vpage may be rasterized band-by-band until all bands have been processed.
- a band may be rasterized object-by-object until all objects have been provided to the rasterizer for that band.
- the order in which bands may be rasterized may not be sequential.
- multiple finished vpages may exist in the system at any given time. These may include vpages whose rasterization process has not completed. In some embodiments, vpages need not be rasterized in the order of their construction.
- engine server 360 may invoke routines in RDL library to delete the vpage from memory, and release memory used by that vpage to memory pool 310 .
- FIG. 5 shows an exemplary organization 500 of RDL memory pool 310 according some embodiments of the present invention.
- RDL memory pool 310 may include one or more instances of data structure 400 .
- memory may be allocated at boot time to RDL memory pool 310 .
- RDL memory pool 310 may be allocated from memory 172 .
- the memory allocated at boot time may be a pre-determined amount of memory.
- Memory allocated to RDL memory pool 310 at boot time is termed the RDL base memory pool 310 - 1 .
- RDL memory pool may be allocated by the operating system, or by invoking routines RDL library 330 .
- additional memory 310 - 2 may be dynamically allocated and added to the base memory pool during system operation to increase the amount of memory available to RDL memory pool 310 .
- Exemplary RDL memory pool 310 includes base memory pool 310 - 1 and additional memory pool 310 - 2 .
- Memory may also be dynamically released from RDL memory pool 310 during system operation and made available for other uses.
- routines invoked from RDL library 330 by language server 340 , raster server 320 , engine server 360 , or other system components may use memory or access data structures specifically allocated to RDL memory pool 310 .
- global structure 520 may be allocated for use by RDL library 330 and other system components. In some embodiments, only a single instance of the global structure 520 may be allocated.
- global structure 520 may include fields for management of RDL memory pool 310 .
- global structure 520 may include fields for offsets indicating the start of each memory pool; lists of blocks, nodes, bands, and vpages; offsets to various buffers, including compression, decompression, and compaction; and/or semaphores or other access co-ordination structures to synchronize access to RDL's memory by various system components.
- the starting address of RDL base memory pool 310 - 1 may be used to allocate an instance of global structure 520 .
- zero or more buffers 530 may also be allocated in RDL memory pool 310 .
- buffers 530 may be used for compression.
- Global structure 520 may include offsets to or reference buffers 530 as well as fields that contain information about buffers 530 .
- memory remaining in RDL memory pool 310 after allocation of RDL global structure 520 may be divided into a number of segments 540 .
- all segments 540 may be of a predetermined and/or fixed size.
- the size of memory block 440 may correspond to the size of segment 540 .
- Some memory 550 may remain after the allocation of segments.
- segment 540 may hold any control data structure such as vpage data structure 410 , band data structure 420 , or node data structure 430 . In some embodiments, segment 540 may also hold block 440 . In some embodiments, segments 540 are dynamically allocated using unallocated segments in RDL memory pool 310 . In some embodiments, certain segments 540 may be used as a temporary working area at various points in time by routines in RDL library 330 . For example, some segments 540 may be used as working area to rasterize data associated with one or more nodes. In some embodiments, the system may ensure the availability of adequate segments 540 for any working areas prior to allocating additional segments 540 from available unallocated memory in RDL memory pool 310 .
- FIG. 6 shows a flowchart for an exemplary algorithm 600 to build a virtual page.
- a new vpage data structure 410 may be instantiated, and one or more new band data structures 420 may be associated with the vpage.
- a list of free segments may be used to determine which blocks to allocate to vpages and bands.
- algorithm 600 determines whether additional objects are being added to the vpage. If additional objects are being added to the vpage, then algorithm 600 determines if adequate space is available to add the object in step 650 .
- information pertaining to blocks 440 associated with the last instantiated node may be used to determine if adequate space is available to add the object. If space is available then the object may be added to the block 440 in step 640 and the algorithm returns to step 620 .
- step 660 the algorithm determines if there are sufficient contiguous segments 540 available to hold the object. If there are enough contiguous segments 540 , then, in step 670 , needed segments 540 can be allocated, a new node may be instantiated and associated with the current band, and needed blocks 440 may then be associated with the node. Next, in step 640 , the object is added to newly allocated blocks 440 and the algorithm returns to step 620 .
- step 665 if there is enough memory available to hold the object, but an inadequate number of contiguous segments 540 , then, in step 690 , compaction may be used to create an adequate number of contiguous segments 540 .
- step 670 needed segments 540 may then be allocated, a new node may be instantiated and associated with the current band, and needed blocks 440 may then be associated with the node.
- step 640 the object is added to newly allocated blocks 440 and the algorithm returns to step 620 .
- step 665 if not enough memory is available to hold the object, then, in step 680 blocks may be freed by waiting, and/or requesting additional memory pool 310 - 2 , and/or using one or more memory recovery schemes.
- step 670 needed segments 540 may then be allocated, a new node may be instantiated and associated with the current band, and needed blocks 440 may then be associated with the node.
- step 640 the new data object is added to newly allocated blocks 440 and the algorithm returns to step 620 .
- step 620 if there are no additional objects to be added, then, in step 630 , the vpage has been built. The algorithm returns to step 610 , where it may commence the building of new vpage.
- language server 340 may generate some of the graphical or other data objects, and invoke routines in RDL library 330 to place the generated objects in an RDL.
- routines invoked in RDL library 330 may instantiate a node data structure 430 and associate the node with an appropriate band. Invoked routines may also allocate one or more blocks 440 and associate the allocated blocks 440 with the new node.
- the graphical or data object generated by language server 340 may then be copied into one or more of the blocks 440 associated with the node.
- additional graphical or data objects that may be generated by language server 340 may also be copied into appropriate available associated blocks 440 .
- blocks 440 associated with a node are full, then a new node may be allocated, associated with the appropriate band, and blocks 440 available in memory pool 310 may be associated to the new node. The object may then be copied into one or more new blocks 440 .
- language server 340 may determine the available space in blocks 440 associated with a node and generate data or graphical objects that fit into the available space.
- a large object may be broken up into two or more smaller objects to allow one of the smaller objects to be placed in the unused space available in a block 440 associated with a node.
- large objects that do not fit into a single block 440 may be placed in multiple contiguous blocks 440 associated with a node.
- unused blocks 440 may be rearranged and joined in memory to create a single larger contiguous block associated with a specific node.
- band data structure 420 which contains information about a band related to a vpage, may include region independent data.
- band data may include objects that may have geometric boundaries that extend beyond the bounds of a particular geometric band.
- band data may include objects that are used multiple times.
- when data or graphical objects generated by language server 340 span geometric band boundaries the objects may be stored in a separate reference band and an offset to the location of the object in the reference band is stored at an appropriate location in that specific geometric band.
- objects that are repeatedly used in a virtual page, or a document may also be stored in a reference band. The use of reference bands to store repeatedly used objects optimizes memory utilization and allows a repeatedly used object to be placed in a reference band once, but used multiple times across bands.
- routines in RDL library may be invoked to free some allocated memory blocks 440 .
- an algorithm to free allocated memory blocks may be terminated if an adequate number of blocks are made available.
- the system may simply wait for vpages to be deleted and for memory to be freed.
- the system may cycle through all vpages and free blocks 440 that are in both memory pool 310 and in an alternate storage location. For example, blocks 440 that have been written to secondary storage 173 may be freed.
- the system may also execute one or more memory recover strategies.
- Memory recover strategies may include compression of data blocks.
- data blocks may be compressed using zlib, gzip, or a host of other well-known lossless data compression algorithms.
- buffers 530 may be used as working areas during compression.
- node data structure 430 may be referenced by geometric bands, reference bands, compression bands, or any other band-like structure. Compression bands may contain associated node linked block data in a compressed state.
- blocks 440 freed as a result of the compression may be returned to memory pool 310 for subsequent allocation.
- a field in the node is updated to indicate the location of compressed data in the compression band.
- a node's compressed data may be deleted when the entire vpage has been processed.
- images in the data blocks of a vpage may be compressed.
- the images may be compressed in-place.
- buffers 530 may be used as working areas during compression. Compressed images occupy less space consequently objects in the band following the image may be copied into areas freed by image compression.
- image compression followed by the copying of subsequent objects into areas freed by image compression may result in the freeing of blocks 440 , which are then returned to memory pool 310 for allocation.
- image compression may be accomplished by using well-known image compression algorithms such as JPEG.
- all future images may also be compressed before being put into a display list to maintain uniform image quality and prevent differences between different images.
- a compression factor such as the Q factor in JPEG may be specified and/or varied.
- each image may be decompressed.
- lossless image compression techniques may be utilized.
- all blocks 440 associated with nodes in a vpage may be stored in secondary storage 173 .
- storage on computing device 110 or server 130 may be used.
- a file system, DMA storage, compressed memory, USB flash drives, memory sticks, hard disks, or some other type of memory may be used.
- all blocks 440 associated with a node may be written to a file system in a serial manner. After blocks 440 have been stored, they may be deleted and any freed memory returned to memory pool 310 . During rasterization stored blocks 440 may be copied back to memory pool 310 . In some embodiments, copies of stored blocks 440 in secondary storage 173 may be deleted when the vpage is no longer needed.
- product-specific functions may also be implemented to increase memory available to RDL memory pool 310 .
- printer 170 may be able to request that additional memory, such as exemplary memory 310 - 2 , be added to RDL memory pool 310 using memory currently outside RDL memory pool 310 .
- a vpage being built by language server 340 may be pre-rasterized. “Pre-rasterization” is a process by which the graphical objects in blocks 440 in a vpage are rasterized and stored in frame buffer 350 . Blocks 440 that have been pre-rasterized may then be freed.
- additional (non pre-rasterized) blocks 440 in the partially-rasterized vpage may continue to be built.
- multiple pre-rasterization cycles may be applied to a vpage during construction of that vpage.
- a program for conducting the above process can be recorded on computer-readable media 150 or computer-readable memory.
- computer-readable media 150 include, but are not limited to, Read Only Memory (ROM), Programmable Read Only Memory (PROM), Flash Memory, Non-Volatile Random Access Memory (NVRAM), or digital memory cards such as secure digital (SD) memory cards, Compact FlashTM, Smart MediaTM, Memory StickTM, and the like.
- ROM Read Only Memory
- PROM Programmable Read Only Memory
- NVRAM Non-Volatile Random Access Memory
- digital memory cards such as secure digital (SD) memory cards, Compact FlashTM, Smart MediaTM, Memory StickTM, and the like.
- one or more types of computer-readable media may be coupled to printer 170 .
- portions of a program to implement the systems, methods, and structures disclosed may be delivered over network 140 .
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Record Information Processing For Printing (AREA)
Abstract
Systems and methods consistent with some embodiments of the present invention provide data structures and methods for the automatic storing, manipulating and processing of a intermediate printable data generated from a first printable data are presented. In some embodiments, the first printable data may take the form of a PDL description of a document and the intermediate printable data may take the form of a display list of objects generated from the PDL description.
In some embodiments, a data structure for storing a intermediate printable data generated from a first printable data may comprise at least one memory pool, which may further comprise a plurality of uniformly sized segments to store the intermediate printable data; at least one global structure for storing information related to the one or more memory pools; and buffers for performing operations on the first printable data and the intermediate printable data.
Description
- 1. Field of the Invention
- The present invention relates to the field of printing and in particular, to systems and methods to manage display lists.
- 2. Description of Related Art
- Document processing software allows users to view, edit, process, and store documents conveniently. Pages in a document may be displayed on screen exactly as they would appear in print. However, before the document can be printed, pages in the document are often described in a page description language (“PDL”). As used in this application PDL's may include PostScript, Adobe PDF, HP PCL, Microsoft XPS, and variants thereof as well as any other languages used to describe pages in a document. A PDL description of a document provides a high-level description of each page in a document. This PDL description is often translated to a series of lower-level printer-specific commands when the document is being printed.
- The translation process from PDL to lower-level printer-specific commands may be complex and depend on the features and capabilities offered by a particular printer. A printer manufacturer will often make several trade-offs in order to optimize printer performance based on available memory, desired print speed, and other cost and performance issues. For example, a manufacturer may choose to limit the maximum resolution of a printer with limited memory in order to improve the throughput of the printer. Because the eventual trade-offs are model specific, the introduction of new printers or upgrades to existing printers often require revisiting the optimization decisions and may even result in a major overhaul of translation algorithms. Consequently, the introduction of new printer models, or upgrades to existing printers, may be more expensive, sub-optimal, and needlessly delayed. Moreover, the optimal use of printer resources allows a more complete exploitation of available printer capability and leads to good performance. Thus, there is a need for flexible and portable general-purpose schemes to translate PDL descriptions of documents to printer-specific commands.
- In accordance with the present invention, systems and methods for the automatic storing, manipulating, and processing of a second or intermediate form of printable data generated from a first printable data are presented. In some embodiments, the first printable data may take the form of a PDL description of a document and the intermediate printable data may take the form of a display list of objects generated from the PDL description.
- In some embodiments, a computer memory comprising a data structure for storing an intermediate printable data generated from a first printable data may comprise at least one memory pool, which may further comprise a plurality of uniformly sized segments to store the intermediate printable data; at least one global structure for storing information related to the one or more memory pools; and buffers for performing operations on the first printable data and the intermediate printable data. In some embodiments, the uniformly sized segments may occupy contiguous memory locations. In some embodiments, the uniformly sized segments may have a predetermined size. In some embodiments, uniformly sized segments may comprise of either control data structures, or a block to store objects present in the intermediate printable data.
- In some embodiments, the control data structure may comprise one or more of virtual pages, bands, and nodes. In some embodiments, the vpage data structure may comprise a linked list of geometric band data structures representing geometric bands associated with the virtual page, wherein the geometric band data structure may further comprise a linked list of node data structures, wherein the node data structure may include references to any associated blocks. In some embodiments, the data managed by the geometric band may contain offsets to objects stored in a reference band. In some embodiments, the reference band may be configured to hold to data or graphical objects. In some embodiments, the data or graphical objects span geometric band boundaries. In some embodiments, the data or graphical objects may be repeatedly used. In some embodiments, the vpage data structure may include offsets to a compression band. In some embodiments, the compression band may be configured to hold compressed data or compressed graphical objects.
- In some embodiments, the objects in the bands, nodes, and blocks may be individually accessed, edited, and processed. Processing of the objects may include one or more of the operations of compression, decompression, and pre-rasterization. In some embodiments, each block may hold one or more of a data object, a graphical object, and/or offsets to data or graphical objects. In some embodiments, each block may be uniformly-sized, and equal in size to the uniformly-sized segments.
- In some embodiments, the global structure pertaining to the at least one memory pool may include fields for one or more of offsets to the start of the at least one memory pool; mechanisms to regulate access to the at least one memory pool; offsets to the start of the buffers; and lists of vpages, bands, nodes, and blocks. In some embodiments, the buffers may include one or more of compression buffers, decompression buffers, and compaction buffers. In some embodiments, the memory pool may include a base memory pool, which may be allocated at boot time and may also include additional dynamically allocated memory pools.
- Embodiments of the present invention also relate to data structures created, stored, accessed, or modified by processors using computer-readable media or computer-readable memory.
- These and other embodiments are further explained below with respect to the following figures.
-
FIG. 1 shows a block diagram illustrating components in a system for printing documents according to some embodiments of the present invention. -
FIG. 2 shows a high level block diagram of an exemplary printer. -
FIG. 3 shows an exemplary high-level architecture of a system for flexible display lists according to some embodiments of the present invention. -
FIG. 4 shows an exemplary data structure for flexible display lists according to some embodiments of the present invention. -
FIG. 5 shows the organization of exemplary memory pools according some embodiments of the present invention. -
FIG. 6 shows a flowchart for an exemplary algorithm to build a virtual page. - In accordance with embodiments reflecting various features of the present invention, systems and methods for the automatic storing, manipulating, and processing of a second or intermediate form of printable data generated from a first printable data are presented. In some embodiments, the first printable data may take the form of a PDL description of a document and the intermediate printable data may take the form of a display list of objects generated from the PDL description.
-
FIG. 1 shows a block diagram illustrating components in a system for printing documents according to some embodiments of the present invention. A computer software application consistent with the present invention may be deployed on a network of computers, as shown inFIG. 1 , that are connected through communication links that allow information to be exchanged using conventional communication protocols and/or data port interfaces. - As shown in
FIG. 1 ,exemplary system 100 includes computers including acomputing device 110 and aserver 130. Further,computing device 110 andserver 130 may communicate over aconnection 120, which may pass throughnetwork 140, which in one case could be the Internet.Computing device 110 may be a computer workstation, desktop computer, laptop computer, or any other computing device capable of being used in a networked environment.Server 130 may be a platform capable of connecting to computingdevice 110 and other devices (not shown).Computing device 110 andserver 130 may be capable of executing software (not shown) that allows the printing ofdocuments using printers 170. -
Exemplary printer 170 includes devices that produce physical documents from electronic data including, but not limited to, laser printers, ink-jet printers, LED printers, plotters, facsimile machines, and digital copiers. In some embodiments,printer 170 may also be capable of directly printing documents received fromcomputing device 110 orserver 130 overconnection 120. In some embodiments such an arrangement may allow for the direct printing of documents, with (or without) additional processing bycomputing device 110 orserver 130. In some embodiments, documents may contain one or more of text, graphics, and images. In some embodiments,printer 170 may receive PDL descriptions of documents for printing. Note, too, that document print processing can be distributed. Thus,computing device 110,server 130, and/or the printer may perform portions of document print processing such as half-toning, color matching, and/or other manipulation processes before a document is physically printed byprinter 170. -
Computing device 110 also contains removable media drive 150. Removable media drive 150 may include, for example, 3.5 inch floppy drives, CD-ROM drives, DVD ROM drives, CD±RW or DVD±RW drives, USB flash drives, and/or any other removable media drives consistent with embodiments of the present invention. In some embodiments, portions of the software application may reside on removable media and be read and executed by computingdevice 110 using removable media drive 150. -
Connection 120couples computing device 110,server 130, andprinter 170 and may be implemented as a wired or wireless connection using conventional communication protocols and/or data port interfaces. In general,connections 120 can be any communication channel that allows transmission of data between the devices. In one embodiment, for example, the devices may be provided with conventional data ports, such as parallel ports, serial ports, Ethernet, USB, SCSI, FIREWIRE, and/or coaxial cable ports for transmission of data through the appropriate connection. In some embodiments,connection 120 may be a Digital Subscriber Line (DSL), an Asymmetric Digital Subscriber Line (ADSL), or a cable connection. The communication links could be wireless links or wired links or any combination consistent with embodiments of the present invention that allows communication between the various devices. -
Network 140 could include a Local Area Network (LAN), a Wide Area Network (WAN), or the Internet. In some embodiments, information sent overnetwork 140 may be encrypted to ensure the security of the data being transmitted.Printer 170 may be connected to network 140 throughconnection 120. In some embodiments,printer 170 may also be connected directly tocomputing device 110 and/orserver 130.System 100 may also include other peripheral devices (not shown), according to some embodiments of the present invention. A computer software application consistent with the present invention may be deployed on any of the exemplary computers, as shown inFIG. 1 . For example,computing device 110 could execute software that may be downloaded directly fromserver 130. Portions of the application may also be executed byprinter 170 in accordance with some embodiments of the present invention. -
FIG. 2 shows a high-level block diagram ofexemplary printer 170. In some embodiments,printer 170 may containbus 174 that couplesCPU 176,firmware 171,memory 172, input-output ports 175,print engine 177, andsecondary storage device 173.Printer 170 may also contain other Application Specific Integrated Circuits (ASICs), and/or Field Programmable Gate Arrays (FPGAs) 178 that are capable of executing portions of an application to print documents according to some embodiments of the present invention. In some embodiments,printer 170 may also be able to access secondary storage or other memory incomputing device 110 using I/O ports 175 andconnection 120. In some embodiments,printer 170 may also be capable of executing software including a printer operating system and other appropriate application software. In some embodiments,printer 170 may allow paper sizes, output trays, color selections, and print resolution, among other options, to be user-configurable. - In some embodiments,
CPU 176 may be a general-purpose processor, a special purpose processor, or an embedded processor.CPU 176 can exchange data including control information and instructions withmemory 172 and/orfirmware 171.Memory 172 may be any type of Dynamic Random Access Memory (“DRAM”) such as but not limited to SDRAM, or RDRAM.Firmware 171 may hold instructions and data including but not limited to a boot-up sequence, pre-defined routines, and other code. In some embodiments, code and data infirmware 171 may be copied tomemory 172 prior to being acted upon byCPU 176. Routines infirmware 171 may include code to translate page descriptions received fromcomputing device 110 to display lists and image bands. In some embodiments,firmware 171 may include rasterization routines to convert display commands in a display list to an appropriate rasterized bit map and store the bit map inmemory 172.Firmware 171 may also include compression routines and memory management routines. In some embodiments, data and instructions infirmware 171 may be upgradeable. - In some embodiments,
CPU 176 may act upon instructions and data and provide control and data to ASICs/FPGAs 178 andprint engine 177 to generate printed documents. In some embodiments, ASICs/FPGAs 178 may also provide control and data to printengine 177. FPGAs/ASICs 178 may also implement one or more of translation, compression, and rasterization algorithms. In some embodiments,computing device 110 can transform document data into a first printable data. Then, the first printable data can be sent toprinter 170 for transformation into intermediate printable data.Printer 170 may transform intermediate printable data into a final form of printable data and print according to this final form. In some embodiments, the first printable data may correspond to a PDL description of a document. In some embodiments, the translation process from a PDL description of a document to the final printable data comprising of a series of lower-level printer-specific commands may include the generation intermediate printable data comprising of display lists of objects. In some embodiments, display lists may hold one or more of text, graphics, and image data objects. In some embodiments, objects in display lists may correspond to similar objects in a user document. In some embodiments, display lists may aid in the generation of intermediate printable data. In some embodiments, display lists may be stored inmemory 172 orsecondary storage 173. Exemplarysecondary storage 173 may be an internal or external hard disk, memory stick, or any other memory storage device capable of being used system 200. In some embodiments, the display list may reside one or more ofprinter 170,computing device 110, andserver 130. Memory to store display lists may be a dedicated memory or form part of general purpose memory, or some combination thereof according to some embodiments of the present invention. In some embodiments, memory may be dynamically allocated to hold display lists as needed. In some embodiments, memory allocated to store display lists may be dynamically released after processing. -
FIG. 3 shows an exemplary high-level architecture of a system for creating and managing display lists flexibly according to some embodiments of the present invention. As shown inFIG. 3 ,language server 340,engine server 360, andraster server 320 may communicate with each other. In addition,language server 340,engine server 360, andraster server 320 may invoke routines and communicate withRDL library 330. In some embodiments, the display list may include commands defining data objects and their contexts within a document or a page within the document to be printed. These display commands may include data comprising characters or text, line drawings or vectors, and images or raster data. In some embodiments, the display list may be dynamically reconfigurable and is termed a Reconfigurable Display List (“RDL”). - In some embodiments the translation of a PDL description of a document into a display list representation may be performed by
language server 340 using routines inRDL library 330. In some embodiments,language server 340 may take PDL language primitives and transform these into data and graphical objects and add these to the display list using the capability provided byRDL library 330. In some embodiments, access to functions and routines inRDL library 330 may be provided through an Application Programming Interface (“API”). In some embodiments, the display list may be stored and manipulated in a dynamically allocated memory pool such as exemplaryRDL memory pool 320. In some embodiments, the display list may be a second or intermediate step in the processing of data prior to actual printing and may be parsed before conversion into a subsequent form. In some embodiments the subsequent form may be a final representation, and the conversion process may be referred to as rasterizing the data. In some embodiments rasterization may be performed byraster server 320. Upon rasterization, the rasterized data may be stored inframe buffer 350, which may be part ofmemory 172.Print engine 177, may process the rasterized data inframe buffer 350, and form a printable image of the page on a print medium, such as paper. In some embodiments,raster server 320 andengine server 360 may also use routines inRDL library 330 to perform their functions. In some embodiments,engine server 360 may provide control information, instructions, and data to printengine 177. In some embodiments,engine server 360 may free memory used by display list objects after processing for return toRDL memory pool 320. In some embodiments, portions of RDL memory pool and/orframe buffer 350 may reside inmemory 172 orsecondary storage 173. In some embodiments, routines forlanguage server 340,raster server 320, andengine server 360 may be provided infirmware 171 or may be implemented using ASICs/FPGAs 178. -
FIG. 4 shows anexemplary data structure 400 for flexible display lists, according to some embodiments of the present invention. In some embodiments, flexible display lists may take the form of RDLs. In some embodiments, flexible display lists, such as exemplary RDLs, may be stored in a data structure, such asexemplary data structure 400 that facilitates the dynamic manipulation and processing of data objects. In some embodiments, a physical page may comprise one or more virtual or logical pages. In some embodiments, a virtual or logical page may be represented by exemplaryvpage data structure 410. Instantiatedvpage data structures 410 are referred to as vpages. In some embodiments,exemplary vpage data 410 allows a logical model of a virtual page to be stored and manipulated in memory, such asexemplary memory 172. In some embodiments,vpage data structure 410 may include information specific to a virtual or logical page, including offsets to geometric bands, reference bands, and compression bands. - In some embodiments, a virtual page may further comprise one or more bands, which are also called geometric bands. In some embodiments, the bands may be horizontal bands or sections each holding objects present within that band of the logical page. Accordingly,
vpage data structure 410 may include offsets to or reference a linked list comprising of instances of exemplary individual band data structures (also called geometric band data structures) 420. Instantiatedband data structures 420 are referred to as bands (or geometric bands). In some embodiments, vpage data structure may further comprise a linked list of instances of exemplary individualband data structures 420. In some embodiments, eachvpage data structure 410 may include information about any bands that it references. A band or geometric band relates to a geometrically defined region within the geometrical bounds of a virtual page. Typically this geometric region is rectangular in nature and may be as large as the vpage boundaries, or a sub region of the vpage. In some embodiments, the printable region of a vpage includes all geometric bands contained within that vpage. - The term band data is used to refer to object data within
block 440 that is linked to anode data structure 430 that is further linked toband data structure 420. In some embodiments, individualband data structure 420 may contain data objects pertaining to that entire band. In some embodiments each band data structure may include offsets to or reference a linked list of instances of individualnode data structures 430. Instantiatednode data structures 430 are referred to as nodes. In some embodiments, eachband data structure 420 may include information about any nodes that it references. - In some embodiments, individual
node data structure 430 may include offsets to or reference any associated (zero or more) blocks of memory (“blocks”) 440. In some embodiments, block 440 may be used to store intermediate graphical objects and other data generated from a PDL description. In some embodiments,language server 340 may generate intermediate graphical objects and other data objects from a PDL description for use byraster server 320. In some embodiments, each node data structure may include information about any blocks that it references. In some embodiments, blocks 440 may be a uniform, fixed size. In this specification,vpage data structure 410,band data structure 420, andnode data structure 430 are also referred to as control data structures. In some embodiments, data stored indata structure 400 may also be accessed and edited. - In some embodiments, when a job is received by
printer 170language server 340 may invoke routines fromRDL library 330 leading to the instantiations ofvpage data structure 410 and an appropriate number ofband data structures 420. In some embodiments, the system may maintain a list of free vpages, bands, and nodes in a vpage control data field, a band control data field, and a node control data field, respectively. In some embodiments, an instantiation of anothervpage data structure 410 may occur for new virtual pages. In some embodiments, an instantiation of another band data structure may occur for new bands in a virtual page. - In some embodiments, objects generated by
language server 340 may be used to build a vpage. A vpage may be rasterized byraster server 320. In some embodiments, a vpage may be rasterized band-by-band until all bands have been processed. In some embodiments, a band may be rasterized object-by-object until all objects have been provided to the rasterizer for that band. In some embodiments, the order in which bands may be rasterized may not be sequential. In some embodiments, multiple finished vpages may exist in the system at any given time. These may include vpages whose rasterization process has not completed. In some embodiments, vpages need not be rasterized in the order of their construction. After rasterization is complete,engine server 360 may invoke routines in RDL library to delete the vpage from memory, and release memory used by that vpage tomemory pool 310. -
FIG. 5 shows anexemplary organization 500 ofRDL memory pool 310 according some embodiments of the present invention. In some embodiments,RDL memory pool 310 may include one or more instances ofdata structure 400. In some embodiments, memory may be allocated at boot time toRDL memory pool 310. In some embodiments,RDL memory pool 310 may be allocated frommemory 172. In some embodiments, the memory allocated at boot time may be a pre-determined amount of memory. Memory allocated toRDL memory pool 310 at boot time is termed the RDL base memory pool 310-1. In some embodiments, RDL memory pool may be allocated by the operating system, or by invokingroutines RDL library 330. In some embodiments, additional memory 310-2 may be dynamically allocated and added to the base memory pool during system operation to increase the amount of memory available toRDL memory pool 310. ExemplaryRDL memory pool 310 includes base memory pool 310-1 and additional memory pool 310-2. Memory may also be dynamically released fromRDL memory pool 310 during system operation and made available for other uses. In some embodiments, routines invoked fromRDL library 330 bylanguage server 340,raster server 320,engine server 360, or other system components may use memory or access data structures specifically allocated toRDL memory pool 310. - At boot-time, one or more instances of
global structure 520 may be allocated for use byRDL library 330 and other system components. In some embodiments, only a single instance of theglobal structure 520 may be allocated. In some embodiments,global structure 520 may include fields for management ofRDL memory pool 310. For example,global structure 520 may include fields for offsets indicating the start of each memory pool; lists of blocks, nodes, bands, and vpages; offsets to various buffers, including compression, decompression, and compaction; and/or semaphores or other access co-ordination structures to synchronize access to RDL's memory by various system components. - In some embodiments, the starting address of RDL base memory pool 310-1 may be used to allocate an instance of
global structure 520. In some embodiments, zero ormore buffers 530 may also be allocated inRDL memory pool 310. In some embodiments,buffers 530 may be used for compression.Global structure 520 may include offsets to orreference buffers 530 as well as fields that contain information aboutbuffers 530. In some embodiments, memory remaining inRDL memory pool 310 after allocation of RDLglobal structure 520 may be divided into a number ofsegments 540. In some embodiments, allsegments 540 may be of a predetermined and/or fixed size. In some embodiments, the size ofmemory block 440 may correspond to the size ofsegment 540. Somememory 550 may remain after the allocation of segments. - In some embodiments,
segment 540 may hold any control data structure such asvpage data structure 410,band data structure 420, ornode data structure 430. In some embodiments,segment 540 may also holdblock 440. In some embodiments,segments 540 are dynamically allocated using unallocated segments inRDL memory pool 310. In some embodiments,certain segments 540 may be used as a temporary working area at various points in time by routines inRDL library 330. For example, somesegments 540 may be used as working area to rasterize data associated with one or more nodes. In some embodiments, the system may ensure the availability ofadequate segments 540 for any working areas prior to allocatingadditional segments 540 from available unallocated memory inRDL memory pool 310. -
FIG. 6 shows a flowchart for anexemplary algorithm 600 to build a virtual page. Instep 610, a newvpage data structure 410 may be instantiated, and one or more newband data structures 420 may be associated with the vpage. In some embodiments, a list of free segments may be used to determine which blocks to allocate to vpages and bands. Instep 620,algorithm 600 determines whether additional objects are being added to the vpage. If additional objects are being added to the vpage, thenalgorithm 600 determines if adequate space is available to add the object instep 650. In some embodiments, information pertaining toblocks 440 associated with the last instantiated node may be used to determine if adequate space is available to add the object. If space is available then the object may be added to theblock 440 instep 640 and the algorithm returns to step 620. - If the space available is inadequate, then in
step 660, the algorithm determines if there are sufficientcontiguous segments 540 available to hold the object. If there are enoughcontiguous segments 540, then, instep 670, neededsegments 540 can be allocated, a new node may be instantiated and associated with the current band, and neededblocks 440 may then be associated with the node. Next, instep 640, the object is added to newly allocatedblocks 440 and the algorithm returns to step 620. - In
step 665, if there is enough memory available to hold the object, but an inadequate number ofcontiguous segments 540, then, instep 690, compaction may be used to create an adequate number ofcontiguous segments 540. Instep 670, neededsegments 540 may then be allocated, a new node may be instantiated and associated with the current band, and neededblocks 440 may then be associated with the node. Next, instep 640, the object is added to newly allocatedblocks 440 and the algorithm returns to step 620. - In
step 665, if not enough memory is available to hold the object, then, instep 680 blocks may be freed by waiting, and/or requesting additional memory pool 310-2, and/or using one or more memory recovery schemes. Instep 670, neededsegments 540 may then be allocated, a new node may be instantiated and associated with the current band, and neededblocks 440 may then be associated with the node. Next, instep 640, the new data object is added to newly allocatedblocks 440 and the algorithm returns to step 620. - In
step 620, if there are no additional objects to be added, then, instep 630, the vpage has been built. The algorithm returns to step 610, where it may commence the building of new vpage. - In some embodiments,
language server 340 may generate some of the graphical or other data objects, and invoke routines inRDL library 330 to place the generated objects in an RDL. In some embodiments, routines invoked inRDL library 330 may instantiate anode data structure 430 and associate the node with an appropriate band. Invoked routines may also allocate one ormore blocks 440 and associate the allocatedblocks 440 with the new node. The graphical or data object generated bylanguage server 340 may then be copied into one or more of theblocks 440 associated with the node. In some embodiments, additional graphical or data objects that may be generated bylanguage server 340 may also be copied into appropriate available associated blocks 440. In some embodiments, ifblocks 440 associated with a node are full, then a new node may be allocated, associated with the appropriate band, and blocks 440 available inmemory pool 310 may be associated to the new node. The object may then be copied into one or morenew blocks 440. - In some embodiments,
language server 340 may determine the available space inblocks 440 associated with a node and generate data or graphical objects that fit into the available space. In some embodiments, a large object may be broken up into two or more smaller objects to allow one of the smaller objects to be placed in the unused space available in ablock 440 associated with a node. In some embodiments, large objects that do not fit into asingle block 440 may be placed in multiplecontiguous blocks 440 associated with a node. In some embodiments,unused blocks 440 may be rearranged and joined in memory to create a single larger contiguous block associated with a specific node. - In some embodiments,
band data structure 420, which contains information about a band related to a vpage, may include region independent data. For example, band data may include objects that may have geometric boundaries that extend beyond the bounds of a particular geometric band. In some instances, band data may include objects that are used multiple times. In some embodiments, when data or graphical objects generated bylanguage server 340 span geometric band boundaries the objects may be stored in a separate reference band and an offset to the location of the object in the reference band is stored at an appropriate location in that specific geometric band. In some embodiments, objects that are repeatedly used in a virtual page, or a document, may also be stored in a reference band. The use of reference bands to store repeatedly used objects optimizes memory utilization and allows a repeatedly used object to be placed in a reference band once, but used multiple times across bands. - In some embodiments, if all
available blocks 440 have been allocated, routines in RDL library may be invoked to free some allocated memory blocks 440. In some embodiments, an algorithm to free allocated memory blocks may be terminated if an adequate number of blocks are made available. In some embodiments, the system may simply wait for vpages to be deleted and for memory to be freed. In some embodiments, the system may cycle through all vpages andfree blocks 440 that are in bothmemory pool 310 and in an alternate storage location. For example, blocks 440 that have been written tosecondary storage 173 may be freed. - In some embodiments, the system may also execute one or more memory recover strategies. Memory recover strategies may include compression of data blocks. In some embodiments, data blocks may be compressed using zlib, gzip, or a host of other well-known lossless data compression algorithms. In some embodiments,
buffers 530 may be used as working areas during compression. In some embodiments, for each band in a vpage, all data blocks may be compressed and the compressed data may be placed in a compression band that is associated with the vpage. In some embodiments,node data structure 430 may be referenced by geometric bands, reference bands, compression bands, or any other band-like structure. Compression bands may contain associated node linked block data in a compressed state. In some embodiments, blocks 440 freed as a result of the compression may be returned tomemory pool 310 for subsequent allocation. In some embodiments, afterblocks 440 associated with a node have been compressed, a field in the node is updated to indicate the location of compressed data in the compression band. In some embodiments, a node's compressed data may be deleted when the entire vpage has been processed. - In some embodiments, images in the data blocks of a vpage may be compressed. In some embodiments, the images may be compressed in-place. In some embodiments,
buffers 530 may be used as working areas during compression. Compressed images occupy less space consequently objects in the band following the image may be copied into areas freed by image compression. In some embodiments, image compression followed by the copying of subsequent objects into areas freed by image compression may result in the freeing ofblocks 440, which are then returned tomemory pool 310 for allocation. In some embodiments, image compression may be accomplished by using well-known image compression algorithms such as JPEG. In some embodiments, if images in a vpage are compressed, all future images may also be compressed before being put into a display list to maintain uniform image quality and prevent differences between different images. In some embodiments, a compression factor such as the Q factor in JPEG may be specified and/or varied. In some embodiments, at rasterization time, each image may be decompressed. In some embodiments, lossless image compression techniques may be utilized. - In some embodiments, all
blocks 440 associated with nodes in a vpage may be stored insecondary storage 173. In some embodiments, storage oncomputing device 110 orserver 130 may be used. In some embodiments, a file system, DMA storage, compressed memory, USB flash drives, memory sticks, hard disks, or some other type of memory may be used. In some embodiments, allblocks 440 associated with a node may be written to a file system in a serial manner. Afterblocks 440 have been stored, they may be deleted and any freed memory returned tomemory pool 310. During rasterization storedblocks 440 may be copied back tomemory pool 310. In some embodiments, copies of storedblocks 440 insecondary storage 173 may be deleted when the vpage is no longer needed. - In some embodiments, product-specific functions may also be implemented to increase memory available to
RDL memory pool 310. For example,printer 170 may be able to request that additional memory, such as exemplary memory 310-2, be added toRDL memory pool 310 using memory currently outsideRDL memory pool 310. In some embodiments, a vpage being built bylanguage server 340 may be pre-rasterized. “Pre-rasterization” is a process by which the graphical objects inblocks 440 in a vpage are rasterized and stored inframe buffer 350.Blocks 440 that have been pre-rasterized may then be freed. In some embodiments, after completion of a pre-rasterization cycle, additional (non pre-rasterized) blocks 440 in the partially-rasterized vpage may continue to be built. In some embodiments, multiple pre-rasterization cycles may be applied to a vpage during construction of that vpage. - In some embodiments, a program for conducting the above process can be recorded on computer-
readable media 150 or computer-readable memory. These include, but are not limited to, Read Only Memory (ROM), Programmable Read Only Memory (PROM), Flash Memory, Non-Volatile Random Access Memory (NVRAM), or digital memory cards such as secure digital (SD) memory cards, Compact Flash™, Smart Media™, Memory Stick™, and the like. In some embodiments, one or more types of computer-readable media may be coupled toprinter 170. In certain embodiments, portions of a program to implement the systems, methods, and structures disclosed may be delivered overnetwork 140. - Other embodiments of the present invention will be apparent to those skilled in the art from consideration of the specification and practice of one or more embodiments of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.
Claims (22)
1-22. (canceled)
23. A method for managing display lists in a memory pool, wherein the memory pool comprises a plurality of uniformly sized segments with at least one control data structure the method comprising:
adding a display list object to a block that was most recently associated with the control data structure, if sufficient unused memory is available within the block to hold the display list object;
adding the display list object to a new block associated with the control data structure and created by using an additional segment, if the size of the display list object exceeds the size of unused memory within the block that was most recently associated with the control data structure;
adding the display list object to a new block associated with the control data structure and created from two or more unused contiguous segments, if the size of the display list object exceeds the size of a segment; and
adding the display list object to a new block associated with the control data structure and created by applying at least one of a plurality of memory recovery strategies, if the combination of unused contiguous segments is insufficient to hold the display list object.
24. The method of claim 23 , wherein the plurality of memory recovery strategies comprise of:
waiting for memory blocks to be freed;
adding additional available free memory to the memory pool;
compacting blocks associated with the control data structure for the memory pool;
freeing blocks associated with control data structures in the memory pool that are also stored at an alternate location;
compressing display list objects in blocks associated with control data structures in memory; and
storing previously existing display list objects in secondary storage.
25. The method of claim 23 , wherein the size of the segments can be chosen from one of several pre-determined sizes.
26. The method of claim 23 , wherein adding the display list object to a new block associated with the control data structure and created by combining a two or more unused contiguous segments comprises:
determining the number of contiguous segments needed to hold the display list object;
associating a new block comprising the combined unused contiguous segments with the control data structure; and
adding the display list object to the new block.
27. The method of claim 24 , wherein waiting for memory blocks to be freed comprises one of:
waiting until an adequate number of memory blocks sufficient to hold the display list object have been freed; and
terminating the wait if the size of the display list object exceeds currently available memory including any freed memory blocks and it is unlikely that any further memory blocks will be freed.
28. The method of claim 24 , wherein waiting for memory blocks to be freed comprises associating a new block comprising of one or more memory segments resulting from freed memory blocks with the control data structure, wherein the memory blocks are freed during the waiting period.
29. The method of claim 24 , wherein adding additional available free memory to the memory pool comprises:
allocating additional available free memory not currently within the memory pool to increase the size of the memory pool; and
associating a new block comprising of one or more memory segments resulting from the additionally available memory with the control data structure.
30. The method of claim 29 , further comprising deallocating the additional allocated memory after use.
31. The method of claim 29 , wherein the allocation of the additional available free memory to the memory pool is dynamic and occurs at execution time.
32. The method of claim 24 , wherein compacting blocks associated with the control data structure in the memory pool comprises:
rearranging memory blocks to form a set of contiguous segments; and
associating a new block comprising of one or more of the contiguous memory segments resulting from the rearrangement of memory blocks with the control data structure.
33. The method of claim 24 , wherein freeing blocks associated with control data structures in the memory pool that are also stored at an alternate location comprises:
deleting blocks with duplicated display list objects;
freeing blocks that held the display list objects; and
associating a new block comprising of one or more memory segments resulting from freed memory blocks with the control data structure.
34. The method of claim 24 , wherein compressing display list objects in blocks associated with control data structures in memory comprises one or more of the steps of:
compressing display list objects in blocks associated with the control data structure;
storing each compressed display list object in a compression band;
storing information pertaining to the compression bands at locations in the control data structure associated with the blocks that held display list objects corresponding to the compression bands;
freeing blocks that held the display list objects; and
associating a new block comprising of one or more memory segments resulting from freed memory blocks with the control data structure.
35. The method of claim 34 , wherein compressing display list objects in blocks associated with the control data structure comprises one or more of the steps of:
compressing data in blocks associated with the control data structure; and
compressing image data in blocks associated with the control data structure.
36. The method of claim 35 , wherein data is compressed using one of ZLIB compression, GZIP compression, or any other lossless data compression algorithm.
37. The method of claim 35 , wherein image data is compressed using JPEG compression, with a specified Q-factor.
38. The method of claim 23 , wherein the memory pool is resident on a printing device.
39. The method of claim 24 , wherein storing previously existing display list objects in secondary storage comprises:
storing one or more display list objects at locations on a secondary storage device;
storing address information for the stored display list objects at locations in the control data structure associated with the blocks that held the stored display list objects;
freeing blocks that held the stored display list objects; and
associating a new block comprising of one or more memory segments resulting from freed memory blocks with the control data structure.
40. A computer-readable medium that stores instructions, which when executed by a processor perform a method for managing display lists in a memory pool, wherein the memory pool comprises a plurality of uniformly sized segments with at least one control data structure the method comprising:
adding a display list object to a block that was most recently associated with the control data structure, if sufficient unused memory is available within the block to hold the display list object;
adding the display list object by using an additional segment, if the size of the display list object exceeds the size of unused memory within the block that was most recently associated with the control data structure;
adding the display list object by combining a two or more unused contiguous segments, if the size of the display list object exceeds the size of a segment; and
adding the display list object to a new block associated with the control data structure and created by applying at least one of a plurality of memory recovery strategies, if the combination of unused contiguous segments is insufficient to hold the display list object.
41. The method of claim 40 , wherein the plurality of memory recovery strategies comprise of:
waiting for memory blocks to be freed;
adding additional available free memory to the memory pool;
compacting blocks associated with the control data structure for the memory pool;
freeing blocks associated with control data structures in the memory pool that are also stored at an alternate location;
compressing display list objects in blocks associated with control data structures in memory; and
storing previously existing display list objects in secondary storage.
42. A computer readable memory containing instructions for controlling a processor to perform a method of managing display lists in a memory pool, wherein the memory pool comprises a plurality of uniformly sized segments with at least one control data structure the method comprising:
adding a display list object to a block that was most recently associated with the control data structure, if sufficient unused memory is available within the block to hold the display list object;
adding the display list object by using an additional segment, if the size of the display list object exceeds the size of unused memory within the block that was most recently associated with the control data structure;
adding the display list object by combining a two or more unused contiguous segments, if the size of the display list object exceeds the size of a segment; and
adding the display list object to a new block associated with the control data structure and created by applying at least one of a plurality of memory recovery strategies, if the combination of unused contiguous segments is insufficient to hold the display list object.
43. The method of claim 42 , wherein the plurality of memory recovery strategies comprise of:
waiting for memory blocks to be freed;
adding additional available free memory to the memory pool;
compacting blocks associated with the control data structure for the memory pool;
freeing blocks associated with control data structures in the memory pool that are also stored at an alternate location;
compressing display list objects in blocks associated with control data structures in memory; and
storing previously existing display list objects in secondary storage.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/515,337 US20070229900A1 (en) | 2006-03-31 | 2006-08-31 | Systems and methods for display list management |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/394,783 US8526049B2 (en) | 2006-03-31 | 2006-03-31 | Systems and methods for display list management |
US11/515,337 US20070229900A1 (en) | 2006-03-31 | 2006-08-31 | Systems and methods for display list management |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/394,783 Continuation US8526049B2 (en) | 2006-03-31 | 2006-03-31 | Systems and methods for display list management |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070229900A1 true US20070229900A1 (en) | 2007-10-04 |
Family
ID=38558445
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/394,783 Expired - Fee Related US8526049B2 (en) | 2006-03-31 | 2006-03-31 | Systems and methods for display list management |
US11/515,337 Abandoned US20070229900A1 (en) | 2006-03-31 | 2006-08-31 | Systems and methods for display list management |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/394,783 Expired - Fee Related US8526049B2 (en) | 2006-03-31 | 2006-03-31 | Systems and methods for display list management |
Country Status (1)
Country | Link |
---|---|
US (2) | US8526049B2 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070236733A1 (en) * | 2006-03-31 | 2007-10-11 | Stuart Guarnieri | Systems and methods for display list management |
US20090249017A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Memory Management for Rasterization |
US20090244593A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Parallel Display List Rasterization |
US20100060934A1 (en) * | 2008-09-11 | 2010-03-11 | Darrell Eugene Bellert | Systems and Methods for Optimal Memory Allocation Units |
US20100079809A1 (en) * | 2008-09-30 | 2010-04-01 | Darrell Eugene Bellert | Systems and Methods for Optimized Printer Throughput in a Multi-Core Environment |
US8817032B2 (en) | 2008-08-29 | 2014-08-26 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for framebuffer management |
US20150032930A1 (en) * | 2011-12-30 | 2015-01-29 | Zhongxing Microelectronics Technology Co.Ltd | Hardware abstract data structure, data processing method and system |
JP2017170884A (en) * | 2016-03-16 | 2017-09-28 | キヤノン株式会社 | Image processing device, control method thereof, and program |
US10374628B2 (en) * | 2017-04-05 | 2019-08-06 | International Business Machines Corporation | In-place data compression with small working memory |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011126210A (en) * | 2009-12-18 | 2011-06-30 | Canon Inc | Printing data processor, print data processing method, and program |
US8762830B2 (en) | 2010-06-30 | 2014-06-24 | Konica Minolta Laboratory U.S.A, Inc. | Rendering data in the correct z-order |
US11514027B2 (en) * | 2019-06-07 | 2022-11-29 | Sap Se | Paged hybrid LOBs |
Citations (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5010515A (en) * | 1987-07-28 | 1991-04-23 | Raster Technologies, Inc. | Parallel graphics processor with workload distributing and dependency mechanisms and method for distributing workload |
US5319778A (en) * | 1991-07-16 | 1994-06-07 | International Business Machines Corporation | System for manipulating elements in linked lists sharing one or more common elements using head nodes containing common offsets for pointers of the linked lists |
US5471579A (en) * | 1992-11-10 | 1995-11-28 | Hitachi, Ltd. | Graphics system using parallel processors and processing method of the same |
US5479587A (en) * | 1992-09-03 | 1995-12-26 | Hewlett-Packard Company | Page printer having adaptive data compression for memory minimization |
US5491808A (en) * | 1992-09-30 | 1996-02-13 | Conner Peripherals, Inc. | Method for tracking memory allocation in network file server |
US5502462A (en) * | 1993-11-01 | 1996-03-26 | The 3Do Company | Display list management mechanism for real-time control of by-the-line modifiable video display system |
US5577243A (en) * | 1994-03-31 | 1996-11-19 | Lexmark International, Inc. | Reallocation of returned memory blocks sorted in predetermined sizes and addressed by pointer addresses in a free memory list |
US5778414A (en) * | 1996-06-13 | 1998-07-07 | Racal-Datacom, Inc. | Performance enhancing memory interleaver for data frame processing |
US5793937A (en) * | 1996-03-29 | 1998-08-11 | Peerless Systems Corporation | Fallback processing for page generation using memory reduction techniques |
US5864342A (en) * | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US5870534A (en) * | 1996-02-29 | 1999-02-09 | Canon Kabushiki Kaisha | Image processing apparatus and method |
US5913018A (en) * | 1996-07-24 | 1999-06-15 | Adobe Systems Incorporated | Print band rendering system |
US5959867A (en) * | 1996-09-24 | 1999-09-28 | Splash Technology, Inc. | Computer system and process for efficient processing of a page description using a display list |
US5978893A (en) * | 1996-06-19 | 1999-11-02 | Apple Computer, Inc. | Method and system for memory management |
US5999709A (en) * | 1997-04-18 | 1999-12-07 | Adobe Systems Incorporated | Printer memory boost |
US6031995A (en) * | 1996-11-06 | 2000-02-29 | George; A. Chacko | Object-oriented sequencing using hierarchical configuration streams |
US6040917A (en) * | 1997-10-27 | 2000-03-21 | Hewlett-Packard Company | Memory partitioning for multi-resolution pauseless page printing |
US6057847A (en) * | 1996-12-20 | 2000-05-02 | Jenkins; Barry | System and method of image generation and encoding using primitive reprojection |
US6111582A (en) * | 1996-12-20 | 2000-08-29 | Jenkins; Barry L. | System and method of image generation and encoding using primitive reprojection |
US6192157B1 (en) * | 1998-10-27 | 2001-02-20 | Hewlett-Packard Company | Modifications of postscript adaptive data compression (ADC) for 3 plane, 8 bit color images, JPEG lossy compression, and variable Q factors |
US6249793B1 (en) * | 1999-06-10 | 2001-06-19 | Sun Microsystems, Inc. | Mostly concurrent compaction in a garbage collection system |
US20010015820A1 (en) * | 1998-07-13 | 2001-08-23 | Hewlett-Packard Company | Method and apparatus for conservation of memory in a printer through selective compression of a display list |
US20010055129A1 (en) * | 2000-04-27 | 2001-12-27 | Haruo Shimizu | Image processing apparatus, image processing method, and storage medium |
US6366289B1 (en) * | 1998-07-17 | 2002-04-02 | Microsoft Corporation | Method and system for managing a display image in compressed and uncompressed blocks |
US20020063894A1 (en) * | 1998-08-28 | 2002-05-30 | Russell Campbell | Conservation of printer memory on the composition page |
US20020078298A1 (en) * | 1999-01-29 | 2002-06-20 | Joseph M. Jeddeloh | Method to access memory based on a programmable page limit |
US20020093669A1 (en) * | 1998-08-28 | 2002-07-18 | Russell Campbell | Complexity extensions for band management in a printer page pipe |
US20020097433A1 (en) * | 2001-01-19 | 2002-07-25 | Chang William Ho | Method of operating an information apparatus and software for carrying out the method |
US20020120826A1 (en) * | 2001-02-23 | 2002-08-29 | Siva Venkatraman | Method and apparatus for reconfigurable memory |
US6490670B1 (en) * | 1998-04-24 | 2002-12-03 | International Business Machines Corporation | Method and apparatus for efficiently allocating objects in object oriented systems |
US6643759B2 (en) * | 2001-03-30 | 2003-11-04 | Mips Technologies, Inc. | Mechanism to extend computer memory protection schemes |
US6701420B1 (en) * | 1999-02-01 | 2004-03-02 | Hewlett-Packard Company | Memory management system and method for allocating and reusing memory |
US20040044873A1 (en) * | 2002-08-29 | 2004-03-04 | Wanmo Wong | Linear object management for a range of flash memory |
US20040098544A1 (en) * | 2002-11-15 | 2004-05-20 | Gaither Blaine D. | Method and apparatus for managing a memory system |
US20040120007A1 (en) * | 2002-12-19 | 2004-06-24 | Jacobsen Dana A. | Method and apparatus for forming a display list |
US6778292B1 (en) * | 1999-08-19 | 2004-08-17 | Seiko Epson Corporation | Printer host and storage medium storing the operation program therefor |
US20040193775A1 (en) * | 2001-08-15 | 2004-09-30 | Egidius Gerardus Petrus Van Doren | Memory pools with moving memory blocks |
US20040207861A1 (en) * | 2003-03-25 | 2004-10-21 | Brother Kogyo Kabushiki Kaisha | Image processing device |
US6809730B2 (en) * | 1999-09-17 | 2004-10-26 | Imagination Technologies Limited | Depth based blending for 3D graphics systems |
US20040233207A1 (en) * | 2000-06-08 | 2004-11-25 | Imagination Technologies Limited | Memory management for systems for generating 3-dimensional computer images |
US20050044549A1 (en) * | 2003-08-18 | 2005-02-24 | Konica Minolta Business Technologies, Inc. | Data processing apparatus |
US6860203B2 (en) * | 2000-09-07 | 2005-03-01 | Canon Kabushiki Kaisha | Method and apparatus for printing computer generated images |
US20050067498A1 (en) * | 2003-09-30 | 2005-03-31 | Canon Kabushiki Kaisha | Method for generating a display list |
US20060069898A1 (en) * | 2004-09-30 | 2006-03-30 | Mehul Patel | Memory manager for an embedded system |
US7113302B2 (en) * | 2001-10-16 | 2006-09-26 | Texas Instruments Incorporated | Printer with unified display list and banded display lists |
US20060288187A1 (en) * | 2005-06-16 | 2006-12-21 | International Business Machines Corporation | Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment |
US7196710B1 (en) * | 2000-08-23 | 2007-03-27 | Nintendo Co., Ltd. | Method and apparatus for buffering graphics data in a graphics system |
US20070146785A1 (en) * | 2005-12-26 | 2007-06-28 | Konica Minolta Business Technologies, Inc. | Image forming apparatus, image forming method and recording medium having program recorded thereon |
US20070236733A1 (en) * | 2006-03-31 | 2007-10-11 | Stuart Guarnieri | Systems and methods for display list management |
US20080162863A1 (en) * | 2002-04-16 | 2008-07-03 | Mcclure Steven T | Bucket based memory allocation |
US7447836B2 (en) * | 2006-02-14 | 2008-11-04 | Software Site Applications, Limited Liability Company | Disk drive storage defragmentation system |
US20090086254A1 (en) * | 2007-09-28 | 2009-04-02 | Mike Hy Duong | Systems and Methods for Dynamic Printer Configuration |
US20090172336A1 (en) * | 2007-12-28 | 2009-07-02 | Wolfgang Schmidt | Allocating Memory in a Broker System |
US20090244593A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Parallel Display List Rasterization |
US20090249017A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Memory Management for Rasterization |
US20100053179A1 (en) * | 2008-08-29 | 2010-03-04 | Darrell Eugene Bellert | Systems and Methods for Framebuffer Management |
US20100060934A1 (en) * | 2008-09-11 | 2010-03-11 | Darrell Eugene Bellert | Systems and Methods for Optimal Memory Allocation Units |
US20100079809A1 (en) * | 2008-09-30 | 2010-04-01 | Darrell Eugene Bellert | Systems and Methods for Optimized Printer Throughput in a Multi-Core Environment |
US7697168B2 (en) * | 2005-06-09 | 2010-04-13 | Canon Kabushiki Kaisha | Image processing apparatus and method for generating bitmap data and attribute information from a raster data |
US7715031B2 (en) * | 2002-06-14 | 2010-05-11 | Kyocera Mita Corporation | Method and apparatus for generating an image for output to a raster device |
US8045215B2 (en) * | 2002-10-18 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Printer object list resolutions |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2797400B2 (en) | 1989-04-18 | 1998-09-17 | 富士ゼロックス株式会社 | Data display control device |
US5884342A (en) * | 1996-07-18 | 1999-03-23 | Maake; Roger W. | Toilet seat and lid hinge |
JP2005073004A (en) | 2003-08-26 | 2005-03-17 | Konica Minolta Business Technologies Inc | Method and device for managing frame buffer |
US7415481B2 (en) * | 2004-09-30 | 2008-08-19 | Microsoft Corporation | Method and implementation for referencing of dynamic data within spreadsheet formulas |
JP4053545B2 (en) | 2005-01-11 | 2008-02-27 | 株式会社ルネサステクノロジ | Graphics processor and graphics processing apparatus |
-
2006
- 2006-03-31 US US11/394,783 patent/US8526049B2/en not_active Expired - Fee Related
- 2006-08-31 US US11/515,337 patent/US20070229900A1/en not_active Abandoned
Patent Citations (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5010515A (en) * | 1987-07-28 | 1991-04-23 | Raster Technologies, Inc. | Parallel graphics processor with workload distributing and dependency mechanisms and method for distributing workload |
US5319778A (en) * | 1991-07-16 | 1994-06-07 | International Business Machines Corporation | System for manipulating elements in linked lists sharing one or more common elements using head nodes containing common offsets for pointers of the linked lists |
US5479587A (en) * | 1992-09-03 | 1995-12-26 | Hewlett-Packard Company | Page printer having adaptive data compression for memory minimization |
US5491808A (en) * | 1992-09-30 | 1996-02-13 | Conner Peripherals, Inc. | Method for tracking memory allocation in network file server |
US5471579A (en) * | 1992-11-10 | 1995-11-28 | Hitachi, Ltd. | Graphics system using parallel processors and processing method of the same |
US5502462A (en) * | 1993-11-01 | 1996-03-26 | The 3Do Company | Display list management mechanism for real-time control of by-the-line modifiable video display system |
US5577243A (en) * | 1994-03-31 | 1996-11-19 | Lexmark International, Inc. | Reallocation of returned memory blocks sorted in predetermined sizes and addressed by pointer addresses in a free memory list |
US6326964B1 (en) * | 1995-08-04 | 2001-12-04 | Microsoft Corporation | Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system |
US5864342A (en) * | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US5870534A (en) * | 1996-02-29 | 1999-02-09 | Canon Kabushiki Kaisha | Image processing apparatus and method |
US5793937A (en) * | 1996-03-29 | 1998-08-11 | Peerless Systems Corporation | Fallback processing for page generation using memory reduction techniques |
US5778414A (en) * | 1996-06-13 | 1998-07-07 | Racal-Datacom, Inc. | Performance enhancing memory interleaver for data frame processing |
US5978893A (en) * | 1996-06-19 | 1999-11-02 | Apple Computer, Inc. | Method and system for memory management |
US5913018A (en) * | 1996-07-24 | 1999-06-15 | Adobe Systems Incorporated | Print band rendering system |
US5959867A (en) * | 1996-09-24 | 1999-09-28 | Splash Technology, Inc. | Computer system and process for efficient processing of a page description using a display list |
US6031995A (en) * | 1996-11-06 | 2000-02-29 | George; A. Chacko | Object-oriented sequencing using hierarchical configuration streams |
US6111582A (en) * | 1996-12-20 | 2000-08-29 | Jenkins; Barry L. | System and method of image generation and encoding using primitive reprojection |
US6057847A (en) * | 1996-12-20 | 2000-05-02 | Jenkins; Barry | System and method of image generation and encoding using primitive reprojection |
US5999709A (en) * | 1997-04-18 | 1999-12-07 | Adobe Systems Incorporated | Printer memory boost |
US6040917A (en) * | 1997-10-27 | 2000-03-21 | Hewlett-Packard Company | Memory partitioning for multi-resolution pauseless page printing |
US6490670B1 (en) * | 1998-04-24 | 2002-12-03 | International Business Machines Corporation | Method and apparatus for efficiently allocating objects in object oriented systems |
US20010015820A1 (en) * | 1998-07-13 | 2001-08-23 | Hewlett-Packard Company | Method and apparatus for conservation of memory in a printer through selective compression of a display list |
US6366289B1 (en) * | 1998-07-17 | 2002-04-02 | Microsoft Corporation | Method and system for managing a display image in compressed and uncompressed blocks |
US20020063894A1 (en) * | 1998-08-28 | 2002-05-30 | Russell Campbell | Conservation of printer memory on the composition page |
US20020093669A1 (en) * | 1998-08-28 | 2002-07-18 | Russell Campbell | Complexity extensions for band management in a printer page pipe |
US6192157B1 (en) * | 1998-10-27 | 2001-02-20 | Hewlett-Packard Company | Modifications of postscript adaptive data compression (ADC) for 3 plane, 8 bit color images, JPEG lossy compression, and variable Q factors |
US20020078298A1 (en) * | 1999-01-29 | 2002-06-20 | Joseph M. Jeddeloh | Method to access memory based on a programmable page limit |
US6701420B1 (en) * | 1999-02-01 | 2004-03-02 | Hewlett-Packard Company | Memory management system and method for allocating and reusing memory |
US6249793B1 (en) * | 1999-06-10 | 2001-06-19 | Sun Microsystems, Inc. | Mostly concurrent compaction in a garbage collection system |
US6778292B1 (en) * | 1999-08-19 | 2004-08-17 | Seiko Epson Corporation | Printer host and storage medium storing the operation program therefor |
US6809730B2 (en) * | 1999-09-17 | 2004-10-26 | Imagination Technologies Limited | Depth based blending for 3D graphics systems |
US20010055129A1 (en) * | 2000-04-27 | 2001-12-27 | Haruo Shimizu | Image processing apparatus, image processing method, and storage medium |
US20040233207A1 (en) * | 2000-06-08 | 2004-11-25 | Imagination Technologies Limited | Memory management for systems for generating 3-dimensional computer images |
US7196710B1 (en) * | 2000-08-23 | 2007-03-27 | Nintendo Co., Ltd. | Method and apparatus for buffering graphics data in a graphics system |
US6860203B2 (en) * | 2000-09-07 | 2005-03-01 | Canon Kabushiki Kaisha | Method and apparatus for printing computer generated images |
US20020097433A1 (en) * | 2001-01-19 | 2002-07-25 | Chang William Ho | Method of operating an information apparatus and software for carrying out the method |
US20020120826A1 (en) * | 2001-02-23 | 2002-08-29 | Siva Venkatraman | Method and apparatus for reconfigurable memory |
US6643759B2 (en) * | 2001-03-30 | 2003-11-04 | Mips Technologies, Inc. | Mechanism to extend computer memory protection schemes |
US20040193775A1 (en) * | 2001-08-15 | 2004-09-30 | Egidius Gerardus Petrus Van Doren | Memory pools with moving memory blocks |
US7113302B2 (en) * | 2001-10-16 | 2006-09-26 | Texas Instruments Incorporated | Printer with unified display list and banded display lists |
US20080162863A1 (en) * | 2002-04-16 | 2008-07-03 | Mcclure Steven T | Bucket based memory allocation |
US7715031B2 (en) * | 2002-06-14 | 2010-05-11 | Kyocera Mita Corporation | Method and apparatus for generating an image for output to a raster device |
US20040044873A1 (en) * | 2002-08-29 | 2004-03-04 | Wanmo Wong | Linear object management for a range of flash memory |
US8045215B2 (en) * | 2002-10-18 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Printer object list resolutions |
US20040098544A1 (en) * | 2002-11-15 | 2004-05-20 | Gaither Blaine D. | Method and apparatus for managing a memory system |
US20040120007A1 (en) * | 2002-12-19 | 2004-06-24 | Jacobsen Dana A. | Method and apparatus for forming a display list |
US20040207861A1 (en) * | 2003-03-25 | 2004-10-21 | Brother Kogyo Kabushiki Kaisha | Image processing device |
US20050044549A1 (en) * | 2003-08-18 | 2005-02-24 | Konica Minolta Business Technologies, Inc. | Data processing apparatus |
US20050067498A1 (en) * | 2003-09-30 | 2005-03-31 | Canon Kabushiki Kaisha | Method for generating a display list |
US20060069898A1 (en) * | 2004-09-30 | 2006-03-30 | Mehul Patel | Memory manager for an embedded system |
US7697168B2 (en) * | 2005-06-09 | 2010-04-13 | Canon Kabushiki Kaisha | Image processing apparatus and method for generating bitmap data and attribute information from a raster data |
US20060288187A1 (en) * | 2005-06-16 | 2006-12-21 | International Business Machines Corporation | Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment |
US20070146785A1 (en) * | 2005-12-26 | 2007-06-28 | Konica Minolta Business Technologies, Inc. | Image forming apparatus, image forming method and recording medium having program recorded thereon |
US7447836B2 (en) * | 2006-02-14 | 2008-11-04 | Software Site Applications, Limited Liability Company | Disk drive storage defragmentation system |
US20070236733A1 (en) * | 2006-03-31 | 2007-10-11 | Stuart Guarnieri | Systems and methods for display list management |
US20090086254A1 (en) * | 2007-09-28 | 2009-04-02 | Mike Hy Duong | Systems and Methods for Dynamic Printer Configuration |
US20090172336A1 (en) * | 2007-12-28 | 2009-07-02 | Wolfgang Schmidt | Allocating Memory in a Broker System |
US20090249017A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Memory Management for Rasterization |
US20090244593A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Parallel Display List Rasterization |
US8228555B2 (en) * | 2008-03-31 | 2012-07-24 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for parallel display list rasterization |
US20100053179A1 (en) * | 2008-08-29 | 2010-03-04 | Darrell Eugene Bellert | Systems and Methods for Framebuffer Management |
US20100060934A1 (en) * | 2008-09-11 | 2010-03-11 | Darrell Eugene Bellert | Systems and Methods for Optimal Memory Allocation Units |
US20100079809A1 (en) * | 2008-09-30 | 2010-04-01 | Darrell Eugene Bellert | Systems and Methods for Optimized Printer Throughput in a Multi-Core Environment |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070236733A1 (en) * | 2006-03-31 | 2007-10-11 | Stuart Guarnieri | Systems and methods for display list management |
US8526049B2 (en) | 2006-03-31 | 2013-09-03 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for display list management |
US8782371B2 (en) | 2008-03-31 | 2014-07-15 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for memory management for rasterization |
US20090249017A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Memory Management for Rasterization |
US20090244593A1 (en) * | 2008-03-31 | 2009-10-01 | Tim Prebble | Systems and Methods for Parallel Display List Rasterization |
US8228555B2 (en) | 2008-03-31 | 2012-07-24 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for parallel display list rasterization |
US8817032B2 (en) | 2008-08-29 | 2014-08-26 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for framebuffer management |
US20100060934A1 (en) * | 2008-09-11 | 2010-03-11 | Darrell Eugene Bellert | Systems and Methods for Optimal Memory Allocation Units |
US8854680B2 (en) | 2008-09-11 | 2014-10-07 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimal memory allocation units |
US20100079809A1 (en) * | 2008-09-30 | 2010-04-01 | Darrell Eugene Bellert | Systems and Methods for Optimized Printer Throughput in a Multi-Core Environment |
US8861014B2 (en) | 2008-09-30 | 2014-10-14 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimized printer throughput in a multi-core environment |
US20150032930A1 (en) * | 2011-12-30 | 2015-01-29 | Zhongxing Microelectronics Technology Co.Ltd | Hardware abstract data structure, data processing method and system |
US9804985B2 (en) * | 2011-12-30 | 2017-10-31 | Sanechips Technology Co., Ltd. | Hardware abstract data structure, data processing method and system |
JP2017170884A (en) * | 2016-03-16 | 2017-09-28 | キヤノン株式会社 | Image processing device, control method thereof, and program |
US10374628B2 (en) * | 2017-04-05 | 2019-08-06 | International Business Machines Corporation | In-place data compression with small working memory |
Also Published As
Publication number | Publication date |
---|---|
US20070236733A1 (en) | 2007-10-11 |
US8526049B2 (en) | 2013-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8526049B2 (en) | Systems and methods for display list management | |
US8861014B2 (en) | Systems and methods for optimized printer throughput in a multi-core environment | |
JP5475307B2 (en) | Memory management method, computer readable medium and apparatus for rasterization | |
US8953187B2 (en) | Systems and methods for print resource management | |
JP4543340B2 (en) | Image processing apparatus, image forming system, and program | |
US8854680B2 (en) | Systems and methods for optimal memory allocation units | |
JP4393076B2 (en) | Image processing method and apparatus | |
US8228555B2 (en) | Systems and methods for parallel display list rasterization | |
US20100079798A1 (en) | Image processing apparatus, image processing method, program therefor, and medium storing program | |
JP5261250B2 (en) | Print data processing apparatus, method, and computer-readable medium for processing page description language | |
US8817032B2 (en) | Systems and methods for framebuffer management | |
JP3814324B2 (en) | Print control apparatus and print control method | |
JP2004192390A (en) | Data processor | |
JP2012058795A (en) | Information processor, document image processor, electronic document processing method, and program | |
JP5244770B2 (en) | Image forming apparatus | |
JP2010111099A (en) | Image processing apparatus and its control method | |
JP2004038527A (en) | Printer driver, printing control method, computer-readable storage medium, and program | |
JPH11305962A (en) | Printing processor, data processing method therefor and medium for storing computer readable program | |
EP2293180B1 (en) | PDL data processing device and PDL data creating device | |
JP2001337805A (en) | Print system and control method | |
JP2008030400A (en) | Storage control method for image memory and image forming apparatus | |
JP2001205865A (en) | Print controller and printing system | |
JPH1195949A (en) | Data processor, printing controller, data processing method for the data processor, and storage medium storing computer-readable program | |
JPH11309910A (en) | Printing control apparatus and method for processing data of printing control apparatus and storage medium storing computer readable program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: KONICA MINOLTA LABORATORY U.S.A., INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:KONICA MINOLTA SYSTEMS LABORATORY, INC.;REEL/FRAME:027012/0081 Effective date: 20101231 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |