Various graphics software developing applications may be utilized by different digital/electronic systems to render graphical scenes. For example, multiple graphics applications may run in the same system. In the multiple software application framework environment, multiple native application user interfaces (UIs) may need to be taken as input and be composed to create designated user experience. However, the multiple graphics application may be written using different rendering application programming interfaces (APIs) such as Direct Frame Buffer (DirectFB), Open Graphics Library for Embedded System (OpenGL ES), Simple DirectMedia Layer (SDL) or the like. Gathering all the UIs from different graphics applications and doing composition may involve memory copying or software application modifying.
The invention described herein is illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. For example, the dimensions of some elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.
The following description describes a usage model to utilize unified memory architecture in a system-on-a-chip (SoC). The implementation of the techniques is not restricted in computing systems; it may be used by any execution environments for similar purposes, such as, for example, any other digital/electronic device or consumer electronic (CE) devices. In the following description, numerous specific details such as logic implementations, opcodes, means to specify operands, resource partitioning/sharing/duplication implementations, types and interrelationships of system components, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding of the present invention. However, the invention may be practiced without such specific details. In other instances, control structures and full software instruction sequences have not been shown in detail in order not to obscure the invention.
References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof. Embodiments of the invention may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device). For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.), and others.
Referring to
Referring to
Although
Referring to
In an embodiment, the GSGL 110 may comprise surface information management module or function to host the surface information on the underlying memory surfaces and the relationship information that are provided by the rendering API agents. Clutter Binding library 114 may be Clutter based binding library that may use the surface information in GSGL 110 to transform or translate the underlying memory surfaces to the form of Clutter recognized surface structure, which is called ClutterActor. In another embodiment, the translated underlying memory surfaces may be recognizable by the UX application. In an embodiment, other binding libraries such as OpenGL ES or DirectFB based binding libraries or translation software may be utilized based on what underlying library the UX application 106 uses. In an embodiment, GSGL 110 may further record surface information on the underlying memory surfaces from the applications of Clutter library 112 or OpenGL ES API library 116. In another embodiment, GSGL 110 may provide an interface to export the surface information on the underlying memory surfaces in the GSGL 110 to the UX application 106. In another embodiment, UX software application 106 may access the surface information recorded in GSGL 110 and the surface information may be used by the Binding Library to translate the underlying memory surfaces into the form of Clutter recognizable surface structure. UX software application 106 may manipulate the translated underlying memory surfaces on an UI of UX software application 106 to create user experience. While
In block 214, in response to one or more flip ( ) calls, e.g., from the customer applications 122, 132 and/or 140, the corresponding rendering API agents 124 or 134 may intercept the flip ( ) calls and notify the flip ( ) calls to GSGL 110. In block 216, the rendering API agents 124 or 134 may prohibit the real flip chain of the corresponding rendering API applications to change the on screen output of the rendering API applications to off screen output. In block 218, GSGL 110 such as the surface information management module may For example, GSGL 110 may update the recorded surface information according to the flip chain of the flip ( ) call. In block 220, UX application 106 may manipulate the translated memory surfaces that are obtained via Binding library based on the surface information in GSGL 110 to create user experience.
Referring to
While the method of
In an embodiment, computing system platform 300 may comprise a processor 302 that may be a SoC. The processor 302 may comprise one or more processor cores 304. The processor cores 304 may comprise any type of processors capable of executing software and/or process data signals. In an embodiment, the processor cores 304 may comprise a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing a combination of instruction sets, or any other processor device, such as a digital signal processor such as a microprocessor, digital signal processor or microcontroller. Processor cores 304 may also be suitable for manufacture in one or more process technologies and by being represented on a machine readable media in sufficient detail, may be suitable to facilitate said manufacture.
The processor 302 may comprise a decoder 306. Decoder 306 may be used for decoding instructions received by, e.g., display processor core 308 and/or graphics processor core 310, into control signals and/or microcode entry points. In an embodiment, decoder 306 is a video decoder. In response to these control signals and/or microcode entry points, display processor core 308 and/or graphics processor core 310 may perform appropriate operations. Processing core 304 may be coupled with system interconnect 316 for communicating with various other system devices, which may include but are not limited to, for example, display processor core 308 and/or graphics processor core 310, memory control 314, decoder 306, audio control 318 or peripherals 320 such as unified serial bus (USB) host port, Peripheral Component Interconnect (PCI) Express port, Serial Peripheral Interface (SPI) interface, expansion bus, or other peripherals. In another embodiment, the memory control 314 may be directly coupled to the decoder 306, the display processor core 308 and/or graphics processor core 310; however, in some embodiments, system interconnect 316 may be used to couple the memory control 314 to the decoder 306 and the processor cores 308 and 310.
In one embodiment, the platform 300 may communicate with various I/O devices via an I/O bus. Such I/O devices may include but are not limited to, for example, universal asynchronous receiver/transmitter (UART), USB 156, and I/O expansion interface or other I/O devices.
One embodiment of the platform 300 provides for mobile, network and/or wireless communications. The platform 300 may further include a memory 312. Memory 312 can be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory device, or other memory device. Memory 312 can store instructions and/or data represented by data signals that can be executed by the processor 302. In one embodiment, memory 312 may comprise a system memory portion and a display memory portion. In another embodiment, the display memory may contain frame buffer to store memory surfaces (or GDL surfaces).
While
In block 406, the rendering API agent may find a plurality underlying memory surfaces that correspond to a set of corresponding rendering surfaces allocated from the rendering API library. The rendering API agent may find other information such as relationship information between underlying memory surfaces and each process. In block 408, the rendering API agent send surface information on the underlying memory surfaces and the relationship information to GSGL 110. In another embodiment, the rendering API agent may further send relationship information between underlying memory surfaces and each process to GSGL 110.
In block 410, GSGL 110 may receive and record the surface information and the relationship information from the rendering API agent. In another embodiment, Binging library may utilize the surface information and the relationship information in GSGL 110 to transform the underlying memory surface to produce desired rendering API surfaces. In an embodiment, binding may be used for the translation, such as Clutter binding or any other binding such as OpenGL ES binding or DirectFB binding or the like. In one embodiment, the translated rendering API surfaces are recognizable to one or more user experience applications 106 or the corresponding underlying applications such as Clutter application 112.
In block 412, in response to a flip operation, the rendering API agent may intercept the flip ( ) calls and may notify the flip operation to GSGL 110. In an embodiment, the rendering API agent may further prohibit a real flip chain and may change the on screen output of the corresponding rendering API application to off screen. In block 414, GSGL 110 may update the surface information on the underlying memory surfaces according to the flip chain.
In block 416, the user experience application 106 may access GSGL 110 to obtain surface information on the underlying memory surfaces. Binging library may utilize the surface information and the relationship information in GSGL 110 to transform the underlying memory surface to desired rendering API surfaces. The user experience application 106 may manipulate the translated rendering surfaces (herein, rendering or memory) to create user experiences.
While the method of
While certain features of the invention have been described with reference to embodiments, the description is not intended to be construed in a limiting sense. Various modifications of the embodiments, as well as other embodiments of the invention, which are apparent to persons skilled in the art to which the invention pertains are deemed to lie within the spirit and scope of the invention.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/CN2010/001548 | 10/5/2010 | WO | 00 | 12/20/2010 |