Rotated rendering and locking support for tablet computers and portrait displays
Summary by NHIP
Software Portrait Mode Rendering
The method redirects graphics data rendering to portrait displays without adding specialized hardware. It stores pixels in a landscape arrangement within a frame buffer, then changes their addresses to enable access in a portrait order using a steering module.
Claim Score by NHIP
Abstract
Apparatus, systems and methods for handling portrait mode oriented display surfaces without requiring expensive hardware in the display sub-system are disclosed. For example, an apparatus is disclosed such that the rendering of graphics data to the portrait mode display surfaces is redirected at rendering time such that there is no need for adding complicated hardware in the display part of the graphics adapter in order to handle conventional displays—all of which have no circuitry to deal with data natively stored in a portrait mode surface. Additionally, an apparatus to handle direct surface access of a surface through a surface lock which has already been rotated is already described. This can either be done by copying of surface data or by an optimized proposed apparatus which eliminates this copy. Other implementations are also disclosed.

Term
Term ended
Expired 13 July 2026, 0.2 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
20 claims: 3 independent, 17 dependent
- 1Broadest claimClaim Score 73, broad(NHIP)A method comprising:storing an array of pixels in a first arrangement in a memory, said first arrangement addressable by a first sequence of addresses;changing the addresses of said first arrangement of said pixels to enable access to said pixels in a second arrangement from said memory, said second arrangement addressable by a second sequence of addresses different from said first sequence of addresses, while maintaining said pixels stored in said memory in said first arrangement;and accessing, using said changed addresses, said pixels in said first arrangement from said memory in an order that provides the pixels in said second arrangement.
- 7A non-transitory computer readable medium storing instructions executed by a computer to:store an array of pixels in a first arrangement in a memory, said first arrangement addressable by a first sequence of addresses;change the addresses of said first arrangement of said pixels to enable access to said pixels in a second arrangement from said memory, said second arrangement addressable by a second sequence of addresses different from said first sequence of addresses, while maintaining said pixels stored in said memory in said first arrangement;and access, using said changed addresses, said pixels in said first arrangement from said memory in an order that provides the pixels in said second arrangement.
- 13An apparatus comprising:a display driver;a steering module coupled to said display driver;a memory coupled to said steering module;and an array of pixels being stored in a first arrangement in said memory, said first arrangement addressable by a first sequence of addresses, said steering module to change the addresses of said first arrangement of said pixels to enable access to said pixels in a first arrangement from said memory in an order that provides the pixels in said second arrangement, said second arrangement addressable by a second sequence of addresses different from said first sequence of addresses, while maintaining said pixels stored in said memory in said first arrangement.
Independent claims3
46 paragraphs in 4 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
0001This application is a continuation of U.S. patent application Ser. No. 11/486,935, filed on Jul. 13, 2006 now U.S. Pat. No. 8,259,135.
BACKGROUND
0002Some flat panel and tablet computer displays can be physically rotated to display information in either landscape or portrait mode. Typical display drivers implement landscape mode by rendering data to a “landscape oriented” memory layout or “drawing surface” allocated in memory so that the pixels in each row of the drawing surface are stored on the same page or row in memory. This drawing surface permits display engines to fetch pixels from memory row-wise while incurring page misses only when switching between rows.
0003Because landscape mode is more traditional in displays, conventional display hardware expects to receive pixel data streamed to it in a sequence of rows of pixels conforming to the landscape oriented drawing surface even when the display is physically oriented in portrait mode. Thus, if a driver implements portrait mode by rendering to a “portrait oriented” drawing surface that places pixels in each row on the same page of memory, the display engine will incur a page miss with each pixel because the display hardware is still expecting the pixel data to be streamed from a landscape oriented drawing surface.
0004Common solutions to portrait mode rendering rely on either providing dual drawing surfaces in memory, one portrait oriented surface for the driver to render to and a rotated, landscape oriented surface accessed by the display engine, or by enhancing the display engine with line buffers. But creating dual drawing surfaces doubles the memory requirements of the display buffer and consumes memory bandwidth with the copy operation used to create the second, rotated surface. Alternatively, adding hardware line buffers to the display engine path incurs substantial hardware implementation costs.
BRIEF DESCRIPTION OF THE DRAWINGS
0005The accompanying drawings, incorporated in and constituting a part of this specification, illustrate one or more implementations consistent with the principles of the invention and, together with the description of the invention, explain such implementations. The drawings, which should not be taken to limit the invention to the specific implementations shown therein, are also not necessarily to scale nor should they be considered exhaustive, the emphasis instead being placed upon illustrating the principles of the invention. In the drawings,
0006<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram illustrating a system in accordance with some implementations of the invention;
0007<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram illustrating a system in accordance with some implementations of the invention;
0008<figref idref="DRAWINGS">FIGS. 3-5</figref> are flow charts illustrating processes in accordance with some implementations of the invention; and
0009<figref idref="DRAWINGS">FIG. 6</figref> is a block diagram illustrating representative drawing surface configurations in accordance with some implementations of the invention.
DETAILED DESCRIPTION
0010The following description refers to the accompanying drawings. Among the various drawings the same reference numbers may be used to identify the same or similar elements. While the following description provides a thorough understanding of the various aspects of the claimed invention by setting forth specific details such as particular structures, architectures, interfaces, techniques, etc., such details are provided for purposes of explanation and should not be viewed as limiting. Moreover, those of skill in the art will, in light of the present disclosure. appreciate that various aspects of the invention claimed may be practiced in other examples or implementations that depart from these specific details. At certain junctures in the following disclosure descriptions of well known devices, circuits, and methods have been omitted to avoid clouding the description of the present invention with unnecessary detail.
0011<figref idref="DRAWINGS">FIG. 1</figref> illustrates an example system <b>100</b> according to some implementations of the invention. System <b>100</b> includes one or more processor core(s) <b>102</b> coupled to a graphics/memory controller <b>104</b> in addition to memory <b>106</b> (e.g., dynamic random access memory (DRAM), static random access memory (SRAM), non-volatile memory such as flash memory, etc.), a display controller <b>108</b> and display <b>109</b>, and an input/output (I/O) controller <b>110</b> all coupled to controller <b>104</b>. System <b>100</b> also includes wireless transmitter circuitry and wireless receiver circuitry <b>112</b> coupled to I/O controller <b>110</b> and an antenna <b>114</b> (e.g., dipole antenna, narrowband Meander Line Antenna (MLA), wideband MLA, inverted “F” antenna, planar inverted “F” antenna, Goubau antenna, Patch antenna, etc.) coupled to circuitry <b>112</b>.
0012System <b>100</b> may be any system suitable for processing graphics data and providing that data in a format suitable for display. Moreover, system <b>100</b> may assume a variety of physical implementations. For example, system <b>100</b> may be implemented in a personal computer (PC), a networked PC, a server computing system, a handheld computing platform (e.g., a personal digital assistant (PDA)), a gaming system (portable or otherwise), a 3D capable cellular telephone handset, etc. Moreover, while all components of system <b>100</b> may be implemented within a single device, such as a system-on-a-chip (SOC) integrated circuit (IC), components of system <b>100</b> may also be distributed across multiple ICs or devices. For example, processor core(s) <b>102</b>, controllers <b>104</b>/<b>110</b>, memory <b>106</b>, circuitry <b>112</b> and antenna <b>114</b> may be implemented, in part, as multiple ICs contained within a single computing platform, such as a personal computer (PC) or a set top box (STB) to name a few examples, while display controller <b>108</b> may be implemented in a separate device such as display <b>109</b> coupled to graphics/memory controller <b>104</b>. Clearly, many such permutations are possible consistent with the functionality of system <b>100</b> as described herein.
0013Processor core(s) <b>102</b> may comprise special purpose or general purpose processor core (s) including any control and/or processing logic, hardware, software and/or firmware, capable of providing graphics/memory controller <b>104</b> with graphics data and/or instructions. Software drivers executing on system <b>100</b> may use processor core(s) <b>102</b> to perform a variety of graphics calculations or processes such as rendering image data, etc. the results of which may be provided to graphics/memory controller <b>104</b> and/or that may be stored in memory <b>106</b> for eventual use by display controller <b>108</b>.
0014Processor core(s) <b>102</b> may further be capable of performing any of a number of tasks that support rotated rendering and locking support for tablet computers and portrait displays. These tasks may include, for example, although the invention is not limited in this regard, providing graphics or image data to controllers <b>104</b>/<b>108</b>, downloading microcode to controllers <b>104</b>/<b>108</b>, initializing and/or configuring registers within controllers <b>104</b>/<b>108</b>, interrupt servicing, etc. While <figref idref="DRAWINGS">FIG. 1</figref> may be interpreted as showing processor core(s) <b>102</b> and controllers <b>104</b>/<b>108</b> as distinct devices, the invention is not limited in this regard and those of skill in the art will recognize that processor core(s) <b>102</b> and one or both of controllers <b>104</b>/<b>108</b> and possibly additional components of system <b>100</b> may be implemented within a single IC.
0015Graphics/memory controller <b>104</b> may comprise any processing logic, hardware, software, and/or firmware, capable of processing or controlling the manipulation of graphics or image data and of controlling the storage of that data in memory <b>106</b>. In one implementation, controller <b>104</b> may be implemented in a chipset IC, although the invention is not limited in this regard. Controller <b>104</b> may process graphics or image data provided by processor core(s) <b>102</b>, held or stored in memory <b>106</b>, and may provide that data to display controller <b>108</b>.
0016Graphics processor <b>104</b> may also receive graphics or image data associated with one or more physical drawing surfaces in memory <b>106</b> and may enable the storing of that data in memory <b>106</b> in a format or layout suitable for accessing by display controller <b>108</b>. In addition, controller <b>104</b> may, in accordance with some implementations of the invention, implement a scheme for placing graphics or image data in memory <b>106</b> by redirecting that data when it has been rendered to a portrait mode logical drawing surface in a manner as will be described in greater detail below.
0017Display controller <b>108</b> may comprise any processing logic, hardware, software, and/or firmware, capable of converting graphics or image data supplied by graphics/memory controller <b>104</b> into a format suitable for driving display <b>109</b> (i.e., display-specific data). For example, while the invention is not limited in this regard, controller <b>104</b> may retrieve graphics or image data from memory <b>106</b> and provide that data to controller <b>108</b> in a specific color format, for example in a compressed red-green-blue (RGB) pixel format, and controller <b>108</b> may process that RGB data by generating, for example, corresponding liquid crystal display (LCD) drive data levels, etc. Although <figref idref="DRAWINGS">FIG. 1</figref> shows controllers <b>104</b> and <b>108</b> as distinct components, the invention is not limited in this regard, and those of skill in the art will recognize that, for example, some if not all of the functions of display controller <b>108</b> may be performed by controller <b>104</b> or vice versa. Display <b>109</b> may be any type of display that is capable of displaying information in either landscape mode or portrait mode. For example, display <b>109</b> may be an LCD, or an electroluminescent (EL) display, to name a few examples, that can be physically rotated to display graphics or image data in either landscape mode or portrait mode.
0018<figref idref="DRAWINGS">FIG. 2</figref> illustrates a system <b>200</b> in accordance with some implementations of the invention. System <b>200</b> includes a display driver <b>202</b> to render image data to a logical drawing surface <b>203</b>. Driver <b>202</b> may be referred to as logic to render pixel data. System <b>200</b> further includes a steering module <b>204</b> to steer or write the image data to a physical drawing surface <b>205</b> comprising storage locations in memory <b>206</b>. Steering module <b>204</b> may be referred to as logic to map pixel data. In accordance with some implementations of the invention and as will be explained in greater detail below, when driver <b>202</b> writes image data to or reads image data from logical surface <b>203</b>, where that data is organized in surface <b>203</b> in portrait mode, steering module <b>204</b> may map or direct or redirect or undertake low-level memory steering of that image data to physical surface <b>205</b> such that the data held in surface <b>205</b> is suitable for being accessed by a display engine that expects the image data held by surface <b>205</b> to be organized in landscape mode. In some implementations steering module <b>204</b> may include a chipset page table that undertakes the low-level memory steering although the invention is not limited in this regard.
0019As those skilled in the art will recognize, although the invention is not limited in this regard, driver <b>202</b> may comprise one or more software algorithms that may execute on one or more processor cores such as one or more of processor core(s) <b>102</b> of <figref idref="DRAWINGS">FIG. 1</figref>. In addition, although the invention is also not limited in this regard, logical surface <b>203</b> may be implemented in hardware registers associated with one or more of processor cores <b>102</b> or controller <b>104</b>. Further, portions of system <b>200</b> may be similar to portions of system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref>. For example, memory <b>206</b> could be memory <b>106</b>. Moreover, those skilled in the art may recognize that physical surface <b>205</b> may comprise a display buffer including one or more contiguous blocks of memory locations or addresses of memory <b>206</b>.
0020<figref idref="DRAWINGS">FIGS. 3-5</figref> are flow charts illustrating respective processes <b>300</b>-<b>500</b> for implementing rotated rendering and locking support for tablet computers and portrait displays in accordance with some implementations of the invention. While, for ease of explanation, processes <b>300</b>-<b>500</b> may be described with regard to system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> and/or system <b>200</b> of <figref idref="DRAWINGS">FIG. 2</figref> the invention is not limited in this regard and other processes or schemes supported by appropriate devices in accordance with the claimed invention are possible.
0021Referring to <figref idref="DRAWINGS">FIG. 3</figref>, process <b>300</b> may begin with the generation of image data for rendering [act <b>302</b>]. In some implementations, display driver <b>202</b> executing on systems <b>100</b>/<b>200</b> may generate image data in the form of pixel data comprising rows and columns of pixels. For example, although the invention is not limited in this regard, act <b>302</b> may comprise a software application associated with driver <b>202</b> undertaking a 3D graphics operation such as pixel shading to generate an image comprising pixels.
0022Process <b>300</b> may then continue with a determination of whether to render the image data in portrait mode [act <b>304</b>]. One way to do this is to have the driver generating the image data in act <b>302</b> undertake the determination of act <b>304</b> based, for example, on an end-user specified display mode. If the result of act <b>304</b> is negative, that is, if the image data is to be rendered in landscape mode rather than portrait mode then process <b>300</b> may continue with the rendering of the image data to a landscape mode logical surface [act <b>306</b>]. One way to undertake act <b>306</b> is to have driver <b>202</b> render pixel data (i.e., pixels) to logical surface <b>203</b> where that pixel data is organized in surface <b>203</b> in a landscape mode, orientation or aspect. The difference between a landscape mode logical surface and a portrait mode logical surface will be explained in greater detail below.
0023Process <b>300</b> may then continue with the writing of the image data to a physical surface [act <b>308</b>]. In some implementations, act <b>308</b>, may be undertaken by the same driver that undertook acts <b>302</b>-<b>306</b>. As those skilled in the art will recognize, a driver, such as driver <b>202</b>, may undertake act <b>308</b> by writing the image data's pixels in a block-wise fashion where driver <b>202</b> uses module <b>204</b> to steer or direct the pixel data to physical surface <b>205</b> in memory <b>206</b> where that pixel data is organized in surface <b>205</b> in a landscape mode, orientation or aspect. The invention is, however, not limited in this regard and the driver may undertake act <b>308</b> by writing the image data's pixels one pixel at a time to surface <b>205</b>.
0024<figref idref="DRAWINGS">FIG. 6</figref>, provided for the purposes of explaining process <b>300</b> and/or related processes, illustrates a representative landscape mode logical surface <b>602</b> and a representative portrait mode logical surface <b>620</b>. For example, logical surfaces <b>602</b> and <b>620</b> may represent different implementations of logical surface <b>203</b> of <figref idref="DRAWINGS">FIG. 2</figref>. In addition, <figref idref="DRAWINGS">FIG. 6</figref> illustrates representative physical surfaces <b>609</b> and <b>627</b> where, in accordance with some implementations of the invention, physical surface <b>627</b> may be considered to be a rotated physical surface in comparison to physical surface <b>609</b> as will be explained in greater detail below. For example, physical surfaces <b>609</b> and <b>627</b> may represent different implementations of physical surface <b>205</b> of <figref idref="DRAWINGS">FIG. 2</figref>. While <figref idref="DRAWINGS">FIG. 6</figref> is intended to aid discussion of processes <b>300</b>-<b>500</b> the specific elements and arrangements illustrated therein should not be construed to limit the claimed invention in anyway.
0025<figref idref="DRAWINGS">FIG. 6</figref> shows logical surface <b>602</b> organized by, for example, driver <b>202</b>, in a “8×6” or landscape mode comprising eight columns and six rows <b>603</b>-<b>608</b> of pixel values (<b>00</b>, <b>01</b>, <b>02</b> etc.), and logical surface <b>620</b> organized in a “6×8” or portrait mode comprising six columns <b>621</b>-<b>626</b> and eight rows of pixel values as shown. Those skilled in the art will recognize, however, that the invention is not limited to a particular number of columns and rows of image data or pixels or pixel values and, thus, that the same techniques described herein with respect to process <b>300</b> and/or related processes may be applied to a general sized landscape or portrait mode where, for example, image data is organized in a 1024×768 landscape mode logical surface or a 768×1024 portrait mode logical surface. Further, those skilled in the art will recognize that the terms “image data”, “pixel data”, “pixel value” or “data value” as used herein may be used interchangeably without departing from the scope or spirit of the invention.
0026To aid description of some implementations of the invention a logical representation of a drawing surface may be distinguished from a physical representation of that surface. Thus, a logical image of a drawing surface (i.e., a logical surface such as either of surfaces <b>602</b> or <b>620</b>) may be defined as the view of the surface as seen by an application or the driver for drawing or rendering on the surface. For example, landscape mode logical surface <b>602</b> may represent the logical image of the drawing surface where pixels <b>00</b>, <b>01</b>, <b>02</b> are sequentially laid out in memory where physical surface <b>609</b> may represent the physical view of the surface in memory. Since physical surface <b>609</b> is a landscape oriented surface, the logical view provided by surface <b>602</b> and the physical view provided by surface <b>609</b> are similar.
0027By contrast, however, while the logical view provided by logical surface <b>620</b> implies that pixels <b>00</b>, <b>01</b>, and <b>02</b> are all stored sequentially row-wise in memory and pixels <b>05</b>, <b>15</b>, and <b>25</b> are stored non-sequentially in memory, the physical surface <b>627</b> resulting from the redirection of those pixels shows that, in actuality, pixels <b>00</b>, <b>01</b>, and <b>02</b> are stored non-sequentially in memory. Thus, while the logical view provided by surface <b>620</b> may be useful when a driver draws or renders onto that surface, after the image data has been processed to this logical surface, steering module <b>204</b> may reorganize or redirect the data such that pixels <b>05</b>, <b>15</b>, and <b>25</b> are all stored sequentially in memory while pixels <b>00</b>, <b>01</b>, and <b>02</b>, organized sequentially in logical surface <b>620</b>, are no longer stored sequentially in memory. In this sense, surface <b>627</b> may be described as a rotated physical surface in comparison to physical surface <b>609</b>.
0028As shown in <figref idref="DRAWINGS">FIG. 6</figref>, physical drawing surfaces <b>609</b> and <b>627</b> comprise six rows of storage locations <b>610</b>-<b>615</b> where those rows may, for example, comprise memory pages of memory <b>106</b> or memory <b>206</b>. In general, however, those skilled in the art will recognize that a page of memory may fully accommodate physical surfaces <b>609</b> and <b>627</b> but, in order to more clearly describe the invention, each row <b>610</b>-<b>615</b> of surfaces <b>609</b> and <b>627</b> may be considered to belong to a different page of memory. Further, those skilled in the art will recognize that data, such as pixel values, held or stored in one row of storage locations, such as one of rows <b>610</b>-<b>615</b>, may be accessed or read such that a page miss is not incurred when accessing pixels in the same row, such as pixels <b>00</b>-<b>07</b> in row <b>610</b> of surface <b>609</b>. By contrast, those skilled in the art will also recognize that switching between accessing or reading a first pixel or data value stored on one of rows <b>610</b>-<b>615</b> and accessing or reading a second pixel or data value stored on another row of rows <b>610</b>-<b>615</b> incurs a page miss thus increasing the time required to access or read that second pixel or data value.
0029Those skilled in the art will further recognize that data organized in logical surface <b>602</b> and rendered or written to physical surface <b>609</b> may be scanned out or streamed by hardware in controllers <b>104</b>/<b>108</b> or display <b>109</b> such that pixels <b>00</b>-<b>07</b> held in row <b>610</b> of surface <b>609</b> may be provided to display <b>109</b> without incurring a page miss when sequentially accessing or streaming the pixels in row <b>610</b>. Similarly, the pixels held in each of rows <b>611</b>-<b>615</b> may likewise be sequentially accessed or streamed to display <b>109</b> such that page misses are not incurred in the process thereof. In accordance with some implementations of the invention, steering module <b>204</b> may act to redirect or steer the writing of the pixel data of logical surface <b>620</b> to physical surface <b>627</b> so that when that pixel data is sequentially accessed or streamed to display <b>109</b> from physical surface <b>627</b> the streaming hardware does not incur page misses for any of the pixel values organized or located adjacently in any one of columns <b>621</b>-<b>626</b> because those pixel values in any one of columns <b>621</b>-<b>626</b> are placed or held in a respective one of rows <b>610</b>-<b>615</b> of storage locations of surface <b>627</b>.
0030Referring to both <figref idref="DRAWINGS">FIGS. 3 and 6</figref>, act <b>306</b> may involve driver <b>202</b> rendering pixel data to logical surface <b>602</b> and then act <b>308</b> may involve driver <b>202</b> writing the pixel data organized in logical surface <b>602</b> by using steering module <b>204</b> to steer or direct or map that image data to landscape oriented physical surface <b>609</b> implemented in memory such that pixels of each row <b>603</b>-<b>608</b> of logical surface <b>602</b> occupy the same one of rows <b>610</b>-<b>615</b> of physical surface <b>609</b> as shown in <figref idref="DRAWINGS">FIG. 6</figref>. In other words, driver <b>202</b>, when rendering in, for example, four pixel blocks, may undertake act <b>308</b> by using steering module <b>204</b> to write pixels <b>00</b> and <b>01</b> of row <b>603</b> and pixels <b>10</b> and <b>11</b> of row <b>604</b> to surface <b>609</b> such that pixels <b>00</b> and <b>01</b> are held in row <b>610</b> and pixels <b>10</b> and <b>11</b> are held in row <b>611</b>. Driver <b>202</b> may then continue to undertake act <b>308</b> by using steering module <b>204</b> to write pixels <b>02</b> and <b>03</b> of row <b>603</b> and pixels <b>12</b> and <b>13</b> of row <b>604</b> to surface <b>609</b> such that pixels <b>02</b> and <b>03</b> are held in row <b>610</b> adjacent to pixels <b>00</b> and <b>01</b> and pixels <b>12</b> and <b>13</b> are held in row <b>611</b> adjacent to pixels <b>10</b> and <b>11</b>. By continuing in this manner, driver <b>202</b> and steering module <b>204</b> may undertake act <b>308</b> until all of the pixel data in logical surface <b>602</b> has been fully written or rendered to physical surface <b>609</b>.
0031If the result of act <b>304</b> is positive, that is, if the data is to be rendered in portrait mode rather than landscape mode then process <b>300</b> may continue with the rendering of the image data to a portrait mode logical surface [act <b>310</b>], followed by the redirection of the image data [act <b>312</b>] and the writing of the image data to a rotated physical surface [act <b>314</b>]. In accordance with some implementations of the invention, act <b>310</b> may be undertaken by driver <b>202</b> rendering image data to portrait mode logical surface <b>620</b>, while acts <b>312</b> and <b>314</b> may be undertaken by having driver <b>202</b> use steering module <b>204</b> to write the image data or pixels of surface <b>620</b> to physical drawing surface <b>627</b> such that pixels of each column <b>621</b>-<b>626</b> of portrait mode logical drawing surface <b>620</b> occupy the same respective one of rows <b>610</b>-<b>615</b> of rotated physical surface <b>627</b> as shown in <figref idref="DRAWINGS">FIG. 6</figref>.
0032In other words, driver <b>202</b> may undertake acts <b>312</b> and <b>314</b> by using steering module <b>204</b> to write pixels <b>00</b> and <b>10</b> of column <b>621</b> and pixels <b>01</b> and <b>11</b> of column <b>622</b> to surface <b>627</b> such that pixels <b>00</b> and <b>10</b> are held in row <b>615</b> of surface <b>627</b> and pixels <b>01</b> and <b>11</b> are held in row <b>614</b> of surface <b>627</b>. Driver <b>202</b> may then continue to undertake acts <b>312</b> and <b>314</b> by using steering module <b>204</b> to write pixels <b>02</b> and <b>12</b> of column <b>623</b> and pixels <b>03</b> and <b>13</b> of column <b>624</b> to surface <b>627</b> such that pixels <b>02</b> and <b>12</b> occupy row <b>613</b> of surface <b>627</b> and pixels <b>03</b> and <b>13</b> occupy row <b>612</b> of surface <b>627</b>. By continuing in this manner, driver <b>202</b> and steering module <b>204</b> may undertake acts <b>312</b> and <b>314</b> until all the data in logical surface <b>620</b> has been fully written or rendered to rotated physical surface <b>627</b>. Those skilled in the art will recognize that rendering requests to physical surface <b>627</b> need not be requests to write the full surface, but, rather, may be random requests to write to individual pixels and that each such rendered pixel in logical surface <b>620</b> may be steered or redirected to a location in physical surface <b>627</b> in acts <b>312</b> and <b>314</b>.
0033<figref idref="DRAWINGS">FIG. 4</figref> illustrates a scheme <b>400</b> for providing direct access to a drawing surface. Process <b>400</b> may begin with a determination of whether direct access to a portrait mode drawing surface has been requested [act <b>401</b>]. Act <b>401</b> may arise when a software application or operating system (OS) executing on system <b>100</b>/<b>200</b> requests direct access (i.e., seeks to “lock”) a logical representation of a drawing surface such as either of logical surfaces <b>602</b> or <b>620</b>.
0034If an application or OS requests direct access to a landscape mode logical surface every read or write to a pixel of that logical surface can be directly steered or mapped to the corresponding pixel of the physical surface because the pixels of the corresponding physical surface match the layout of the pixels in the logical surface. For example, as <figref idref="DRAWINGS">FIG. 6</figref> shows, the pixels of landscape mode logical surface <b>602</b> and physical surface <b>609</b> have a matching layout pattern. Thus, for example, an application or OS directly accessing a landscape mode logical surface such as surface <b>620</b> and using a pointer to a particular pixel, say, for example, pixel <b>21</b>, will, when that application or OS increments the pointer to generate the address of the next logical pixel (pixel <b>22</b>), be accessing pixel <b>22</b> because the next pixel row-wise adjacent to pixel <b>21</b> in the corresponding physical surface <b>609</b> is pixel <b>22</b>.
0035By contrast, if an application or OS requests direct access to portrait mode logical surface every read or write to a pixel of the logical surface may need to be redirected to the corresponding pixel of the physical surface because the pixels of the corresponding physical surface have a rotated layout with respect to the layout of the pixels in the logical surface. For example, as <figref idref="DRAWINGS">FIG. 6</figref> shows, the pixels of portrait mode logical surface <b>620</b> and physical surface <b>627</b> do not have a matching layout pattern. Thus, without benefit of some implementations of the present invention, an application directly accessing a portrait mode logical surface such as surface <b>620</b> and using a pointer to a particular pixel, such as pixel <b>21</b>, will, when that application or OS increments the pointer to generate the address of the next logical pixel (pixel <b>22</b>), actually be accessing a pixel other than pixel <b>22</b> because the next pixel row-wise adjacent to pixel <b>21</b> in rotated physical surface <b>627</b> is pixel <b>31</b> and not pixel <b>22</b>.
0036If the result of act <b>401</b> is negative, that is, if an application or OS is not seeking direct access to a portrait mode logical surface, then process <b>400</b> may end. If, on the other hand, the result of act <b>401</b> is positive, that is, if an application or OS is seeking direct access to a portrait mode logical surface, then process <b>400</b> may continue with the copying of image data from the rotated physical surface to a portrait mode logical surface [act <b>402</b>]. One way to do this is to have controller <b>104</b> use steering module <b>204</b> to copy the pixel data from rotated physical surface <b>627</b> to portrait mode logical surface <b>620</b>. That is, referring to <figref idref="DRAWINGS">FIG. 6</figref>, the data corresponding to the first pixel (pixel <b>05</b>) of row <b>610</b> of surface <b>627</b> may be copied to the first pixel position (i.e., the upper most pixel <b>05</b>) of column <b>626</b> of surface <b>620</b> while the data corresponding to the second pixel (pixel <b>15</b>) of row <b>610</b> of surface <b>627</b> may be copied to the second pixel position (i.e., the upper most pixel <b>15</b>) of column <b>626</b> and so on until all the data of surface <b>627</b> is copied to surface <b>620</b>. However, the invention is not limited to any particular method or scheme for the copying of image data from the rotated physical surface to portrait mode logical surface in act <b>402</b>. In addition, the invention is not limited to locking an entire logical surface. Thus, for example, that the application could have requested a lock to only a partial rectangular region of the overall surface in act <b>401</b> in which case only the relevant partial surface data may copied in act <b>402</b>.
0037Process <b>400</b> may then continue with allowing the application or OS to access or lock the portrait mode logical surface [act <b>404</b>]. Thus, for example, once controller <b>104</b> has copied the pixel data from surface <b>627</b> to surface <b>620</b> in act <b>402</b>, the application or OS that requested direct access in act <b>401</b> may be permitted to access and/or lock portrait mode logical surface <b>620</b> so that the application or OS may read and/or write pixel data to or from that logical surface.
0038Process <b>400</b> may then conclude with the copying of image data from the portrait mode logical surface to the rotated physical surface act <b>4061</b>. Thus, for example, once an application or OS has been allowed, in act <b>404</b>, to access and/or lock portrait mode logical surface <b>620</b> so that the application or OS may read and/or write pixel data to or from that logical surface, controller <b>104</b> may copy the pixel data of surface <b>620</b> back to rotated physical surface <b>627</b> in act <b>406</b>. That is, act <b>406</b> may involve copying of the data corresponding to the first pixel position (i.e., the upper most pixel <b>05</b>) of column <b>626</b> of surface <b>620</b> to the first pixel (pixel <b>05</b>) of row <b>610</b> of surface <b>627</b> followed by the copying of the data corresponding to the second pixel position (i.e., the upper most pixel <b>15</b>) of column <b>626</b> to the second pixel (pixel <b>15</b>) of row <b>610</b> of surface <b>627</b> and so on until all the data of surface <b>627</b> is copied to surface <b>620</b>.
0039<figref idref="DRAWINGS">FIG. 5</figref> illustrates another scheme <b>500</b> for providing direct access to a portrait mode drawing surface. Process <b>500</b> may begin with a determination of whether direct access to a portrait mode drawing surface has been requested [act <b>501</b>]. Act <b>501</b> is similar to act <b>401</b> described above. If an application or OS has requested access to a portrait mode drawing surface then process <b>500</b> may continue with the creation of a fence region in memory [act <b>502</b>]. This may be done in some implementations of the invention by, for example, having controller <b>104</b> create a fence region in memory, such as memory <b>106</b>, where that fence region contains at least portions of physical drawing surface <b>627</b>.
0040As those skilled in the art will recognize, a memory fence region defines special properties or rules for accessing a region of memory. In some implementations of the invention. establishing a fence region in act <b>502</b> may involve using logic to receive an access request and to remap or redirect that request so that the application or OS requesting direct access may still access the pixels it expects to access in accordance with the layout of the portrait mode logical surface even though the layout of the corresponding rotated physical surface does not match that logical surface's layout. For example, act <b>502</b> may involve using logic associated with steering module <b>204</b> of controller <b>104</b> to recognize that if an access request is made to any portion of portrait mode logical surface <b>620</b> (e.g., a pixel address/data pair targeting portrait mode logical surface <b>620</b>) then that logic should alter or redirect or remap that access request so that it will correctly access the surface.
0041Process <b>500</b> may then conclude with allowing the application or OS to lock the portrait mode logical surface [act <b>504</b>]. One way to implement act <b>504</b> is to use logic in steering module <b>204</b> to remap an access request specifying a pixel location in a portrait mode logical surface to the corresponding pixel data in the rotated physical surface. Thus, for example, if an application or OS issues a write request to pixel <b>05</b> in surface <b>620</b> (i.e., where the request specifies the logical address of pixel <b>05</b> in surface <b>620</b>), controller <b>104</b> may use logic in steering module <b>204</b> to alter or redirect the address of that write request so that the application or OS accesses the correct pixel data. For example, if an application or OS increments a pointer from pixel <b>21</b> in logical surface <b>620</b> to pixel <b>22</b> in that surface and issues a write request targeting pixel <b>22</b> then, if steering module <b>204</b> does not alter or redirect the address for pixel <b>22</b> included in the write request, the write request will actually access pixel <b>31</b> of physical surface <b>627</b> rather than pixel <b>22</b> as intended. If, on the other hand, steering module <b>204</b> does, in accordance with acts <b>502</b> and <b>504</b>, alter or redirect the address for pixel <b>22</b> included in the write request, the write request will access pixel <b>22</b> as intended.
0042The acts shown in <figref idref="DRAWINGS">FIGS. 3-5</figref> need not be implemented in the order shown; nor do all of the acts necessarily need to be performed. Also, those acts that are not dependent on other acts may be performed in parallel with the other acts. For example, acts <b>302</b> and <b>304</b> may be undertaken in parallel. In other words, the act of generating image data for rendering [act <b>302</b>] may include determining whether to render that data in portrait mode [act <b>304</b>]. Alternatively, act <b>304</b> may be undertaken before act <b>302</b>. In other words, the act of determining whether to render the image data in portrait mode [act <b>304</b>] may take place before generating that data for rendering [act <b>302</b>]. Further, at least some of the acts in this figure may be implemented as instructions, or groups of instructions, implemented in a machine-readable medium.
0043In accordance with some implementations of the invention a logical drawing surface may be generated in hardware registers without paying attention to the memory layout of the display-accessible physical drawing surface. Thus, the generation of the pixels of a logical drawing surface conforming to a portrait mode or “6×8” surface assumes that the physical drawing surface is also 6×8. Those skilled in the art of rendering with a 3D rendering pipeline will recognize that the generation of logical drawing surface pixels will honor Scissor rectangles, Polygon Stipple, clipping rectangle as if all operations were being done on a 6×8 surface. However, when these pixels are being written to memory or blended with pixels in the physical drawing surface in memory, the memory address for the pixels may be altered to accommodate the actual physical drawing surface organized in a landscape mode or “8×6” surface that is compatible with display rendering hardware. The computation of the new memory address may be undertaken using at most a couple of multipliers and adders. Because the computation of the new memory address happens at the tail end of all graphics operations it may not create any interaction issue with newer graphics features such as pixel or vertex shaders. Such shaders can freely work with (x, y) coordinates as if it was a 6×8 surface—only the memory sub-system of the graphics hardware is aware of the low-level memory steering.
0044In accordance with some implementations of the invention a lock operation can be supported by creating an un-rotated copy of the rotated physical surface and let an application or OS lock that “copy” surface. Alternatively, since the physical drawing surface belongs to the graphics engine and may be mapped in a chipset page table, all read/write operations to this surface may go through the chipset logic. Thus, lock operations may also be supported by defining a special “fence region” that associates a region of memory with special surface properties. Subsequently, when the chipset receives a memory read/write request for pixels the chipset can steer the reads/writes of these two pixels to two totally different addresses by using the fence region properties to compute the addresses to the pixels that the application was trying to access.
0045While the foregoing description of one or more instantiations consistent with the claimed invention provides illustration and description of the invention it is not intended to be exhaustive or to limit the scope of the invention to the particular implementations disclosed. Clearly, modifications and variations are possible in light of the above teachings or may be acquired from practice of various implementations of the invention. For example, while <figref idref="DRAWINGS">FIG. 2</figref> and the accompanying text may show and describe a system <b>200</b> including one steering module <b>204</b>, those skilled in the art will recognize that systems in accordance with the invention may include more than one steering module functioning in parallel. Clearly, many other implementations may be employed to provide rotated rendering and locking support for tablet computers and portrait displays consistent with the claimed invention.
0046No device, element, act, data type, instruction etc. set forth in the description of the present driver should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Moreover, when terms or phrases such as “coupled” or “responsive” or “in communication with” are used herein or in the claims that follow, these terms are meant to be interpreted broadly. For example, the phrase “coupled to” may refer to being communicatively, electrically and/or operatively coupled as appropriate for the context in which the phrase is used. Variations and modifications may be made to the above-described implementation(s) of the claimed invention without departing substantially from the spirit and principles of the invention. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.
Contents4
6 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6
Every citation, both waysCites: the store holds 22 of 23
| Document | Relation | Office | Cited during |
|---|---|---|---|
| WO0126056A1 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| US2005012752A1 | Cites | United States of America | Search report |
| US2005231522A1 | Cites | United States of America | Applicant |
| US2008012869A1 | Cites | United States of America | Applicant |
| GB2123998A | Cites | United Kingdom | Applicant |
| US4931960A | Cites | United States of America | Search report |
| US4995089A | Cites | United States of America | Search report |
| US5640627A | Cites | United States of America | Search report |
| US5883679A | Cites | United States of America | Applicant |
| US5973664A | Cites | United States of America | Search report |
| US5990914A | Cites | United States of America | Search report |
| US6031546A | Cites | United States of America | Applicant |
| US6275581B1 | Cites | United States of America | Search report |
| US6275622B1 | Cites | United States of America | Applicant |
| US6400851B1 | Cites | United States of America | Applicant |
| US6765581B2 | Cites | United States of America | Applicant |
| US6781587B2 | Cites | United States of America | Search report |
| US6958757B2 | Cites | United States of America | Applicant |
| US7050071B2 | Cites | United States of America | Applicant |
| US7075548B1 | Cites | United States of America | Applicant |
| US7142195B2 | Cites | United States of America | Search report |
| US7376286B2 | Cites | United States of America | Applicant |
12 members in 4 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 48693506 | United States of America | A | |
| 48693506 | United States of America | A | |
| 201213572771 | United States of America | A | |
| 11486935 | – | – | – |
| US20060486935 | – | – | – |
| US201213572771 | – | – | – |
Members12
| Document | Office | Kind | |
|---|---|---|---|
| US2008012869A1 | United States of America | A1 | |
| WO2008008690A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2008008690A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP2041717A2 | European Patent Office (EPO) | A2 | |
| CN101490710A | China | A | |
| CN101490710B | China | B | |
| US8259135B2 | United States of America | B2 | |
| US2012306901A1 | United States of America | A1 | |
| CN102842112A | China | A | |
| EP2041717A4 | European Patent Office (EPO) | A4 | |
| US8823747B2This record | United States of America | B2 | |
| CN102842112B | China | B |
5 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.)FEPP | FEPP | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 08823747
- Publication, DOCDB
- 8823747
- Publication, EPODOC
- US8823747
- Application
- 13572771
- Application, DOCDB
- 201213572771
- Application, EPODOC
- US201213572771
Titles
- English
- Rotated rendering and locking support for tablet computers and portrait displays
Classification
- CPC, 1
- G06T1/60
- IPC, 2
- G09G5 00
- G06T1 60
- USPC, 2
- 345649000
- 345619000