Method and apparatus using a two-dimensional circular data buffer for scrollable image display
First Claim
1. A method of calculating a pixel address within a two dimensional data buffer, wherein the pixel is characterized by a linear segment position and a linear segment number in the data buffer, and wherein the two dimensional data buffer is characterized by a linear segment length and a buffer size, the method comprising calculating a linear segment offset within a two dimensional data buffer by multiplying a linear segment number by a linear segment length calculating a raw address by adding a two dimensional display buffer starting data address modulo the data buffer size, a pixel linear segment position and the linear segment offset;
- and in response to the raw address having a magnitude greater than the data buffer size, then reducing the magnitude of raw address by the buffer size.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for buffering 2-dimensional graphical image data to be supplied to a scrolling display controller. A 2-dimensional, circularly addressed linear data buffer is used to store a portion of an entire image. The data buffer is larger than the amount of data displayed at one time. A user enters scrolling commands and the display scrolls around the data initially in the buffer. new data is loaded into the buffer as the displayed data approaches the edge of the buffered data.
-
Citations
22 Claims
-
1. A method of calculating a pixel address within a two dimensional data buffer, wherein the pixel is characterized by a linear segment position and a linear segment number in the data buffer, and wherein the two dimensional data buffer is characterized by a linear segment length and a buffer size, the method comprising
calculating a linear segment offset within a two dimensional data buffer by multiplying a linear segment number by a linear segment length calculating a raw address by adding a two dimensional display buffer starting data address modulo the data buffer size, a pixel linear segment position and the linear segment offset; - and
in response to the raw address having a magnitude greater than the data buffer size, then reducing the magnitude of raw address by the buffer size. - View Dependent Claims (2)
- and
-
3. A system for calculating a pixel address within a two dimensional data buffer, wherein the pixel is characterized by a linear segment position and a linear segment number in the data buffer, and wherein the two dimensional data buffer is characterized by a linear segment length and a buffer size, the system comprising:
-
a linear segment offset calculator, for calculating a linear segment offset within a two dimensional data buffer, wherein the linear segment offset calculator multiplies a linear segment number of a pixel by a linear segment length of a two dimensional data buffer;
a raw address calculator, electrically connected to the linear segment offset calculator, wherein the raw address calculator adds a two dimensional display buffer starting data address modulo the data buffer size, a linear segment position of the pixel and the linear segment offset; and
a modulo operator, electrically connected to the raw address calculator, wherein the modulo operator reduces the magnitude of the raw address by the buffer size if the raw address has a magnitude greater than the data buffer size. - View Dependent Claims (4)
-
-
5. A computer program product for calculating a pixel address within a two dimensional data buffer, wherein the pixel is characterized by a linear segment position and a linear segment number in the data buffer, and wherein the two dimensional data buffer is characterized by a linear segment length and a buffer size, the computer program product configured to perform the steps of:
-
calculating a linear segment offset within the two dimensional data buffer by multiplying a linear segment number by a linear segment length calculating a raw address by adding a two dimensional display buffer starting data address modulo the data buffer size, a pixel linear segment position and the linear segment offset; and
in response to the raw address having a magnitude greater than the data buffer size, reducing the magnitude of the raw address by the buffer size. - View Dependent Claims (6)
-
-
7. A method for buffering a subset of digital image data used to drive a scrolling display, the method comprising:
-
storing a first contiguous data subset of a complete set of digital image data into a linear buffer memory, the data subset being greater than an amount of data accessed by a display and the buffer memory being organized as a two dimensional circular buffer;
determining if a display buffer within the first contiguous data subset is within a threshold distance of an edge of data forming the first contiguous data subset;
identifying an additional subset of the complete set of digital image data to place into the buffer memory, wherein the additional subset is image data that is contiguous with the first contiguous data and wherein the additional subset of data extends beyond the edge of the first contiguous data subset; and
loading the additional subset of data into the display buffer beyond the edge of the first contiguous data subset through circular addressing of the display buffer, wherein the buffer memory stores a plurality of pixels, each of the plurality of pixels having a pixel address within the buffer memory, wherein each pixel is characterized by a linear segment position and a linear segment number within the linear buffer memory, and wherein the buffer memory is characterized by a linear segment length and a data buffer size, wherein a selected pixel is access by;
calculating a linear segment offset within the buffer memory by multiplying a linear segment number of the selected pixel by the linear segment length;
adding a buffer memory starting data address, modulo the data buffer size, to a selected linear segment position of the selected pixel, and adding that sum to the linear segment offset; and
reducing a magnitude of the linear segment offset by the data buffer size if the magnitude of the linear segment offset is greater than the data buffer size. - View Dependent Claims (8, 9)
-
-
10. A system for buffering a subset of digital image data used to drive a scrolling display, comprising:
-
a display buffer cache for storing a first contiguous data subset of a complete set of digital image data, the data subset being greater than an amount of data accessed by a display and the display buffer cache being organized as a two dimensional circular buffer; and
a scrolling controller, electrically connected to the display buffer cache, which performs the following processing;
determining if a display buffer within the display buffer cache is within a threshold distance of an edge of data forming the first contiguous data subset;
identifying an additional subset of the complete set of digital image data to place into a linear buffer memory, wherein the additional subset is image data that is contiguous with the first contiguous data and wherein the additional subset of data extends beyond the edge of the first contiguous data subset; and
loading the additional subset of data into the display buffer beyond the edge of the first contiguous data subset through circular addressing of the display buffer, wherein the display buffer cache stores a plurality of pixels, each of the plurality of pixels having a pixel address within the two dimensional circular buffer, wherein each pixel is characterized by a linear segment position and a linear segment number with the linear buffer memory, and wherein the two dimensional circular buffer is characterized by a linear segment length and a data buffer size, wherein a current pixel is access by;
calculating a linear segment offset within the two dimensional circular buffer by multiplying a linear segment number of the current pixel by the linear segment length;
adding a two dimensional circular buffer starting data address, modulo the data buffer size, to a current linear segment position of the current pixel, and adding that sum to the linear segment offset; and
reducing the magnitude of the linear segment offset by the data buffer size if the magnitude of the linear segment offset is greater than the data buffer size. - View Dependent Claims (11, 12, 13)
-
-
14. A device incorporating a video display, comprising:
-
image display for displaying a video image defined by a display buffer;
a display buffer cache, electrically connected to the image display and for storing a first contiguous data subset of a complete set of digital image data, wherein the data subset is larger than display buffer and the display buffer cache is organized as a two dimensional circular buffer; and
a scrolling controller, electrically connected to the display buffer cache, which performs the following processing;
determining if a display buffer within the display buffer cache is within a threshold distance of an edge of data forming the first contiguous data subset;
identifying an additional subset of the complete set of digital image data to place into a linear buffer memory, wherein the additional subset is image data that is contiguous with the first contiguous data and wherein the additional subset of data extends beyond the edge of the first contiguous data subset; and
loading the additional subset of data into the display buffer beyond the edge of the first contiguous data subset through circular addressing of the display buffer, wherein the display buffer cache stores a plurality of pixels, each of the plurality of pixels having a pixel address within the two dimensional circular buffer, wherein each pixel is characterized by a linear segment position and a linear segment number within the linear buffer memory, and wherein the two dimensional circular buffer is characterized by a linear segment length and a data buffer size, wherein a current pixel is access by;
calculating a linear segment offset within the two dimensional circular buffer by multiplying a linear segment number of the current pixel by the linear segment length;
adding a two dimensional circular buffer starting data address, modulo the data buffer size, to a current linear segment position of the current pixel, and adding that sum to the linear segment offset; and
reducing a magnitude of the linear segment offset by the data buffer size if the magnitude of the linear segment offset is greater than the data buffer size. - View Dependent Claims (15, 16, 17, 18)
-
-
19. A computer program product for buffering a subset of digital image data used to drive a scrolling display, the computer program product configured to perform the steps of:
-
storing a first contiguous data subset of a complete set of digital image data into a linear buffer memory, the data subset being greater than an amount of data accessed by a display and the buffer memory being organized as a two dimensional circular buffer;
determining if a display buffer within the first contiguous data subset is within a threshold distance of an edge of data forming the first contiguous data subset;
identifying an additional subset of the complete set of digital image data to place into the buffer memory, wherein the additional subset is image data that is contiguous with the first contiguous data and wherein the additional subset of data extends beyond the edge of the first contiguous data subset; and
loading the additional subset of data into the display buffer beyond the edge of the first contiguous data subset through circular addressing of the display buffer, wherein the buffer memory stored a plurality of pixels, each of the plurality of pixels having a pixel address within the buffer memory, wherein each pixel is characterized by a linear segment position and a linear segment number, and wherein the buffer memory is characterized by a linear segment length and a data buffer size, wherein each pixel is access by;
calculating a linear segment offset within the buffer memory by multiplying a linear segment number of a current pixel by the linear segment length;
adding a buffer memory starting data address, modulo the data buffer size, to a current linear segment position of the current pixel, and adding that sum to the linear segment offset; and
reducing a magnitude of the linear segment offset by the data buffer size if the magnitude of the linear segment offset is greater than the data buffer size. - View Dependent Claims (20, 21)
-
-
22. A system for buffering a subset of digital image data used to drive a scrolling display, comprising:
a display buffer cache for storing a first contiguous data subset of a complete set of digital image data, the data subset being greater than an amount of data accessed by a display and the display buffer cache being organized as a two dimensional circular buffer, wherein the display buffer cache stores a plurality of pixels, each of the plurality of pixels having a pixel address within the two dimensional circular buffer, wherein each pixel is characterized by a linear segment position and a linear segment number, and wherein the two dimensional circular buffer is characterized by a linear segment length and a data buffer size, wherein a current pixel is access by;
calculating a linear segment offset within the two dimensional circular buffer by multiplying a linear segment number of the current pixel by the linear segment length;
adding a two dimensional circular buffer starting data address, modulo the data buffer size, to a current linear segment position of the current pixel, and adding that sum to the linear segment offset; and
reducing a magnitude of the linear segment by the data buffer size if the magnitude of the linear segment offset is greater than the data buffer size.
Specification