EP0334622A2 - Rasteroperationen - Google Patents

Rasteroperationen Download PDF

Info

Publication number
EP0334622A2
EP0334622A2 EP89302824A EP89302824A EP0334622A2 EP 0334622 A2 EP0334622 A2 EP 0334622A2 EP 89302824 A EP89302824 A EP 89302824A EP 89302824 A EP89302824 A EP 89302824A EP 0334622 A2 EP0334622 A2 EP 0334622A2
Authority
EP
European Patent Office
Prior art keywords
patch
plane
shifted
patches
planes
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.)
Withdrawn
Application number
EP89302824A
Other languages
English (en)
French (fr)
Other versions
EP0334622A3 (de
Inventor
Neil Francis Trevett
Malcolm Eric Wilson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
3Dlabs Ltd
Original Assignee
DuPont Pixel Systems Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from GB8806845A external-priority patent/GB2215952A/en
Priority claimed from GB8806841A external-priority patent/GB2215950A/en
Priority claimed from GB8806848A external-priority patent/GB2215953A/en
Priority claimed from GB8806837A external-priority patent/GB2215948A/en
Priority claimed from GB8806839A external-priority patent/GB2215949A/en
Priority claimed from GB8806843A external-priority patent/GB2215951A/en
Application filed by DuPont Pixel Systems Ltd filed Critical DuPont Pixel Systems Ltd
Publication of EP0334622A2 publication Critical patent/EP0334622A2/de
Publication of EP0334622A3 publication Critical patent/EP0334622A3/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Definitions

  • the present invention relates generally to image processing and more specifically to an apparatus and method for performing raster operation functions within an image memory.
  • Raster operations are used to perform operations on rectangular portions of images.
  • a first (source) rectangular area and a second (destination) rectangular area within an image memory can have any boolean operation performed between them; the result of such boolean operation is then placed in the destination rectangular area.
  • the simplest raster operation simply replaces the destination pixels with the source pixels. This is conventionally done on a pixel-by-­pixel basis. Each pixel is addressed, and the read pixel is then moved to its new location in the destination area using a new pixel address. Such a move is commonly referred to as a copy.
  • Such a simple copy involves a block transfer operation, the pixels at the source locations are copied as a group to the desired destination locations. Typically such a block move is done on a pixel-by-pixel basis. Such a copy results in the movement on the display screen of the copied pixels from the source locations to the destination locations.
  • More advanced raster operations typically involve boolean operations of the moved pixels so that the pixels at the destination locations reflect the boolean operations that are performed. Such boolean operations allow for desired modifications to the copied portion of the image.
  • boolean operations involve logical operations which are performed on the pixels. Boolean operations do not require carries or borrows. They are to be contrasted to arithmetic operations (add, subtract, multiply, and divide) which can require carries or borrows.
  • An image merge involves the combining of two images at the destination location. For 1 bit images, two images can be merged using an 'OR' operation. If the background of the images is '0' and any objects in the image are represented by pixels of the value '1', then a logical 'OR' will result in the destination image containing all the objects from both images.
  • FIG. 1 An example of a block copy operation using a logical "OR" will now be explained by reference to figures 1 and 2.
  • a source 102 including a first image is to be block copied to, and "ORed" with a destination area 104 which includes a second image.
  • the two areas 102,104 are logically "ORed” resulting in both images appearing in the destination area 104′ ( Figure 2).
  • Figure 2 It should be understood that in typical block copy operations where a logical operation is to be performed between the source and destination areas, the destination area effectively serves as a second source for purposes of providing data for the logical "OR".
  • the present invention comprises an new and efficient system and method for performing raster operation block transformation functions within an image memory (which includes the display memory and non-display or off screen memory, if any).
  • the operations can include a simple copy, any boolean function (including, but not limited to, OR, AND, INVERT, NO OPERATION, XOR, and combinations of these), arithmetic functions (including but not limited to, ADD, SUBTRACT, MULTIPLY, DIVIDE and combinations of these), plane swapping and/or masked copies.
  • a patch approach between the source and destination locations (areas or addresses) as opposed to a pixel-by-pixel approach is used.
  • a patch approach refers to the fact that pixels are accessed from the image (frame) memory in two dimensional patches of pixels (of a preselected rectangular area of adjacent pixels) in one memory cycle.
  • Patch access systems and methods have the great advantage that image data can be processed in large groups, (e.g. a patch of 20 pixels), thereby significantly increasing the speed at which an image can be manipulated, displayed and stored. For example, where patches defined by arrays of 5 by 4 of eight bit pixels are accessed, frame memory reads and writes will occur 160 bits at a time, thereby increasing the bandwidth of the pixel data bus twentyfold over pixel access systems (i.e. where the pixels are defined by eight bits). Further, the 5 X 4 patch organization is well suited to a standard high resolution graphic display monitor having 1280 by 1024 pixels. Organization of the pixel data into 5 by 4 patches means that the screen refresh memory has exactly 256 patches (and therefore addressable locations) in each of the X and Y directions. This type of equal dimension addressability of the image memory and associated display monitor makes many operations conceptually easier to work with and faster to perform.
  • the system and method of the present invention marks a significant advance in the ability of patch access processors to manipulate images to the granularity of a single pixel and to copy groups pixel data to and from areas not defined within patch boundaries.
  • the inventors have discovered a system architecture and methods of operation which reap all the advantages of patch access processing while allowing image X and Y (hereinafter XY) shift and/or merge manipulation to be performed to the granularity and addressability of a single pixel. Further, the inventors have gone beyond conventional concepts of the limits of pixel granularity by discovering a system and method of X and Y shift and/or merge manipulating pixel data across and within bit planes in a manner which enables bit positions to be exchanged within the same pixel and/or swapped between different pixels.
  • XY image X and Y
  • the system and method of the present invention performs raster operations in a patch access environment. It utilizes two or more source patches to produce an XY shifted patch. Even though the present invention operates in a patch environment, it can form a destination patch by merging groups of pixels not residing within the same pixel boundaries. The XY shifting and/or merging used to form the destination patches can be done on a patch plane basis or a patch basis.
  • the XY shifting and/or merging effectively combines preselected contiguous columns and rows, respectively, of contiguous patches.
  • a first line of horizontally contiguous patches is read from the source image.(Where the present invention is operating on a patch plane basis, one or more of these patches can be stored in an input patch register, which can provide patch planes as an output.)
  • the first patch in the line is shifted in by a selected number of columns in the X direction.
  • This first X shifted patch is then stored.
  • the next (second) source image patch in the horizontal line is shifted in by the selected number of columns in the X direction.
  • selected columns of the stored first X shifted patch are merged with selected columns of the second X shifted patch to produce an X shifted (output) patch.
  • This operation of the present invention is repeated as many times as is necessary to accomplished the desired X shift and/or merge of the patches in the first line of patches from the source image.
  • Each of the X shifted patches in the first line of patches is then shifted by a selected number of rows in the Y direction. This first line of XY shifted patches are then stored.
  • a second line horizontally contiguous patches is read from the source image.
  • the first patch in the second line is shifted in by the selected number of columns in the X direction.
  • This first X shifted patch is then stored.
  • the next (second) source image patch in the second horizontal line is shifted in by the selected number of columns in the X direction.
  • selected columns of the stored first X shifted patch are merged with selected columns of the second X shifted patch to produce an X shifted (output) patch.
  • This operation of the present invention is repeated as many times as is necessary to accomplished the desired X shift and/or merge of the patches in the second line of patches from the source image.
  • Each X shifted patch in the second line is then shifted by the selected number of rows in the Y direction. Merging of selected rows of each patch in the first line with selected rows of each patch in the second line is performed to produce XY shifted (output) patches.
  • This operation of the present invention is repeated as many times as is necessary to accomplished the desired XY shift and/or merge of the patches from the source image.
  • Boolean or arithmetic operations can be performed by the present invention between the XY shifted output patch(es) and preexisting data within a destination patch area so as to produce the XY shifted destination patch(es). This can be accomplished using an arithemetic logic unit.
  • the present invention uses an intermediate (line storage) random access memory (RAM) to store immediate results (so called XY shifted output patches) .
  • This intermediate RAM aspect (advantage) of the present invention allows for use of efficient dynamic RAM page-­mode accesses when scanning both the source and destination patches. This allows operation on a patch row-­by-row (line) basis, which greatly increases the speed of operation when compared to a system which continually accesses first the source and then the destination image rectangles, making it impossible to use uninterrupted page mode accesses.
  • the intermediate RAM of the present invention allows for merging to occur in the Y direction. This is necessary in a patch access processor because pixels are accessed from the image memory as part of a two dimensional patch. Although the shifting operation moves the pixels to the correct Y position, the patches formed by the Y shift cannot be directly written to the image memory as the pixels in the Y shifted patch do not belong in the same destination patch. Thus it is necessary to merge the Y shifted patches to form patches that can be stored in the image memory. The present invention can perform these operations at the full memory rate.
  • the XY shifted output patches can be read out of the intermediate RAM directly so as to produce the XY shifted destination patches, or via an ALU or the like so that desired Boolean or arithmetic operations can be performed on them to produce the XY shifted destination patches.
  • One embodiment of the present invention can process two planes of patch data in one memory cycle by using time domain multiplexing (TDM).
  • TDM time domain multiplexing
  • this TDM capability allows for patch planes to be XY shifted and/or merged in an efficient manner.
  • the inventors have taken advantage of the fact that the elements of the present apparatus can function at a rate which is faster than the image memory.
  • TDM time division multiplexing
  • the inventors have provided an output path to a write mask register.
  • this allows data to be used to generate write mask patterns for the patch (typically 5 by 4 pixels) of the output pixels. This results in efficient masking of images being moved and/or merged.
  • This masking aspect of the present invention can be employed in a multiple (2 or more) raster operation processor system and method.
  • the write mask pattern is supplied by the present invention to each of the raster processors that are operating on colour pixel data by an additional raster processor that is operating on mask data and is broadcasting this mask data to the colour processors.
  • Another embodiment of the present apparatus also includes interconnection paths for data flow between multiple raster operation processors.
  • these interconnection paths enable data to be passed between the raster operation processors at the full raster operation data rate.
  • the present system and method employs shift logic and a non-displayable RAM area, separate from the image store.
  • the shift logic is used to shift and horizontally merge the patches of an image to be copied.
  • the non-displayable RAM area (the line storage RAM) is used to vertically merge and temporarily store complete lines of the image for copying to a destination location in the image store.
  • a Logic Unit is also provided for combining the stored image with a destination part of the image in the image store. This allows for one or more image areas stored in the image store to be processed together, using a specified boolean or arithmetic function.
  • an image memory 302 stores a video image by pixels according to a two dimensional memory location format which typically corresponds to the pixel locations of the video display device (not shown).
  • Image memory 302 can be any design utilizing random access storage devices such as dynamic random access memories (DRAM).
  • the image store is of conventional design utilizing video RAMs (VRAMs) such as model 53462 VRAMs made by HITACHI of JAPAN.
  • VRAMs video RAMs
  • the image memory utilized for this system has the capability to write to any selected subset of image planes while masking non selected planes (i.e. to write to any subset of the bits defining each pixel).
  • the preferred memory is configured to allow page mode access of the VRAMs in the X direction.
  • the preferred image memory is a benchMark bFs Framestore, available from benchMark Technologies Limited, 5 Penrhyn Road, Comments upon Thames, Surrey KT1 2BT England. It should be understood that these preferred embodiments are only representative and that any suitable random access memory device now known or developed in the future is within the scope of the present invention.
  • the video display device (not shown) displays the video image stored in the image memory 302.
  • the video display device is a high resolution raster scan video monitor such as a model GTM 1901-22 made by Sony Corporation of Tokyo, Japan. Such a monitor can accommodate the preferred embodiment of the present invention where the two dimensional video image is 1280 pixels across (row) and 1024 pixels down (column).
  • the present invention contemplates any suitable display device now available or developed in the future.
  • the image memory 302 has an output port 304 which is connected to a data bus 306. Image memory 302 is caused to output on the data bus 306, pixels stored in contiguous memory locations in response to address signals from a processor 308 supplied by an address/control bus 310.
  • Processor 308 controls the operation of the various stages (blocks) of the present invention as described below.
  • processor 308 is a bit slice graphics processor, which controls the various stages of the present invention using microcode instruction words.
  • the preferred processor is a benchMark GIP, available from benchMark Technologies Limited, 5 Penrhyn Road, Comments upon Thames, Surrey KT1 2BT England. It should be understood that other types of processors can be used by the present invention.
  • a patch is a group of contiguous pixels of the image stored in the image memory 302. At a minimum, a patch would be a square group of 4 pixels, 2 across and 2 down. At a maximum, a patch would be the entire number of pixels making up a frame for display on the display device.
  • the patch used is a rectangle 5 pixels across and 4 pixels down, as is shown in Figure 4.
  • this preferred patch is made up of 20 contiguous pixels.
  • Each pixel has a specified number of bits which make up a data word.
  • the data word specified for its pixel contains specified information, such as the intensity, or color of the pixel in a continuum (palette) defined by the number of digital states that can be expressed by the digital word.
  • each pixel word stored in image memory 302 is 8 bits deep. (It should be understood that the word size can be one or more bits depending on the range of the contents and/or certain functions/conditions that need to be stored for the pixel). It thus can be seen that the preferred 5 by 4 pixel patch contains 160 bits of data (5 pixels times 4 pixels times 8 bits per pixel).
  • FIG. 402 shows a 5 by 4 patch (generally referred to by reference numeral 402), having eight planes 404,406,408,410,412, 414,416,418.
  • Each of the planes is a one bit deep slice of the twenty pixels that are defined in the patch 402.
  • each patch has eight planes. If, for example, only one bit were used to define each pixel, the patch would have only one plane.
  • a patch will have a number of planes equal to the number of bits used to define the pixels within. For purposes of this specification each plane of a patch will be referred to as a plane or patch plane.
  • Figure 4 also shows a numbering scheme for the pixel data within the patch and patch planes. From figure 4 it will be observed that the preferred patch has four rows and five columns. The pixel positions within the patch and patch planes are numbered starting at zero (on the lower left) and ending with 19 (at the upper right). These numbers will be used as a reference for purposes of this specification. For example bit 7 of a given patch plane refers to the bit that is (conceptually) in the second row up from the bottom and the third column in from the left. The bit numbering scheme will also apply the 20 bit patch plane data busses referred to in the specification.
  • the first patch plane row (row 1) is defined to consist of data positions 0,1,2,3,4.
  • the second row (row 2) is defined to consist of data positions 5,6,7,8,9.
  • the third row (row 3) is defined to consist of data positions 10,11,12,13,14 and the fourth row (row 4) is defined to consist of data positions 15,16,17,18,19.
  • the first patch plane column (column 1) consists of data positions 0,5,10,15.
  • the second column (column 2) consists of data positions 1,6,11,16.
  • the third (column 3) column consists of data positions 2,7,12,17.
  • the fourth column (column 4) consists of data positions 3,8,13,18.
  • the fifth column (column 5) consists of data positions 4,9,14,19.
  • the video display screen and image memory can be conceptualized as being made up of a number of horizontal rows of 5 by 4 patches (or of any other given patch dimension). Similarly, any rectangular image area can be conceptualized as being built of these horizontal rows of patches.
  • a row of patches will be referred to as a "line” or "patch row”.
  • This definition is intended to further clarify the distinction between a "line” (which as defined above is a row of patches), and a row of pixels in a patch (or of bits in a patch plane) which will, henceforth, simply be referred to as a "row”.
  • the term "column”, as used in this specification, refers to the columns of pixels in a patch (or of bits in patch plane).
  • an image plane a one bit deep slice of all the patches forming an image.
  • patches of pixel data are accessed from the image memory 302 in response to the address and control data supplied by the graphics processor 308.
  • the patches are loaded one at a time into the input patch register 312.
  • the input patch register outputs a selected plane of each patch to the input of the X Shift and Merge logic 314, and to one input of the Logic Unit 317.
  • the planes of patch data are shifted by a desired number of places in the X direction, and then merged with a plane of data from a horizontally contiguous patch.
  • the X shifted patch planes are sent to the Y Shift block 316.
  • the Y Shift logic shifts the patch planes by a desired number of rows in the Y direction but performs no merging.
  • the now X and Y shifted patch planes are then stored in an intermediate RAM (i.e. the line storage RAM 318).
  • the line storage RAM serves two purposes. Firstly it merges selected pixel rows from the current and previous input patch plane rows to form complete output patch planes. Secondly, it stores entire lines of complete shifted and merged patch planes so that they can be read directly back into the image memory 302 in page mode.
  • the newly formed patch planes go to the Logic Unit 317.
  • the logic unit performs boolean operations between the newly formed patch planes and the destination patch data (a plane of which will be properly ready at one of the logic units' inputs).
  • a patch plane may be used to load the write mask register 320 of the graphics processor 308.
  • an individual plane can be replaced with a plane from another raster operation processor on the secondary data bus 322 through the operation of the 2:1 MUX 324.
  • Two tri-state buffers 326,328 control the flow of mask data between other raster operation processors and the present system.
  • the planes may be passed through the 2:1 MUX to the output register 330, and then written immediately to the image memory. The process is then repeated for the remaining patch planes to be copied.
  • a complete source rectangle is processed by processing one (non TDM) or two (TDM) image planes at a time, and then going back to do the next image planes.
  • the most significant image planes are processed first to reduce the visual breakup effect.
  • the term most significant refers to the image planes most effecting the integrity of the displayed image.
  • the most signicant image planes occupy the higher order bits of the pixels within each image patch.
  • the present apparatus will be referred to as the Blit (block transfer) Processor.
  • the purpose of the input patch register 312 is to collect the 160 bits of data associated with each complete patch and allow the Blit Processor to select any one given plane (i.e. 20 bits, one bit from each pixel) for processing.
  • raster operations are performed on the image either one (non TDM) or two ( TDM) planes at a time, until the complete destination image data has been formed.
  • the input patch register 312 holds the complete 160 bit patch, and outputs the selected plane to be processed in response to control data from the graphics processor 308.
  • the input patch register ( Figure 9) includes eight, 20 bit registers 902,904,906,908,910,912,914,916 each of which receives one plane of the patch data on the bidirectional data bus 306.
  • the graphics processor 308 asserts (low) the input register load enable* line 918 on the gate logic 922. This enables the processor clock 1000 (on line 920) to load the input registers with the full 160 bit patch from the bidirectional data bus 306.
  • the processor clock 1000 is generated by the graphics processor 308 and is cycled once for every patch output by the image memory 302 on the image memory data bus 306. From figure 9 is can be seen that the entire 160 bit patch, on the image memory data bus 306 is loaded into the input registers in parallel. Once the patch data has been loaded into the registers, the Blit processor may begin it's operation.
  • a PAL 924 is used to control the output enable lines of the input registers, thereby controlling which plane is to be processed by the Blit Processor. In order to select which of the eight planes (20 bits) to output, the PAL uses 8 control lines which are preferably generated by the graphics processor 308.
  • These lines include: three input register phase 1 input plane select lines 926, (which will cause the PAL 924 to select a given plane for the first phase of a time domain multiplexed blit operation); three phase 2 input plane select lines 928, (which will cause the PAL 924 to select a given plane for phase 2 of a time domain multiplexed raster operation), a Dual* line 930 (low true), used to tell the PAL whether a single phase (not time domain multiplexed) or dual phase (time domain multipexed) operation is to be performed, and a phase 1* line 932 which is used to tell the PAL 924 which phase of a time domain multiplexed operation is occurring so that it will properly choose between its phase1 and phase 2 plane select inputs.
  • the timing of the Processor Clock 1000, the Phase1* signal 1006 can be seen in figure 10.
  • the Dual* line 930 is held constantly high and the phase1* line is held constantly low. This will cause the PAL 924 to always select the plane identified on its phase 1 plane select inputs.
  • the Dual* line 930 is held constantly low while the phase 1* line cycles. This will cause the PAL 924 to select the plane identified by the phase 1 plane select inputs when the phase1* signal 1006 (line 932) goes low and that identified by the phase 2 plane select inputs when the phase1* signal goes high.
  • the patch planes When the input register Load Enable* signal line is held low, the patch planes will be clocked into their corresponding registers.
  • the registers for the selected patch plane will be output enabled by the PAL 924, and will be available for processing.
  • a patch access image memory 302 such as the preferred image memory
  • shift and merge operations in two (X and Y) directions.
  • pixels are accessed from the image memory as part of a two dimensional patch. Because the raster operations are required to operate to any pixel, the source patches must be shiftable in two dimensions so that the source pixels will correspond to the required destination pixels. Additionally, although the shifting operation moves the output pixels to the correct position, the output patches formed by the shift cannot be directly written to the image memory as the pixels in the shifted patch do not belong in the same destination patch. Thus it is necessary to merge the shifted patches to form patches that can be stored in the image memory.
  • FIG. 5 shows a source region of the image memory 302 consisting of four patches (502, 504, 506, 508). Each patch consists of data representing a 5 by 4 array of pixel data. Assume it is desired to copy a group of pixel data 510 (outlined in bold), that is not on a patch boundary to a patch addressed destination area 512. The programmer encounters a problem because in typical patch access processors, the image memory is only addressable to the granularity of its patch boundaries.
  • One solution to this problem is to read the data for all four patches 502,504,506,508 and merge the data into a new patch consisting of the data in section 510.
  • the merged data can then be put onto the bidirectional bus 306 and written into the destination area 512 of the image memory 302.
  • the Blit processor shifts and merges patches in page mode (i.e. a row of patches at a time), thereby saving time on the overall operation.
  • the X shift and merge logic 314 may be better understood by reference to figure 6. From figure 6 it may be seen that the X shift and merge logic includes four, 5 bit barrel shifters 602, 604, 606, 608. Each barrel shifter handles one complete row of each patch plane. As has been stated, the Blit Processor shifts and merges one plane of patch data at a time. Therefore, each row of the preferred 5 X 4 patch plane consists of 5 bits of information.
  • a first barrel shifter 608 receives its input from bits 0 through 4 (row 1) of the output of the input patch register 312.
  • a second barrel shifter 606 receives its input from bits 5 through 9 (row 2) of the input patch register 312.
  • a third barrel shifter 604 receives its input from bits 10 through 14 (row 3) of the input patch register 312.
  • a fourth barrel shifter 602 receives its input from bits 15 through 19 (row 4) of the input patch register 312.
  • the barrel shifters will circularly shift the rows of patch data to the left or right a number of places based on data appearing on the 5 bit wide X shift control bus 610.
  • a decoder PAL 632 decodes this data into 3 bits of shift control data which is used by the barrel shifters.
  • Each barrel shifter receives all three lines of the decoder output 634 at its shift control input. The decoder PAL 632 will be further described later.
  • each row of X shifted data is clocked into one of four 5 bit registers 612,614,616,618.
  • Each barrel shifter 602,604,606,608 has one corresponding 5 bit register 612,614,616,618 to receive its shifted data.
  • the clocking of data into the 5 bit registers is controlled by a global blit clock 1004 on line 620.
  • the blit clock 1004 (figure 10) generally controls the operation of the Blit Processor. Every time the processor clock 1000 is cycled, a new patch of data is clocked into the the input patch register 312. Every time the the blit clock 1004 is cycled a selected plane of the patch is clocked out of the input patch register.
  • the blit clock controls other functions as well which are explained within.
  • a new corresponding plane of data from the next horizontally contiguous patch is processed by the barrel shifters and appears at the inputs of the 5 bit registers.
  • 8 bits of data are available at the inputs to each of the five, 4 bit 2:1 Multiplexer (MUXes) 622,624,626,628,630.
  • MUXes 2:1 Multiplexer
  • Each MUX handles one of the five columns of data from each patch plane.
  • the data held in the 5 bit registers will be referred to as the previous patch plane and the data at the registers inputs will be referred to as the current patch plane.
  • Each multiplexer receives at its inputs one column from the previous patch plane, and the corresponding column from the current patch plane.
  • the 2:1 MUXes will merge the previous patch plane with the current patch plane.
  • Each bit of the control bus 610(0),610(1),610(2),610(3),610(4) directly controls one MUX.
  • the X direction merge operation is better understood by way of example. Assume the two contiguous patches of pixel data in example 1-1 below are to be shifted to the left by three places.
  • Previous Patch Current Patch A18-A19-A15-A16-A17 B18-B19-B15-B16-B17 A13-A14-A10-A11-A12 B13-B14-B10-B11-B12 A08-A09-A05-A06-A07 B08-B09-B05-B06-B07 A03-A04-A00-A01-A02 B03-B04-B00-B01-B02
  • the X shift and merge logic would form a new patch as follows: A18- A19- B15- B16-B17 A13- A14- B10- B11-B12 A08- A09- B05- B06-B07 A03- A04- B00- B01-B02
  • the barrel shifters 602,604,606,608,610 and the MUXes 622,624,626,628,630 work in conjunction with each other. For example, if a previous patch plane has been shifted left N number of places, the MUXes must select the first 5-N columns of the previous (registered) patch plane and the last N columns of the current (unregistered) patch plane (as shifted by the barrel shifters).
  • the formula works in reverse as well.
  • the 5 bits of X shift control data is used to select the first 5-N columns of the previous patch plane, and the first N columns of the current patch plane by controlling the select inputs of the 5 2:1 MUXes 622,624,626,628,630.
  • the decoder PAL 632 is programmed to ensure that the 3 bits of barrel shifter control data will cause a circular shift of N.
  • each MUXes current (unregistered) input is selected by asserting a logical 1 on the X shift register control lines 610, then the decoder PAL 623 merely needs to convert the number of 1's on the X shift register control lines 610 into a 3 bit binary number so as to cause the barrel shifters to shift by a number of places equal to N.
  • X shifting is only done to the left while Y shifting can be done up or down. It is necessary to be able to shift up or down in Y in order to cope with overlapping source and destination rectangles i.e. if the destination overlaps the bottom of the source the copy must take place top to bottom in order to read out the source before it is overwritten by the destination.
  • X direction there is no problem due to the blit RAM. This is because a complete row is always processed before writing to the destination. It should be understood, that while the presently preferred embodiment shifts only to the left, X shifting could just as easily be done to the right. Because the X shift is circular (cyclic), a shift to the right of N is the exact equivalent of a shift to the left of 5-N.
  • the X Shift and Merge logic can be modified to process more than one plane at a time through the use of time division multiplexing (TDM).
  • TDM time division multiplexing
  • An embodiment of the X shift and Merge Logic suitable for both TDM and non TDM operation will be described by reference to figure 12.
  • this TDM operation involves doubling the speed of the Blit clock and processing two planes from each patch in each processor clock cycle.
  • the input patch register 312 operates as usual, except that in the first Blit clock cycle, one plane from the "clocked in" patch is selected and on the next Blit clock cycle another plane is selected.
  • the blit clock 1004 (the clock used to clock out of the patch register 312) is running twice as fast as the processor clock1000 (i.e. the clock used to clock complete patches into the input patch register 312).
  • the operation of the output patch register 330 is adjusted so as to load two patch planes for writing to the image memory in each clock cycle as opposed to just one.
  • the Figure 12 embodiment of the X shift and merge logic is similar to the figure 6 embodiment except that a second set of four registers 1202,1204,1206,1208 and several gating circuits 1210,1212,1214,1216 are added.
  • the graphics processor 308 provides a phase 1 signal 1006 which is asserted low for the first phase pixel plane in the processed patch and asserted high for the second phase pixel plane.
  • phase 1 signal 1006 which is asserted low for the first phase pixel plane in the processed patch and asserted high for the second phase pixel plane.
  • a TDM operation can be conceptualized as occuring in two phases.
  • the first phase begins when a first patch is clocked into the patch input register 312.
  • a first plane of this patch is selected for processing.
  • the first plane arrives at the X shift and merge logic, it is processed in the same way as it was for in the single plane embodiment.
  • the graphics processor has asserted the phase 1* signal low, the shifted data is clocked into the first set of 5 bit registers 612,614,616,618.
  • the graphics processor 100 then unasserts (sets high) the phase 1* signal and a second patch plane in the patch input register 312 is selected.
  • the second plane (of the first patch) is shifted and loaded into the second set of registers 1202,1204,1206,1208.
  • the first set of 5 bit registers will be load and output enabled and the second set will not.
  • the second set of 5 bit registers will be load and output enabled and the first set will not.
  • a second patch is loaded into the input patch register 312.
  • the input patch register first selects the same patch plane as was clocked in during the first phase1* low time. For example, if patch plane 1 for the first patch was initially selected then patch plane 1 of the second patch will also be initially selected).
  • the selected patch plane (of the second patch) is shifted by the barrel shifters and appears at the inputs of the registers and the 2:1 MUXes. Because the phase 1* is asserted (low) only the first set of registers will be output enabled.
  • the MUXes Under the control of 1 bit each of the X shift control bus 610, the MUXes perform the merge operation between the first patch planes from the first and second patches. On the next blit clock (which marks the beginning of the second phase) the current (unregistered) data will be loaded into the 1st set of bit registers 612,614,616,618.
  • the second patch plane (of the second patch) is selected by the patch input register (i.e. the plane which was selected second for the first patch).
  • the graphics processor unasserts the phase 1* signal (sets it high) and the second set of 5 bit registers is output enabled.
  • the 2:1 MUXes will merge the second selected planes from the first and second patches.
  • the second plane of the second patch is clocked into the second set of 5 bit registers. The cycle continues until all of the patches for a full row of patches have been processed.
  • the timing of a TDM operation using the circuit of figure 12 may be better understood by reference to figure 10.
  • the Blit Clock 1004 goes through two cycles for every patch of data clocked into the input register 312 from the bidirectional data bus 306.
  • This patch data is represented by reference numeral 1002.
  • the relative timing of the blit clock and the patch data results in two patch planes being clocked out of the Input Patch Register 308 (represented by reference numeral 1008) for every patch that is clocked in.
  • the Phase 1* signal cycles once for every patch clocked in, resulting in the first patch plane of each patch being clocked into the first set of registers of the X shift and merge logic, and the second patch plane being clocked into the second set of registers.
  • the processing sequence for a line of patch planes is represented by reference numeral 1010.
  • the circuit of figure 12 is operated somewhat differently.
  • the Blit clock 1004 is cycled only once for every patch clocked into the input registers and the phase 1* signal 1006′ is held permanently low.
  • This timing results in only one patch plane being clocked out of the input register (as represented by reference numeral 1008′) for every patch clocked in.
  • the result is that rows of patch planes are processed in the general order shown by reference numeral 1010′.
  • the phase 1* clock being held low results in the circuit of figure 12 operating in the same manner as the circuit of figure 6.
  • the X Shift and Merge logic is easily modified to work with other patch formats (aside from the preferred 5 X 4).
  • the barrel shifters 602,604,606,608,610 should have one bit for every patch column, as should the registers.
  • One 2:1 MUX should be provided for every patch column and the MUXes should be as wide as the number of patch rows.
  • the X Shift and Merge logic is embodied using programmable logic arrays (PALs).
  • contiguous is used. The meaning of this term is better understood in the context of the two dimensionally addressable image memory 302. Because the memory is addressed in the same manner as the video screen, data may be thought of as being stored in an array of columns and rows. A given patch will therefore have two contiguous patches in the vertical (Y) direction (i.e. one on the patch row below and one on the patch row above), and two contiguous patches in the vertical (Y) direction (i.e. one on each of the patch columns to either side).
  • the Y Shift Logic 316 is better understood by reference to figure 7.
  • X shifted patch planes from the X Shift and Merge logic 314 is received by the Y Shift Logic 512.
  • five 4 bit barrel shifters 702,704,706,708,710 are used to shift the patch plane rows up or down under control of 2 bits of data on the Y Shift control lines 712.
  • One complete column (4 bits) of patch plane data is loaded into each barrel shifter.
  • the first column (consisting of data from positions 0,5,10 and 15 on the X shifted patch plane), is loaded into the first barrel shifter 702.
  • the second column consisting of data from positions 1,6,11 and 16 on the X shifted patch plane is loaded into a second barrel shifter 704.
  • the third column consisting of data from positions 2,7,12,17 on the X shifted patch plane is loaded into a third barrel shifter 706.
  • the fourth column consisting of data from positions 3,8,13,18 on the X shifted patch plane is loaded into a fourth barrel shifter 708.
  • the fifth column consisting of data from positions 4,9,14 and 19 on the X shifted patch plane is loaded into a fifth barrel shifter 710.
  • the two Y shift control lines 712 are controlled by the graphics processor 308.
  • the two bits of Y shift information carried is sufficient to cause the Y barrel shifters 702,704,706,708,710 to circularly shift the four rows of each patch plane up to three places in the Y direction.
  • a shift of four places in the Y direction is not necessary because it would merely put the 5 X 4 patch plane back where it started. It will be seen that as the shift is circular, negative shifts are easily achieved i.e. a negative shift of 1 is equivalent to a positive shift of three.
  • the Y shifted patch planes will appear at the output of the Y shift logic 316 and be sent to the Line Storage RAM 318 for Y merging and row collection.
  • the line storage RAM 318 serves two purposes. Firstly it merges selected rows from the current and previous input patch plane rows to form complete output patch planes. Secondly, it stores entire rows of complete shifted and merged patch planes so that they can be read directly back into the image memory 302 in page mode.
  • Figure 8 shows both the Address Generator 333 and the line storage RAM 318.
  • the address generator 333 includes a 10 bit counter 802, a programmable logic array (PAL) 804 and tristate buffer 806.
  • the Line storage RAM 318 includes write enable logic 808 and four 2K X 5 random access memories 810,812,814,816 (the Blit RAMs).
  • the graphics processor 308 supplies several data and control lines to the address generator 333 and line storage RAM 318.
  • These lines include a diagnostic read enable line 818, 10 processor data lines 820, a count enable line 822, a counter load enable line 824, the blit clock line 620, a Blit Read* line 826, a Blit Write* line 828, the 2 Y shift control lines 712, a Down control line 832 and an Even control line 834.
  • the line storage RAM 318 operates in two modes.
  • a Blit read mode in which a complete image row of patch planes is read from the Blit RAMs
  • a blit write mode in which a complete image row of patch planes is written into the blit RAMs.
  • the Blit write mode will first be explained. In operation a complete row of patch planes sequentially appear on the XY shifted data bus 332. One XY shifted patch plane will be placed on the bus 332 from from the Y shift logic every Blit Clock cycle.
  • the graphics processor loads the 10 bit counter 802 with an initial address value (usually zero) by putting the initial address on the processor data bus 820 and asserting a load enable signal on line 824. Once the initial value has been loaded and the first valid patch plane is on the XY shifted data bus 332, the load enable signal is unasserted and a count enable signal is asserted on line 872.
  • the 10 bit counter data is incremented by the cycling of the blit clock 1004 on line 620.
  • the counter data is used as the address for the 10 lower order address bits of the blit RAMs 810,812,814,816.
  • the tristate buffer 806 is used for diagnostic purposes and can be used by the graphics processor 308 to read back the counter address data by asserting the read enable* signal (a low true signal). Asserting this signal will put the counter data on the processor data bus lines 820.
  • the Blit write signal Prior to the beginning of the blit write cycle the Blit write signal is asserted low on line 828 at the input of the write enable logic. This will allow the blit clock 1004 (line 620) to write enable the RAMs 810,812,814,816 when valid patch plane data is at their data inputs via the XY shifted data bus 332.
  • the PAL 804 will either set or reset the higher order address bit on each of the Blit RAMs depending on the control data input to it from the graphics processor, in order to correctly form complete output patch planes in the blit RAM.
  • the Blit RAM counter 802 (explained within) is clocked twice as fast as it would be for a single phase (non time domain multiplexed operation) and the Blit RAM stores two (as opposed to one) patch planes every patch cycle.
  • the Blit Read mode is similar.
  • the 10 bit counter 802 is loaded by the graphics processor 308 and then count enabled.
  • the Blit Read* signal on line 826 is then asserted (low true) thereby output enabling the Blit RAM's.
  • the Blit Write* signal (line 828) is held high (unasserted) therefore write disabling the Blit RAMs.
  • All of the Blit RAMs' higher order address bit are either set or reset in order to read complete output plane patches from the blit RAM.
  • each Blit RAM is dedicated to one row of the patch planes.
  • the row 1 RAM 810 receives or writes only the 1st row of each XY shifted patch plane i.e. bits 0 through 4 of the XY shifted data bus
  • the row 2 RAM 812 receives or writes only the 2nd row of each XY shifted patch plan i.e. bits 5 through 9
  • the row 3 RAM 814 only the 3rd row of each XY shifted patch plane, i.e. bits 10 through 14 and the row 4 RAM 816, only the 4th row of each XY shifted patch plane, i.e. bits 14 through 19.
  • the PAL 804 is used to properly enable the Blit RAMS during both the blit read and blit write modes. It can be seen from figure 8 that the PAL 804 supplies the higher order address bit of each of the blit RAMs. This, in effect, means that each RAM can be thought of as having two separately addressable areas. The first area being addressed when the PAL sets the Blit RAM's higher order address bit high, and the second area being addressed when the PAL sets it low. These areas will be respectively referred to as the first and second address areas. Each Blit RAM stores one row (5 bits) of the patch plane data. One address area is used to store patches that are being completed while the other address area is used to store patches being started.
  • the exact address manipulations necessary to merge in Y will depend on the amount of Y shift and the direction of vertical traversal of the rectangular region being processed.
  • a typical Y shift and merge operation can be explained using the example of a rectangular source image region being processed such that the destination image region is above the source image region.
  • the source rectangle In order to properly perform the raster operation, the source rectangle must be processed from the top down. The reason for this can be understood when it is considered that the source and destination image regions can be overlapped.
  • the top down processing is performed in order to avoid overwriting the overlapping area before it is processed.
  • the PAL 804 will consider row 1 of a patch is the bottom row and row 4 is the top row. The explanation below will follow that convention.
  • the first step is a priming step.
  • the first line of patch planes arrives at the Line Storage RAM 318 having been shifted (by the Y shift logic 316) up in the Y direction by N rows.
  • shifted rows 1 through N are loaded into the first address area of the associated Blit RAMs, while rows N+1 through 4 are loaded into the second address area of the associated Blit RAMs.
  • the Blit RAM's second address area will contain the rows of the patch planes that are not needed to form an output patch and so will never be read from the blit RAM.
  • the first address areas will contain the first row or rows of the patch planes which are to be eventually output to the image memory.
  • the next step is a patch formation step.
  • the PAL 804 reverses the higher order addressing of the Blit RAMs.
  • a second line of circularly Y shifted patch planes arrives from the line storage RAMs from the Y shift logic 316.
  • shifted rows 1 through N of the second complete source image line are stored in the second address area of their associated Blit RAMs, while patch plane rows N+1 through 4 are stored in the first address areas of their associated Blit RAMs.
  • the first address areas of the Blit RAMs will contain one complete line of patch planes.
  • the second address areas of the Blit RAMs will contain the first N rows of the next line of patch planes to be copied.
  • the next step is a patch plane read step.
  • the Blit RAMs are read enabled and the patch plane data from within the first area of all the Blit RAMs is read.
  • the first address area contains a full display row of complete patches at this point, thereby enabling the Graphics Processor 308 to read an entire patch row in page mode.
  • the next step is another patch formation step.
  • the PAL 804 once again reverses the higher order addressing of the Blit RAMs.
  • a new display row of circularly Y shifted patch planes arrives from the line storage RAMs from the Y shift logic.
  • Rows 1 through N are stored in the first address areas of their associated Blit RAMs, while patch plane rows N+1 through 4 are stored in their associated Blit RAMs' second address areas.
  • the second address areas of the Blit RAMs contain one complete row of patch planes.
  • the first N rows the next line of patch planes to be copied are stored in the first address areas of their associated Blit RAMs.
  • the next step is another patch plane read step.
  • the Blit RAMs are read enabled. This time the patch plane data from within second address areas of all the Blit RAMs is read. As has been stated, the second address areas contain a full row of complete patches at this point, enabling the Graphics Processor 508 to read an entire line (patch row) in row address mode.
  • the priming step is not necessary.
  • the above algorithm can also be used when shifting down N rows, given that when shifting down the patch will be processed from bottom to top.
  • the PAL 804 will consider the top row of each patch plane as the first row and the bottom row as the fourth row. In that case, the reader should follow this second numbering convention. It should be mentioned that you would never shift down and process downwards (or vice versa) as you would be in danger of copying invalid data if the source and destination patches are overlapping.
  • the PAL 804 is programmed to correctly form the high address bit for each of the Blit RAMs for each step. In order to accomplish this, it utilizes several control and lines from the graphics processor 308. These include the Y shift control lines (2 bits), the Down* control line, the Even* control line and the Blit Read* control line.
  • the Y shift control lines 712 are used to carry the Y shift amount (N in this example). These lines carry the same Y shift signals used by the Y shift logic 316.
  • the graphics processor asserts the Even Line* (low) for every even row of patch planes and high for every odd row of patch planes. In this manner, the PAL 804 is able to keep track of which step is occurring.
  • the PAL 804 also uses the Blit read signal to determine which is the current mode (write or read).
  • the Down* control line 832 is used to convey the PAL 804 information as to which direction the reads of patch rows are progressing (i.e. up or down). A low signal on this line is used to signify that the read is progressing from the top of the image memory to the bottom, a one is used to signify a bottom to top read.
  • the PAL 804 will select the same address area in all the RAMs, (ie. the area in which the latest output patch row has been formed).
  • write mode the various inputs are used to merge the correct rows in the appropriate areas to form complete output patches.
  • the Logic Unit 317 is preferably an Arithmetic Logic Unit (ALU).
  • ALU Arithmetic Logic Unit
  • the presently preferred Logic Unit includes five 74AS181's ALUs available from Texas Instruments.
  • the purpose of the ALU is to perform Boolean operations between each source and destination plane.
  • the destination patch When logic operations are being performed, the destination patch must be read into the input patch register 312 before the output patch is read out of the Line Storage RAM 318.
  • the destination patch is read directly after the source patch and both the source and destination planes will appear at the inputs of the the ALU 316 at effectively the same time. This does mean that it is not possible to perform page mode operations during writing the row to the image memory 302, however the destination is still read in page mode.
  • the reading of the destination patch can be avoided by using the internal logic mode of the RAMs. If set into logic mode the Hitachi vrams will perform any logical operation between the input data and the ram data during a normal write cycle.
  • the Output multiplexer 324 is essentially a 20 bit 2:1 mux having its select inputs provided by the graphics processor 308.
  • the output multiplexer 324 allows any plane of an externally provided patch (e.g. from another synchronized Blit Processor) to be inserted in the place of any plane of the source patch.
  • the externally provided plane can be inserted whether or not X and/or Y shifting operations are performed on the source plane. It should be understood that the selection between the external plane and the source plane is made under control of the graphics processor 308.
  • the output patch register 330 ( Figure 13) operates in a similar manner as the input patch register 312.
  • Several signals, preferably generated by the graphics processor 308, are used to control the output register logic PAL 1302 so as to cause a selected plane (20 bits) of XY shifted data to be put into its proper place in the 160 bit patch.
  • the PAL 1302 will select one of the eight output registers 1308,1310,1312,1314,1316,1318,1320,1322 in which to store its processed patch plane depending on the state of the control lines at its input.
  • the output register PAL control lines include: the three phase 1 output plane select lines 1304 which will cause the PAL 1302 to select a register for a given plane in phase 1 of a time domain multiplexed operation, the three phase 2 output plane select lines 1306, which will cause the PAL 1302 to select a given plane for phase 2 of a time domain multiplexed blit operation; the Dual* line 930 (low true), used to tell the PAL 1302 whether a single phase or dual phase operation is to be performed; the Phase 1* line 932 which is used to tell the PAL 1302 which phase of a time domain multiplexed operation is occurring so that it will properly choose between its phase1 and phase 2 plane select inputs; and, the register write enable line 1324, which is used to disable all loads to the output registers when the blit processor is reading data from the image memory.
  • the blit clock 1004 (formed by the graphics processor 308) is used by the PAL 1302 to form rising edges on the register clock inputs at the correct time to load data into the appropriate plane register. In a single phase operation only one rising edge will be generated per patch cycle, in a two phase operation two rising edges will be generated.
  • the write enable input to the PAL is used to disable all loads to the output registers when the blit processor is reading data from the image memory.
  • the output register output enables all 8 planes of patch data onto the 160 bits of the image memory data bus 306. However only one plane will be valid in a single phase operation, or two planes will be valid in a two phase operation. Only the valid planes are written to the image memory by the graphics processor 308 write enabling only the appropriate image memory planes for writing.
  • the image memory plane enable function is preferably implemented in the image memory 302 itself.
  • Each of the Video RAMs within the preferred image memory are used to store four planes. However the video RAMs have an internal write enable feature whereby any of the planes can be write disabled.
  • the contents of a plane protect register within the graphics processor 308 is presented to the data lines of the chips during the write cycle and the VRAMs internally write disable the appropriate planes.
  • each plane of the image is often stored using a distinct set of RAM chips. In that case, write enabling a certain subset of planes is performed by gating the write signals.
  • the write signal to each plane is effectively AND gated to the relevant bit of an 8 bit plane enable register.
  • the input register plane selects 926,928 are independent from the output register plane selects 1304,1306 (figure 13).
  • This feature enables inter-plane copies, (ie copying a source from one plane to a destination on another plane) to be accomplished. Such can be useful for performing shift operations on multi­bit pixels, or for copying 1 (or more) bit images between planes in a frame store with a greater number of planes (this can be useful for storing a very large 1 bit image in an 8 bit frame store for example).
  • the processor utilizes the independent control of source and destination planes in the input and output patch registers to put the processed plane into an independently selected plane register within the output register logic.
  • the write mask register 320 is used by the graphics processor 100 to generate a mask for the destination area.
  • the utility of the mask register can be best demonstrated by reference to figure 14. Assume a source area 1402 is to be copied to a destination area 1404. Further assume that it is desired that a part of the destination be unobscured by the source in the finally copied image 1406. Under unmasked conditions, the Blit processor would copy the entire rectangular source image area 1402 and overlay it on the destination image 1404. It can easily be understood that this will not yield the desired result.
  • Write masking is also used for another purpose.
  • the top and bottom patch rows and the left and right patches of every row (line) of patches possibly require a masked write if the destination boundaries do not fall on exact patch boundaries.
  • the map holding the copy enable information for each pixel can be stored using one plane (referred to as the mask plane) of the source image.
  • This plane (within each individual source patch) can be loaded into the write mask register 320 via buffer 326 and can be used to mask out an area along contours of any shape within each patch plane. Such an operation is referred to as a masked copy and will yield the desired destination image 1106.
  • a masked copy can only be performed in systems using time domain multiplexing. This is so because mask data for each patch must be available to load into the write mask register as an image data patch is loaded into the output patch register. This allows the writing of pixels from each output patch to be qualified by the corresponding source mask that has been correctly shifted and merged to the same destination position as the image data passing through the blit processor. It can be seen that a masked copy requires that only one image plane can be processed along with the mask plane, hence doubling the number of passes to process a multiple plane image.
  • each pixel position uses a seperate RAM bank in the image memory from all the other pixel positions.
  • the preferred image memory there are 20 pixel positions each corresponding to one position within the 5 X 4 patch format (see figure 4).
  • one of the enabling RAM signals preferably the Column Address Strobe
  • Each bit of the 20 bit write mask register 320 is used by the graphics processor 308 to gate one CAS line.
  • the gating is accomplished in a PAL by effectively "ANDing" the write mask bits with the Column Address Strobes.
  • various buffering and glue logic is used within the graphics processor to accomplish this. It should be understood that although this method of accomplishing a write mask is used in the preferred graphics processor, it is contemplated that other methods of write masking would accomplish the same result.
  • the first operation is masking the top, bottom rows of the destination if the boundaries are not patch aligned.
  • the second operation is performing a masked copy and bringing the mask plane through the shift merge logic.
  • the edge mask is "ANDed" together with the data mask. This is done in the graphics processor 308 by reading the mask data out of the blit processor, ANDing it with the current edge mask and writing the result to the write mask register.
  • the Blit Logic Unit 317 performs a different operation in each phase.
  • the Logic Unit performs the desired logic operation for the image data, but must pass the mask data straight through.
  • the opcodes are selected by the phase1* signal.
  • the Video RAMs within the image memory 502 have a page access mode whereby the Row Address Strobe (RAS) may be held stable and only the Column Address Strobe (CAS) is cycled. Operation in this mode will save about 120ns out of 240ns for each row address access.
  • the Blit Processor makes page mode operations possible because it stores an entire address row of data in each operative cycle, thereby allowing the processed data to be read an entire row at a time without the necessity to change the RAS address. Page mode operation is well known in the art.
  • the Blit architecture advantageously allows the programmer or system designer to use it so as to speed up raster operations.
  • the shift and merge logic can shift and merge in the X and Y directions by a given number of places (i.e. any number greater than zero and less than the patch dimensions).
  • the x shift is calculated by subtracting the X position of a pixel within the source patch from the desired X position of that pixel within the destination patch and adding 5 if the result is negative.
  • the Y shift depends on the direction in which patches are being read. If a source area is being read from top to bottom, the position of a pixel within a patch in the destination area is subtracted from that pixels position in its source patch. Four is added if the result is negative. The total result is then subtracted from four to get the Y shift. If the copy is from bottom to top then the source position is subtracted from the destination position and 4 is added if the result is negative.
  • the shift function can be performed without the merge function as well, so as to allow the bits within each pixel of a patch to be exchanged, replaced, and generally moved around in the patch.
  • the present system and method can be utilized to replace or move in any dimension (X, Y or Z) any bit of the patch.
  • the X and Y shift logic can be used to move bits around in a given plane (i.e. intraplane manipulation).
  • the Y shift logic 316 can be used in its present form. This will allow any given plane of a patch to be shifted up or down by a selected number of rows, on a pixel by pixel basis. This amounts to shifting only one bit position in each of the twenty pixels in a complete patch. Because planes are processed by the Y shift logic one plane at a time, some planes can be shifted while others are not.
  • the line storage RAM 318 can also be used in this process. Normally, the line storage RAM is used to merge vertically contiguous patches. If desired, however, the line storage RAM could be used to merge any one plane or group of planes of a patch with the original patch data itself. This can be accomplished because the line storage RAM collects a complete line and does not write it back into image memory until a Blit RAM write has been initiated. Further, any number of rows of any number of planes within any patch could be replaced with data from another line as opposed to a vertically contiguous merge.
  • the X shift and merge logic 314 could work similarly with some slight modification.
  • the decoder PAL 632 is used to insure that the shift control signals sent to the barrel shifters 602,604,606,608 coreesponds to the MUX select inputs. If desired, the decoder PAL could be removed and the shift control data sent to the barrel shifters could work independent from the select data sent to the MUXes. In a simple case, this would allow an a shift without a merge whereby a given plane or group of planes of a patch could be X shifted by an amount.
  • the present system and method enables planes to be exchanged and swapped (i.e. interplane manipulation).
  • the input patch register 312 has independent plane selects from the output register 330.
  • 2 planes could be swapped.
  • some planes could be used to overwrite other planes. This type of operation is performed by having the output register plane selects swapped or be otherwise set different (as desired) to the input plane selects.
  • the system can also be used to overwrite any number of planes of a first patch with any number of planes from a second patch (interpatch manipulation).
  • a patch from an external source can be loaded into the output register 330 via the output multiplexer 324 in place of any given patch plane. In effect, this allows the output register to be commonly used for two blit processors that are to write to the same image memory.
  • Some possible applications for the above features include, mask swapping, changing graphic overlays (i.e swapping in a grid of one size and then a grid of another size in one plane that will appear as an overlay on the image), and image encoding/decoding.
  • водем ⁇ Blit Processors could be run in parallel in order to process a complete eight bit patch plane at a time.
  • the input register logic could be modified to route each plane in the patches to one of the Blit Processors and the output register logic so as to receive the planes from each blit and to reformat them into a single patch.
  • More Blit processors could be added to process more planes as well.
  • the hardware could be embodied in one or more Application Specific Integrated Circuit (ASIC).
  • ASIC Application Specific Integrated Circuit
  • Line Storage RAM (the same size as the current line storage RAM), could be used to store a destination line read in page mode so as to avoid having to break the page mode operation to read the destination during logic operations.
  • This RAM would be loaded directly after one row of the image source has been read. The RAM could then be read in parallel with the line storage RAM during write, each RAM supplying one input of the Blit Processors Logic Unit 316. Note that as the destination patches are (of course) aligned to the destination, no shift and merge hardware is necessary whilst loading these RAMs and so the RAMs could be connected directly to the input data bus 304.
  • Such as second line storage RAM, connected to the second input of the logic unit 317 could also be used to perform operations between the source and a second source and have the output sent to a destination (i.e. other than the first or second source).
  • the second line storage RAM would be connected after the shift and merge hardware as the second source patch planes are not necessarily aligned with the destination.
  • Line Storage RAM could be used to hold one row of shift/merged mask data. This would enable the blit to avoid having to repeatedly accompany each plane with the mask plane during a masked copy. This RAM would be able to be read directly into the write mask register 320 through a private data bus, without affecting the processing of 2 (or more planes) to the output patch register. To exploit this RAM, the processor would need to process all planes of one output row before proceeding to the next row so that the mask plane would only need to be scanned once. In this case, the Line Storage RAM would need to be 4 times bigger in order to hold all 8 planes of data rather than just two planes (TDM) as now.
  • TDM just two planes
  • a second ALU could be inserted between the output of the logic unit 316 and the input of the write mask register 320.
  • the second ALU would enable the graphics processor 308 to avoid having to "AND" the mask data at the edges of a masked copy.
  • the second input of this ALU would be sourced from the graphics processor 308 with the current edge/corner pattern.
  • the ALU would need a bypass path or be able to be set into pass through mode in order to allow data to be passed directly to the write mask register as now.
  • the Blit processor could be modified to process all eight planes using time domain multiplexing. This would involve speeding up the Blit clock to be eight times as fast as the processor clock, providing three, phase phase indicator signal lines (to account for all eight phases), and adding one extra set of registers to the X shift and merge logic 314 for every additional plane to be processed.
  • the line storage RAM 318 would also need to be four times as large as for the current two plane (two phase) TDM operation. For this eight phase operation, all eight planes of a patch would first be X shifted and registers. As the planes for the next patch were provided from the patch input patch register 312, the X shift and merge logic would merge each plane of the second patch with the corresponding plane of the second patch.
  • the decoder pal 632 and X shift control lines 610 would operate just for for a 2 phase TDM operation.
  • the output patch register 330 would collect all of the shifted and merged planes and write a complete patch into the image memory.
  • the logic unit would operate just as for 2 phase TDM operation and perform boolean operations with between the corresponding destination and XY shifted source planes.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Stored Programmes (AREA)
EP19890302824 1988-03-23 1989-03-22 Rasteroperationen Withdrawn EP0334622A3 (de)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
GB8806845A GB2215952A (en) 1988-03-23 1988-03-23 Performing raster operations on patch formatted pixel data using time domain multiplexing
GB8806841A GB2215950A (en) 1988-03-23 1988-03-23 Performing raster operations on patch formatted pixel data
GB8806837 1988-03-23
GB8806848A GB2215953A (en) 1988-03-23 1988-03-23 Performing raster operations on multi-plane patch formatted pixel data
GB8806837A GB2215948A (en) 1988-03-23 1988-03-23 Performing raster operations on patch formatted pivel data
GB8806839A GB2215949A (en) 1988-03-23 1988-03-23 Performing raster operations on patch formatted pixel data
GB8806843A GB2215951A (en) 1988-03-23 1988-03-23 Performing raster operations on patch formatted pixel data
GB8806845 1988-03-29

Publications (2)

Publication Number Publication Date
EP0334622A2 true EP0334622A2 (de) 1989-09-27
EP0334622A3 EP0334622A3 (de) 1991-05-29

Family

ID=27547002

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19890302824 Withdrawn EP0334622A3 (de) 1988-03-23 1989-03-22 Rasteroperationen

Country Status (1)

Country Link
EP (1) EP0334622A3 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991006909A1 (de) * 1989-10-30 1991-05-16 Siemens Aktiengesellschaft Datentransfer-verfahren

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0107203A2 (de) * 1982-10-25 1984-05-02 CSELT Centro Studi e Laboratori Telecomunicazioni S.p.A. Verfahren und Vorrichtung zur Speicherung von orthogonaler Transformation unterworfenen dreidimensionalen digitalen Signalen
EP0230352A2 (de) * 1986-01-17 1987-07-29 International Business Machines Corporation Graphik- und Datenanzeigesystem

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0107203A2 (de) * 1982-10-25 1984-05-02 CSELT Centro Studi e Laboratori Telecomunicazioni S.p.A. Verfahren und Vorrichtung zur Speicherung von orthogonaler Transformation unterworfenen dreidimensionalen digitalen Signalen
EP0230352A2 (de) * 1986-01-17 1987-07-29 International Business Machines Corporation Graphik- und Datenanzeigesystem

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991006909A1 (de) * 1989-10-30 1991-05-16 Siemens Aktiengesellschaft Datentransfer-verfahren

Also Published As

Publication number Publication date
EP0334622A3 (de) 1991-05-29

Similar Documents

Publication Publication Date Title
US5254979A (en) Raster operations
US6181353B1 (en) On-screen display device using horizontal scan line memories
EP0334524A2 (de) Kreuzschienenkonverter
US4823281A (en) Color graphic processor for performing logical operations
JPH077260B2 (ja) 画像データ回転処理装置及びその方法
JPH0375873B2 (de)
US5623624A (en) Memory control architecture for high speed transfer options
EP0410777B1 (de) Logische Schaltung und Verfahren zum Wiederordnen für einen graphischen Videoanzeigespeicher
US5269001A (en) Video graphics display memory swizzle logic circuit and method
US5818433A (en) Grapics memory apparatus and method
GB2215951A (en) Performing raster operations on patch formatted pixel data
EP0334622A2 (de) Rasteroperationen
EP0230352A2 (de) Graphik- und Datenanzeigesystem
GB2215948A (en) Performing raster operations on patch formatted pivel data
GB2215952A (en) Performing raster operations on patch formatted pixel data using time domain multiplexing
GB2215949A (en) Performing raster operations on patch formatted pixel data
GB2215950A (en) Performing raster operations on patch formatted pixel data
GB2215953A (en) Performing raster operations on multi-plane patch formatted pixel data
US4805228A (en) Cellular logic processor
GB2251773A (en) Graphics accelerator using parallel processed pixel patch to render line
JP2886855B2 (ja) 画像表示装置
JPH0215381A (ja) ラスタ操作実行方法、時間領域多重化方法および画像処理方法
EP0284905B1 (de) Anzeigesystem
JP3671744B2 (ja) 画像合成表示装置
JPH06324935A (ja) アドレス発生器およびアドレス発生システム

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): DE FR GB IT NL

RAP3 Party data changed (applicant data changed or rights of an application transferred)

Owner name: DU PONT PIXEL SYSTEMS LIMITED

RIN1 Information on inventor provided before grant (corrected)

Inventor name: TREVETT, NEIL FRANCIS

Inventor name: WILSON, MALCOLM ERIC

PUAL Search report despatched

Free format text: ORIGINAL CODE: 0009013

AK Designated contracting states

Kind code of ref document: A3

Designated state(s): DE FR GB IT NL

RHK1 Main classification (correction)

Ipc: G06F 15/66

17P Request for examination filed

Effective date: 19911118

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 19931001