Smart touch event consuming
By processing touch events at a designated point before rendering a sequential frame, the method addresses the latency issue in touchscreen devices, ensuring timely and effective visual feedback.
Patent Information
- Application Number
- PCT/CN2023/112461
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-08-11
- Publication Date
- 2025-02-20
AI Technical Summary
Existing touchscreen computing devices experience latency in real-time visual feedback due to the disparity in touch input sampling and display refreshing rates, causing touch events to be processed after the rendering of a display, resulting in delayed rendering of these events.
Implementing a method where touch events received between the start of rendering a frame and the start of rendering a sequential frame are processed at a touch event processing point set prior to the start point for rendering the sequential frame, irrespective of a display synchronization signal.
This approach eliminates the latency of at least one rendering cycle by allowing touch events to be processed and rendered in the sequential frame, providing immediate visual feedback to user inputs.
Smart Images

Figure CN2023112461_20022025_PF_FP_ABST
Abstract
Description
Smart Touch Event ConsumingBACKGROUND
[0001] Input and display systems are implemented in touchscreen computing devices to respond to touch inputs to a touchscreen and to display responses to the touch inputs at the touchscreen. Touch input sampling and display refreshing can use different rates where one or more touch inputs can be sampled before executing rendering of a display but not processed in time to be rendered in the display. The disparity in touch input sampling and display refreshing rates can cause latency in real-time visual feedback based on user inputs.SUMMARY
[0002] Various aspects provide methods include methods and apparatuses for implementing such methods for processing touch events of a touch-sensitive display or touchscreen of a computing device by a processing system. Aspects may include receiving a touch event after starting to render a frame and before starting to render a sequential frame, setting a touch event processing point prior to a start point for starting to render the sequential frame in response to receiving the touch event, and processing the touch event at the touch event processing point prior to the start point for starting to render the sequential frame irrespective of a display synchronization signal. Some aspects may further include rendering the touch event in the sequential frame.
[0003] In some aspects, receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs following receiving the display synchronization signal during rendering the frame. In some aspects, receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs prior to receiving the display synchronization signal during rendering the frame.
[0004] Some aspects may further include identifying the start point for starting to render the sequential frame. In some aspects, identifying the start point for starting to render the sequential frame may include identifying an end of a queue buffer configured for storing display data of the frame. In some aspects, identifying the start point for starting to render the sequential frame may include identifying a sleep period prior to starting to render the sequential frame.
[0005] Further aspects include a processing system including a memory and one or more processors configured to perform operations of any of the methods summarized above. Further aspects include a non-transitory processor-readable storage medium having stored thereon processor-executable software instructions configured to cause one or more processors of a processing system to perform operations of any of the methods summarized above. Further aspects include a processing system having means for accomplishing functions of any of the methods summarized above.BRIEF DESCRIPTION OF THE DRAWINGS
[0006] The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate example embodiments of various embodiments, and together with the general description given above and the detailed description given below, serve to explain the features of the claims.
[0007] FIG. 1 is a component block diagram illustrating an example processing system suitable for implementing various embodiments.
[0008] FIG. 2 is a component block diagram illustrating an example of a computing device suitable for implementing various embodiments.
[0009] FIG. 3 is a component block and flow diagram illustrating an example of existing touch input sampling and display refreshing.
[0010] FIG. 4 is a component block and flow diagram illustrating an example of touch input sampling and display refreshing according to various embodiments.
[0011] FIG. 5 is a flow diagram illustrating an example of existing touch input sampling and display refreshing.
[0012] FIG. 6 is a flow diagram illustrating an example of touch input sampling and display refreshing according to various embodiments.
[0013] FIG. 7 is a component block and flow diagram illustrating an example of setting a touch event processing point for display refreshing according to various embodiments.
[0014] FIG. 8 is a component block and flow diagram illustrating an example of setting a touch event processing point for display refreshing according to various embodiments.
[0015] FIG. 9 is a process flow diagram illustrating an example method for implementing touch input sampling and display refreshing according to an embodiment.
[0016] FIG. 10 is a component block diagram illustrating an example mobile computing device suitable for implementing various embodiments.
[0017] FIGS. 11A-11C are component block diagrams illustrating an example embedded vehicle computing system suitable for implementing various embodiments.DETAILED DESCRIPTION
[0018] Various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the claims.
[0019] Various embodiments include methods, and processing systems and / or computing devices implementing such methods, for implementing processing (also referred to as consuming) touch events of a touch-sensitive display or touchscreen of a computing device by a computing system. Embodiments may include processing touch events received between a start of rendering a frame and a start of rendering a sequential frame irrespective of a display synchronization signal. Processing one or more touch events may be based on a touch event processing point set prior to a start point for starting to render the sequential frame.
[0020] The term “computing device” is used herein to refer to stationary computing devices including personal computers, desktop computers, all-in-one computers, workstations, super computers, mainframe computers, embedded computers (such as in vehicles and other larger systems) , computing systems within or configured for use in vehicles, servers, multimedia computers, and game consoles. The terms “computing device” and “mobile computing device” are used interchangeably herein to refer to any one or all of cellular telephones, smartphones, personal or mobile multi-media players, personal data assistants (PDA’s) , laptop computers, tablet computers, convertible laptops / tablets (2-in-1 computers) , smartbooks, ultrabooks, netbooks, palm-top computers, wireless electronic mail receivers, multimedia Internet enabled cellular telephones, mobile gaming consoles, wireless gaming controllers, and similar personal electronic devices that include a memory, and a programmable processor. The term “touchscreen” is used herein to refer to any type of display for computing devices that is configured to detect touches (thus touch-sensitive) on the display surface and translate into touches and swipes into information that a processing system can interpret as inputs, referred to “touch events. ” The term “touchscreen computing device” is used to refer to any computing device having a touch sensitive, combined or composite input and visual image / video display.
[0021] Various embodiments are described in terms of code, e.g., processor-executable instructions, for ease and clarity of explanation, but may be similarly applicable to any data, e.g., code, program data, or other information stored in memory. The terms “code, ” “data, ” and “information” are used interchangeably herein and are not intended to limit the scope of the claims and descriptions to the types of code, data, or information used as examples in describing various embodiments.
[0022] Input and display systems are implemented in touchscreen computing devices to respond to touch inputs to a touchscreen and to display responses to the touch inputs at the touchscreen. Touch input sampling and display refreshing can use different rates where one or more touch inputs can be sampled before executing rendering of a display but not processed in time to be rendered in the display. The disparity in touch input sampling and display refreshing rates can cause latency in real-time visual feedback based on user inputs.
[0023] For example, input and display systems are two individual modules in ANDRIOD operating systems. After touch interrupt requests (IRQs) are reported, touch events cannot be processed immediately, they will be processed in batch when a vertical synchronization (VSync) signal is received. When, for touch events received between rendering of a display and rendering of a sequential display, the VSync signal is received after a start of rendering the sequential display, the touch events will not be rendered until at least a next rendering of a next sequential display. As such, the latency of rendering the touch events is at least one extra rending cycle from when the touch events were received.
[0024] Embodiments address and overcome the foregoing problem of latency in real-time visual feedback based on user inputs by enabling touch events received between rendering of a display and rendering of a sequential display to be processed prior to the rendering of the sequential display, rather than after the rendering of the sequential display and prior to at least a next rendering of a next sequential display. In other words, embodiments eliminate latency of at least one rendering cycle from when the touch events were received.
[0025] A display, including any sequential display, may be visual image and / or video rendered on a display device of a touchscreen computing device. A unit of the display may include a frame, including any sequential frame, rendered on the display device of the touchscreen computing device. A sequential display, including any sequential frame, may be a display / frame that is immediately successive to a display / frame. In other words, no other (sequential) display / frame may be rendered between the display / frame and the sequential display / frame. The display device may be a touch sensitive combined or composite input and visual image / video display device.
[0026] Various embodiments may include receiving one or more touch events between a start point for rendering a frame on a display device of a touchscreen computing device and a start point for rendering a sequential frame on the display device of the touchscreen computing device. The one or more touch events may include data of a user’s touch on the display device of the touchscreen computing device, such as timing of the touch, the coordinates of the touch on the display, and in some devices a pressure applied to the display, a pressure-time profile, and the like. A single touch event might be a tap. Examples of multiple touch events may include a double (or triple) tap, a touch and swipe input, a touch and drawing or trace input. As used herein, references to “atouch event” are intended to encompass both single touch events and various types of multiple touch events, and thus one or more touch events.
[0027] The one or more touch events received after the start point for rendering the frame may not be processed in time for rendering the one or more touch events in the frame. Being received prior to the start point for rendering the sequential frame, the one or more touch events may be processed in time for rendering the one or more touch events in the sequential frame.
[0028] The one or more touch events may be processed prior to rendering the sequential frame and may be rendered in the sequential frame. Processing the one or more touch events may commence at a touch event processing point prior to the start point for rendering the sequential frame irrespective of a display synchronization signal, such as a VSync, FreeSync, G-Sync, etc. For example, the touch event processing point may be a designated measurement, such as time, events, etc., prior to the start point for rendering the sequential frame. In some embodiments in which a display synchronization signal is received, the display synchronization signal may be ignored. In some embodiments, no display synchronization signal may be implemented.
[0029] In some embodiments, the start point for rendering the sequential frame may be identified from one or more factors, such as end point of a queue buffer preceding the sequential frame, a sleep timer in an application logic thread, etc. The touch event processing point may be set to prior to the start point for rendering the sequential frame. For example, the touch event processing point may be set to prior to the end point of the queue buffer preceding the sequential frame. As another example, the touch event processing point may be set to prior to the end of the sleep timer in the application logic thread. The one or more touch events may be processed at a touch event processing point prior to the start point for rendering the sequential frame and rendered in the sequential frame.
[0030] FIG. 1 is a component block diagram illustrating an example computing device 100 suitable for implementing any of the various embodiments. Various embodiments may be implemented on a number of single processor and multiprocessor computer systems, including a processing system.
[0031] With reference to FIG. 1, the illustrated example computing device 100 (which may be a system-in-a-package in some embodiments) may include any combination of processing system 102, 104 coupled to a clock 106, a voltage regulator 108, at least one subscriber identity module (SIM) 168 and / or a SIM interface, a DRAM 170, a Universal FLASH Storage (UFS) device 172, a wireless transceiver 166 configured to send and receive wireless communications via an antenna (not shown) to / from wireless computing devices, such as a base station, wireless device, and / or computing device. In some embodiments, the first processing system 102 may operate as central processing unit (CPU) of the computing device 100 that carries out the instructions of software application programs by performing the arithmetic, logical, control and input / output (I / O) operations specified by the instructions. In some embodiments, the second processing system 104 may operate as a specialized processing unit. For example, the second processing system 104 may operate as a specialized 5G processing unit responsible for managing high volume, high speed (e.g., 5 Gbps, etc. ) , and / or very high frequency short wavelength (e.g., 28 GHz mmWave spectrum, etc. ) communications.
[0032] The term “system-on-chip” (SoC) is used herein to refer to a set of interconnected electronic circuits typically, but not exclusively, including a processing device, a memory, and a communication interface. Processing system 102, 104 may include a variety of different types of processors some of which may include multiple processor cores. Non-limiting examples of processors that may be included in a computing device 100 and implemented in or coupled to processing system 102, 104 include a general purpose processor, a central processing unit (CPU) , a digital signal processor (DSP) , a graphics processing unit (GPU) , an accelerated processing unit (APU) , a secure processing unit (SPU) , a neural network processing unit (NPU) , a subsystem processor of specific components of the computing device, such as an image processor for a camera subsystem or a display processor for a display device, an auxiliary processor, a single-core processor, a multicore processor, a controller, and a microcontroller. Processing system 102, 104 may further embody other hardware and hardware combinations, such as a field programmable gate array (FPGA) , an application-specific integrated circuit (ASIC) , other programmable logic device, discrete gate logic, transistor logic, performance monitoring hardware, watchdog hardware, and time references. Integrated circuits may be configured such that the components of the integrated circuit reside on a single piece of semiconductor material in what may be referred to as a system-on-chip (SoC) .
[0033] Processing system 102, 104 may be implemented in one or more SoCs and / or may include circuitry in multiple chips coupled to one or more SoCs. The computing device 100 may include more than one processing system 102, 104, thereby increasing the number of processors, any one or more of which may include multiple processor cores. The computing device 100 may also include other processors (not shown) that are not associated with the processing system 12. The processors may each be configured for specific purposes that may be the same as or different from other processors of the computing device 100. One or more of the processors and processor cores of the same or different configurations may be grouped together.
[0034] The first processing system 102 may include one or more of any of a digital signal processor (DSP) 110, a modem processor 112, a graphics processor 114, an application processor (AP) 116, one or more coprocessors 118 (e.g., vector co-processor) connected to one or more of the processors, memory 120, custom circuity 122, system components and resources 124, a host controller 162, an interconnection / bus module 126, one or more sensors 130 (e.g., accelerometer, temperature sensor, pressure sensor, optical sensor, infrared sensor, analog sound sensor, etc. ) , a thermal management unit 132, and a thermal power envelope (TPE) component 134. The second processing system 104 may include a low power processor 152, a power management unit 154, an interconnection / bus module 164, a BT controller 156, memory 158, and various additional processors 160, such as an applications processor, packet processor, etc.
[0035] Each processor 110, 112, 114, 116, 118, 152, 160 may include one or more cores, and each processor / core may perform operations independent of the other processors / cores. For example, the first processing system 102 may include a processor that executes a first type of operating system (e.g., based OS, etc. ) and a processor that executes a second type of operating system (e.g., MICROSOFT ) . In addition, any or all of the processors 110, 112, 114, 116, 118, 152, 160 may be included as part of a processor cluster architecture (e.g., a synchronous processor cluster architecture, an asynchronous or heterogeneous processor cluster architecture, etc. ) . The term “processing system” is used herein to encompass all of the possible processor types and architectures.
[0036] The first and second processing system 102, 104 may include various system components, resources, and custom circuitry for managing sensor data, analog-to-digital conversions, wireless data transmissions, and for performing other specialized operations, such as decoding data packets and processing encoded audio and video signals for rendering in a web browser or audio / video application. For example, the system components and resources 124 of the first processing system 102 may include power amplifiers, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data controllers, memory controllers, system controllers, access ports, timers, and other similar components used to support the processors and software clients running on a computing device. The system components and resources 124 and / or custom circuitry 122 may also include circuitry to interface with peripheral devices, such as cameras, electronic display devices, wireless communication devices, external memory chips, etc.
[0037] The first and second processing system 102, 104 may communicate via interconnection / bus module 150. In some embodiments, the interconnection / bus module may be a connection established by transceiving (i.e., receiving and transmitting) components within both the processing system 102 and processing system 104. For example, the low power processor 152 may include a universal asynchronous receiver-transmitter (UART) and the application processor 116 may include a multiple signal messages (MSM) UART driver that is communicatively connected to the UART of the low power processor 152.
[0038] The various processors 110, 112, 114, 116, 118, may be interconnected to one or more memory elements 120, system components and resources 124, and custom circuitry 122, and a thermal management unit 132 via an interconnection / bus module 126. Similarly, the low power processor 152 may be interconnected to the power management unit 154, the BT controller 156, memory 158, and various additional processors 160 via the interconnection / bus module 164. The interconnection / bus module 126, 150, 164 may include an array of reconfigurable logic gates and / or implement a bus architecture (e.g., CoreConnect, AMBA, etc. ) . The interconnection / bus module 126, 150, 164 may include any number of interconnecting buses and bridges depending on the specific application of the processing systems 102, 104 and the overall design constraints. Communications may be provided by advanced interconnects, such as high-performance networks-on chip (NoCs) .
[0039] The first and / or second processing systems 102, 104 may further include an input / output module (not illustrated) for communicating with resources external to the processing system, such as a clock 106, a voltage regulator 108, one or more wireless transceivers 166, and at least one SIM 168 and / or SIM interface (i.e., an interface for receiving one or more SIM cards) . Resources external to the processing system (e.g., clock 106, voltage regulator 108) may be shared by two or more of the internal processing system processors / cores. The at least one SIM 168 (or one or more SIM cards coupled to one or more SIM interfaces) may store information supporting multiple subscriptions, including a first 5GNR subscription and a second 5GNR subscription, etc.
[0040] In addition to the example computing device 100 discussed above, various embodiments may be implemented in a wide variety of computing systems, which may include a single processor, multiple processors, multicore processors, or any combination thereof.
[0041] In some embodiments, the various processors of the processing system 102 and processing system 104 may be located within a same processing system. For example, the application processor 116 and low power processor 152 may be located within a same processing system, such as in a single processing system of a wearable device.
[0042] FIG. 2 is a component block diagram illustrating an example of a touchscreen computing device in accordance with various embodiments. With reference to FIGS. 1-2, the touchscreen computing device 202 (e.g., computing device 100 in FIG. 1) may include processing system 206 (e.g., processing system 102, 104 in FIG. 1) which may include one or more processors (e.g., processors 110, 112, 114, 116, 118, 152, 160 in FIG. 1) coupled to electronic storage 204 (e.g., memory 120, 158 in FIG. 1) and a wireless transceiver 266 (e.g., wireless transceiver 166 in FIG. 1) .
[0043] In some embodiments, the touchscreen computing device 202 may be part of a communication system 200 that may include at least the touchscreen computing device 202 and a wireless computing device 222 (e.g., computing device 100 in FIG. 1) . The touchscreen computing device 202 and the wireless computing device 222 may communicate over a wireless communication network 220. The wireless transceiver 266 may be configured to receive messages to be transmitted from the processing system 206, and to transmit such messages via an antenna (not shown) to the wireless computing device 222 via the wireless communication network 220. Similarly, the wireless transceiver 266 may be configured to receive messages transmitted from the wireless computing device 222 via the wireless communication network 220, and pass the messages (e.g., via a modem (e.g., modem 152 in FIG. 1) that demodulates the messages) to the processing system 206.
[0044] The processing system 206 may be configured by machine-readable instructions 208. Machine-readable instructions 208 may include one or more instruction modules 210, 212, 214, 216, 218. The instruction modules 210-218 may include computer program modules. The instruction modules 210-218 may include one or more of a touch event module 210, a frame render start point module 212, a touch event processing point module 214, a touch event processing module 216, a frame render module 218, and / or other instruction modules.
[0045] The touch event module 210 may be configured to receive touch events. For example, the touch event module 210 may receive data of a user’s one or more touch inputs to a display device (not shown) of the touchscreen computing device 202. The data of the one or more touch inputs may include one or more of one or more locations, sizes, directions of movement, speeds of movement, times, durations, numbers, pressures, patterns, etc. of touches on the display device.
[0046] The frame render start point module 212 may be configured to identify start points for rendering frames, including sequential frames. Prior to rendering of a sequential frame to a frame after which rendering has begun touch events are received, the frame render start point module 212 may identify a start point for rendering the sequential frame. The start point for rendering the sequential frame may be identified from one or more factors, such as end point of a queue buffer preceding the sequential frame, a sleep timer in an application logic thread, etc.
[0047] The touch event processing point module 214 may be configured to set a touch event processing point, which may be a point at which processing of one or more touch events may commence. The touch event processing point may be set to prior to the start point for rendering the sequential frame. For example, the touch event processing point may be set to prior to the end point of the queue buffer preceding the sequential frame. As another example, the touch event processing point may be set to prior to the end of the sleep timer in the application logic thread. In some embodiments, the touch event processing point may be set to a constant and / or variable measurement prior to the start point for rendering the sequential frame. For example, the measurement may be time, such as measured in milliseconds (ms) , which may include a fraction of 1ms up to 100ms, such as 1ms. As another example, the measurement may be an event, such as a number of process cycles, clock cycles, etc. Setting the touch event processing point may include generating and transmitting a signal to the processing system 206, setting a flag at a register (not shown) to be read by the processing system 206, etc.
[0048] The touch event processing module 216 may be configured to identify the touch event processing point and process the one or more touch events. Identifying the touch event processing point may include interpreting an indication, such as a signal, a flag at a register, etc. configured to indicate the touch event processing point to the processing system 206.
[0049] Processing the one or more touch events may commence at the touch event processing point prior to the start point for rendering the sequential frame. Processing the one or more touch events may include translating the data of the user’s one or more touch inputs to the display device of the touchscreen computing device 202 to data for rendering the sequential frame on the display device. For example, the touch event may be translated to a movement of an item in sequential frame relative to a rendered frame. As another example, the touch event may be translated to manipulation, such as zooming, panning, rotating, skewing, changing perspective, etc., of the sequential frame relative to the rendered frame. As another example, the touch event may be translated to implementation of an application specific action, such as a game based action, including a defensive action, an attack action, a change of item state action, in the sequential frame.
[0050] The frame render module 218 may be configured to render the sequential frame using the data for rendering the sequential frame on the display device generated by processing the one or more touch events.
[0051] The electronic storage 204 may include non-transitory storage media that electronically stores information. The electronic storage media of electronic storage 204 may include one or both of system storage that is provided integrally (i.e., substantially non-removable) with the touchscreen computing device 202 and / or removable storage that is removably connectable to the touchscreen computing device 202 via, for example, a port (e.g., a universal serial bus (USB) port, a firewire port, etc. ) or a drive (e.g., a disk drive, etc. ) . Electronic storage 204 may include one or more of optically readable storage media (e.g., optical disks, etc. ) , magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc. ) , electrical charge-based storage media (e.g., EEPROM, RAM, etc. ) , solid-state storage media (e.g., flash drive, etc. ) , and / or other electronically readable storage media. Electronic storage 204 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and / or other virtual storage resources) . Electronic storage 204 may store software algorithms, information determined by the processing system 206, information received from the wireless computing device 222, the one or more touch events, the data for rendering the sequential frame, or other information that enables the touchscreen computing device 202 to function as described herein.
[0052] The processing system 206 may be configured to provide information processing capabilities in the touchscreen computing device 202. As such, the processing system 206 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and / or other mechanisms for electronically processing information.
[0053] Although the processing system 206 are illustrated as single entities, this is for illustrative purposes only. In some embodiments, the processing system 206 may include a plurality of processing units and / or processor cores. The processing units may be physically located within the same device, or the processing system 206 may represent processing functionality of a plurality of devices operating in coordination.
[0054] The processing system 206 may be configured to execute modules 210-218 and / or other modules by software; hardware; firmware; some combination of software, hardware, and / or firmware; and / or other mechanisms for configuring processing capabilities on the processing system 206. As used herein, the term “module” may refer to any component or set of components that perform the functionality attributed to the module. This may include one or more physical processors during execution of processor readable instructions, the processor readable instructions, circuitry, hardware, storage media, or any other components.
[0055] The description of the functionality provided by the different modules 210-218 described herein is for illustrative purposes, and is not intended to be limiting, as any of modules 210-218 may provide more or less functionality than is described. For example, one or more of the modules 210-218 may be eliminated, and some or all of its functionality may be provided by other modules 210-218. As another example, the processing system 206 may be configured to execute one or more additional modules that may perform some or all of the functionality attributed to one of the modules 210-218.
[0056] FIG. 3 is a component block and flow diagram illustrating an example of existing touch input sampling and display refreshing. With reference to FIGS. 1-3 an operating system 300 (e.g., based operating systems, etc. ) may be implemented at processing system (e.g., processing systems 102, 104, 206, in FIGS. 1 and 2) of a touchscreen computing device (e.g., computing device 100 in FIG. 1, touchscreen computing device 202 in FIG. 2) . The operating system 300 may include an input system 302 and a display system 304.
[0057] The input system 302 may be configured to receive a touch interrupt request (IRQ) at process 306 from a display device (not shown) of the touchscreen computing device. For example, the input system 302 may be configured to receive one or more touch IRQs from a display device controller (not shown) generated in response to a user’s one or more touch inputs to the display device.
[0058] The touch IRQ may trigger the input system 302 to read a touch event and dispatch the touch event to an application at process 308. For example, the input system 302 may read a touch event associated with the received touch IRQ from a memory (e.g., memory 120, 158 in FIG. 1, electronic storage 204 in FIG. 2) . The input system 302 may read data of the user’s one or more touch inputs to the display device included in the touch event. The input system 302 may transmit the touch event to an application implemented via the operating system 300 at the processing system.
[0059] The display system 304 may receive the touch event at process 310 from the input system 302. The display system 304 may receive the data of the user’s one or more touch inputs to the display device included in the touch event. In the example illustrated in FIG. 3, the display system 304 may receive the touch event at process 310 while the display system 304 processes a queue buffer for the application at process 318a. The queue buffer may include data for displaying a rendered frame on the display device. Following processing of the queue buffer at process 318a, the display system may render a frame for the application at process 316a by the display system 304.
[0060] The display system 304 may receive a display synchronization signal at process 312. In some examples, the display synchronization signal may be a periodic signal configured to control processing of one or more touch events received prior to receiving the display synchronization signal at process 312, such as the touch event received at process 310. In response to receiving the display synchronization signal at process 312, the display system 304 may process the touch event at process 314. Processing the touch event may include translating the data of the user’s one or more touch inputs to the display device of the touchscreen computing device to data for rendering a frame. Rendering the frame may include generating data for displaying a rendered frame on the display device, which may be stored at the queue buffer.
[0061] In the example, illustrated in FIG. 3 the display system 304 may receive the display synchronization signal at process 312 and process the touch event at process 314 while the display system 304 renders a frame at process 316a. Receiving the display synchronization signal at process 312 may prompt the display system 304 to process the touch event at process 314. Despite having received the touch event at process 310 prior to rendering the frame at process 316a, the display system 304 cannot process the touch event prior to rendering the frame at process 316a to be included in rendering the frame at process 316a. The display system 304 may store the data for rendering the frame on the display device, from processing the touch event at process 314, at a cache (e.g., memory 120, 158 in FIG. 1, electronic storage 204 in FIG. 2) for later processing.
[0062] After finishing rendering the frame at process 316a, the display system 304 may queue buffer the data for displaying the rendered frame on the display device at process 318b. As shown in the example illustrated in FIG. 3, after processing the queue buffer at process 318b, the display system 304 renders a frame at process 316b using the data for rendering the frame on the display device from the touch event data processed in process 314..
[0063] In the example illustrated in FIG. 3, although the touch event was received at process 310 prior to the display system 304 rendering the frame at process 316a, the display system 304 does not process the touch event received at process 310 until receiving the display synchronization signal at process 312 while rendering the frame at process 316a. In this circumstance, waiting to receive the display synchronization signal at process 312 prevents the display system 304 from processing the touch event that was received at process 310 prior to rendering the frame at process 316a, and the touch event cannot be included in rendering the frame at process 316a. Rather, the display system 304 is forced to wait to include the touch event that was received at process 310 in rendering the frame at process 316b. The forced waiting causes a latency of at least one rendering process 316a between when the display system 304 receives the touch event at process 310 and includes the touch event in rendering the frame at process 316b.
[0064] FIG. 4 is a component block and flow diagram illustrating an example of touch input sampling and display refreshing according to various embodiments. With reference to FIGS. 1-4 an operating system 400 (e.g., ANDROID, WINDOWS, IOS, MACOS, LINUX based operating systems, etc. ) may be implemented at processing system (e.g., processing systems 102, 104, 206, in FIGS. 1 and 2) of a touchscreen computing device (e.g., computing device 100 in FIG. 1, touchscreen computing device 202 in FIG. 2) implementing one or more modules (e.g., modules 210-218 in FIG. 2) . The operating system 400 may include the input system 302, as described herein with reference to FIG. 3. and a display system 404.
[0065] The input system 302 may be configured to receive one or more touch IRQs at processes 406a, 406b, 406c from a display device (not shown) of the touchscreen computing device. For example, the input system 302 may be configured to receive the one or more touch IRQs from a display device controller (not shown) generated in response to a user’s one or more touch inputs to the display device.
[0066] The touch IRQs may trigger the input system 302 to read touch events and dispatch the touch events to an application at processes 408a, 408b, 408c. For example, the input system 302 may read the touch events associated with the received touch IRQs from a memory (e.g., memory 120, 158 in FIG. 1, electronic storage 204 in FIG. 2) . The input system 302 may read data of the user’s one or more touch inputs to the display device included in the touch events. The input system 302 may transmit the touch event to an application implemented via the operating system 400 at the processing system.
[0067] The display system 404 may receive the touch events at processes 410a, 410b, 410c from the input system 302. The display system 304 may receive the user’s one or more touch inputs to the display device included in the touch events. In the example illustrated in FIG. 4, the display system 404 may receive the touch events at processes 410a, 410b, 410c between when the display system 304 starts rendering a frame for the application at process 416a and starts rendering a sequential frame for the application at process 416b.
[0068] In some embodiments, the display system 404 may receive the touch events at processes 410a, 410b, 410c before and / or after the display system 304 may receive a display synchronization signal at process 412. In some embodiments, there may be no display synchronization signal. Regardless of when and / or whether the display synchronization signal is received at process 412, all the touch events received at processes 410a, 410b, 410c, between starting to render the frame at process 416a and starting to render the sequential frame at process 416b, may be processed at process 414 by the display system 404. Processing the touch events may include translating the data of the user’s one or more touch inputs to the display device of the touchscreen computing device to data for rendering a frame on the display device. Processing the touch events may include storing the data for rendering the frame on the display device at a cache (e.g., memory 120, 158 in FIG. 1, electronic storage 204 in FIG. 2) . Processing the touch events may be implemented at a touch event processing point prior to starting to render the sequential frame at process 416b based on a starting point for rendering the sequential frame at process 416b.
[0069] The display system 404 may process a queue buffer at process 418a and subsequently render a frame at process 416a. In the example illustrated in FIG. 4, the touch events received at processes 410a, 410b, 410c are received after processing the queue buffer at process 418a and starting to render the frame at process 416a, and the received touch events may not be included at the queue buffer processes at process 418a and the frame rendered at process 416a.
[0070] The display system 404 may process a queue buffer at process 418b for the frame rendered at process 416a and subsequently render a sequential frame at process 416b. In the example illustrated in FIG. 4, the touch events are received at processes 410a, 410b, 410c and processed at process 414 prior to starting to render the frame at process 416a, and all the received and processed touch events are included in the sequential frame rendered at process 416b.
[0071] In the example illustrated in FIG. 4, as long as the touch events are received at processes 410a, 410b, 410c between starting to render the frame at process 416a and starting to render the sequential frame at process 416b, the received touch events may be processed at the process 414 and rendered in the sequential frame at process 416b. The touch events received at processes 410a, 410b, 410c may be processed at the process 414 and rendered in the sequential frame at process 416b regardless of when the touch events are received in relation to a display synchronization signal and / or regardless of the presence of a display synchronization signal. Without being controlled by a display synchronization signal, none of the received touch events wait for the display synchronization signal to be processed that would cause a latency in processing and rendering the received touch events. The latency in rendering the received touch event caused by processing of the received touch events being controlled by the display synchronization signal is avoided by processing all received touch events at process 414 at a touch event processing point prior to the start point for rendering the sequential frame at process 416b.
[0072] The number of touch events received and processed between starting rendering consecutive frames (aframe and a sequential frame) in the example illustrated in FIG. 4 is for illustrative purposes. One of skill in the art would realize that fewer and / or more touch events may be received and processed between starting rendering consecutive frames.
[0073] FIG. 5 is a flow diagram illustrating an example of existing touch input sampling and display refreshing. With reference to FIGS. 1-5, a process flow timing graph 500 illustrates timing receiving one or more touch events 504a, 504b, 504c, processing the one or more touch events 506a, 506b, and rendering the one or more touch events in one or more frames 510a, 510b, 510c relative to a display synchronization signal 502. The process flow timing graph 500 may illustrate processes implemented at processing system (e.g., processing systems 102, 104, 206, in FIGS. 1 and 2) of a touchscreen computing device (e.g., computing device 100 in FIG. 1, touchscreen computing device 202 in FIG. 2) .
[0074] In the example illustrated in FIG. 5, a first touch event is received 504a during rendering a frame N-1 510a and prior to a first edge 508a of the display synchronization signal 502. The first edge 508a of the display synchronization signal 502 occurs during rendering the frame N-1 510a. The first touch event is processed 506a in response to the first edge 508a of the display synchronization signal 502. The first touch event is rendered in a frame N 510b following the first edge 508a of the display synchronization signal 502.
[0075] A second touch event is received 504b during rendering the frame N-1 510a, following to the first edge 508a of the display synchronization signal 502, and prior to rendering the frame N 510b and a second edge 508b of the display synchronization signal 502. The second edge 508b of the display synchronization signal 502 occurs during rendering the frame N 510b. The second touch event is processed 506b in response to the second edge 508b of the display synchronization signal 502. The second touch event is rendered in a frame N+1 510c following the second edge 508b of the display synchronization signal 502.
[0076] A third touch event is received 504c following rendering the frame N-1 510a, following to the first edge 508a of the display synchronization signal 502, and prior to rendering the frame N 510b and the second edge 508b of the display synchronization signal 502. The second edge 508b of the display synchronization signal 502 occurs during rendering the frame N 510b. The third touch event is processed 506b in response to the second edge 508b of the display synchronization signal 502. The third touch event is rendered in the frame N+1 510c following the second edge 508b of the display synchronization signal 502.
[0077] In the example illustrated in FIG. 5, the edges 508a, 508b of the display synchronization signal 502 control timing of processing the one or more touch events 506a, 506b for the one or more touch events to be included in rendering the one or more frames 510a, 510b, 510c. The one or more touch events cannot be rendered until the one or more touch events are processed. For example, the received touch events 504b, 504c cannot be processed until the edge 508b of the display synchronization signal 502. Despite being received prior to rendering the frame N 510b, because the edge 508b of the display synchronization signal 502 occurs during rendering the frame N 510b, the received touch events 504b, 504c cannot be included in rendering the frame N 510b because the received touch events 504b, 504c are not processed 506b prior to received touch events 504b, 504c. The received touch events 504b, 504c are processed 506b based on the edge 508b of the display synchronization signal 502 during rendering the frame N 510b and must wait to be included in rendering the frame N+1 510c. As such, the received touch events 504b, 504c are delayed at least the cycle for rendering the frame N 510b.
[0078] FIG. 6 is a flow diagram illustrating an example of touch input sampling and display refreshing according to various embodiments. With reference to FIGS. 1-6, a process flow timing graph 600 illustrates timing receiving one or more touch events 504a, 504b, 504c, processing the one or more touch events 602, and rendering the one or more touch events in one or more frames 510a, 510b, 510c relative to a display synchronization signal 502. The process flow timing graph 600 may illustrate processes implemented at processing system (e.g., processing systems 102, 104, 206, in FIGS. 1 and 2) of a touchscreen computing device (e.g., computing device 100 in FIG. 1, touchscreen computing device 202 in FIG. 2) . The process flow timing graph 600 may illustrate processes implemented at the processing system implementing one or more modules (e.g., modules 210-218 210-218 in FIG. 2) and / or an operating system (e.g., operating system 400 in FIG. 4) , which may include implementing a display system (e.g., display system 404 in FIG. 4) .
[0079] In the example illustrated in FIG. 6, a first touch event is received 504a during rendering a frame N-1 (frame) 510a and prior to rendering a frame N (sequential frame) 510b. The first touch event is processed 602 starting at a touch event processing point prior to prior to rendering the frame N 510b. The first touch event is rendered while rendering the frame N 510b following being processed 602.
[0080] A second touch event is received 504b during rendering the frame N-1 510a and prior to rendering the frame N 510b. The second touch event is processed 602 starting at the touch event processing point prior to prior to rendering the frame N 510b. The second touch event is rendered while rendering the frame N 510b following being processed 602.
[0081] A third touch event is received 504c after rendering the frame N-1 510a and prior to rendering the frame N 510b. The third touch event is processed 602 starting at the touch event processing point prior to prior to rendering the frame N 510b. The third touch event is rendered while rendering the frame N 510b following being processed 602.
[0082] In the example illustrated in FIG. 6, each of the touch events are received 504a, 504b, 504c between starting to render frame N-1 510a and starting to render the frame N 510b. All the received touch events 504a, 504b, 504c are processed 602 at the touch event processing point prior to rendering the frame N 510b. All the received touch events 504a, 504b, 504c are processed 602 irrespective of the edges 508a, 508b of the display synchronization signal 502. In other words, regardless of when the touch events are received 504a, 504b, 504c relative to the edges 508a, 508b of the display synchronization signal 502 the received touch events 504a, 504b, 504c are processed 602 at the touch event processing point prior to rendering the frame N 510b. Processing of the touch events 602 is not controlled by the edges 508a, 508b of the display synchronization signal 502 and there is no need to wait for an edge 508a, 508b of the display synchronization signal 502 to process the touch events 602. As such, all the received touch events 504a, 504b, 504c are processed 602 prior to rendering the frame N 510b and included in rendering the frame N 510b. None of the received touch events 504a, 504b, 504c must wait until after rendering the frame N 510b is started to be processed and wait to be included in rendering the frame N+1 510c.
[0083] The number of touch events received and processed between starting rendering consecutive frames (aframe and a sequential frame) in the example illustrated in FIG. 6 is for illustrative purposes. One of skill in the art would realize that fewer and / or more touch events may be received and processed between starting rendering consecutive frames.
[0084] FIGS. 7 and 8 are component block and flow diagrams illustrating examples of setting a touch event processing point for display refreshing according to various embodiments. With reference to FIGS. 1-8, processing system (e.g., processing systems 102, 104, 206, in FIGS. 1 and 2) of a touchscreen computing device (e.g., computing device 100 in FIG. 1, touchscreen computing device 202 in FIG. 2) implementing one or more modules (e.g., modules 210-218 210-218 in FIG. 2) and / or an operating system (e.g., operating system 400 in FIG. 4) , which may include implementing a display system (e.g., display system 404 in FIG. 4) , may implement the following descriptions.
[0085] A touch event processing point 706, 806 may be configured to prompt processing of one or more touch events received between a start point for rendering a frame and start point for rendering a sequential frame 704, 804. The start point for rendering a sequential frame 704, 804 may be a point at which rendering the sequential frame 702, 802 may commence. The touch event processing point 706, 806 may be set to prior to the start point for rendering the sequential frame 704, 804. In some embodiments, the touch event processing point 706, 806 may be set to a constant and / or variable measurement prior to the start point for rendering the sequential frame 704, 804. For example, the measurement may be time, such as measured in milliseconds (ms) , which may include a fraction of 1ms up to 100ms, such as 1ms. As another example, the measurement may be an event, such as a number of process cycles, clock cycles, etc. Setting the touch event processing point 706, 806 may include generating and transmitting a signal to the processing system, setting a flag at a register (not shown) to be read by the processing system, etc.
[0086] In some embodiments, the start point for rendering the sequential frame 704, 806 may be identified before setting the touch event processing point 706, 806. The touch event processing point 706, 806 may then be set based on the touch event processing point 706, 806. For example, as illustrated in FIG. 7, the touch event processing point 706 may be set to prior to the end point of a queue buffer 700 preceding the rendering the sequential frame 704. As another example, as illustrated in FIG. 8, the touch event processing point 806 may be set to prior to the end of the sleep timer 800 in the application logic thread.
[0087] With reference to FIG. 7, the queue buffer 700 may include data for displaying a rendered frame on a display device of the touchscreen computing device. The queue buffer 700 may include a finite amount of data for displaying the rendered frame and when all of the data at the queue buffer is read, rendering the sequential frame 704 may begin. The end of the queue buffer 700, or the end of processes for reading the queue buffer 700, may approximately represent the start point for rendering the sequential frame 704. The end of the queue buffer 700 may be identified, such as based on the size of the queue buffer 700 and / or amount of processes and / or time needed to read the queue buffer 700. Using the end of the queue buffer 700 to represent the start point for rendering the sequential frame 704, the touch event processing point 706 may be set. For example, the touch event processing point 706 may be set a constant and / or variable measurement prior to the start point for rendering the sequential frame 704.
[0088] With reference to FIG. 8, the sleep timer 800 may include data for waiting to render the sequential frame 804. The sleep timer 800 may include a finite amount of data and / or a finite period for waiting to render the sequential frame 804 and when the sleep timer 800 expires, the sequential frame may be rendered 804. The end of the sleep timer 800, or the end of processes for implementing the sleep timer 800, may approximately represent the start point for rendering the sequential frame 804. The end of the sleep timer 800 may be identified, such as based on the data of the sleep timer 800 and / or amount of processes and / or time needed for the sleep timer 800 to expire. Using the end of the sleep timer 800 to represent the start point for rendering the sequential frame 804, the touch event processing point 806 may be set. For example, the touch event processing point 806 may be set a constant and / or variable measurement prior to the start point for rendering the sequential frame 804.
[0089] FIG. 9 is a process flow diagram illustrating an example method for implementing touch input sampling and display refreshing according to various embodiments. With reference to FIG. 1-9, the method 900 may be implemented in a computing device (e.g., computing device 100 in FIG. 1, touchscreen computing device 202 in FIG. 2) , in hardware, in software (e.g., modules 210-218 in FIG. 2, operating system 400, display system 404 in FIG. 4) executing in a processing system (e.g., processing system 102, 104, processors 110, 112, 114, 116, 118, 152, 160 in FIG. 1, processing system (s) 206 in FIG. 2) , or in a combination of a software-configured processing system and dedicated hardware, that includes other individual components, such as various memories / caches and various memory / cache controllers. Means for implementing the method 900 may include a processing system (e.g., processing system 102, 104, 206 in FIGS. 1 and 2) or other processors (e.g., processors 110, 112, 114, 116, 118, 152, 160 in FIG. 1) . Further, one or more processors may be configured with software or firmware to perform some or all of the operations of the method 900. In order to encompass the alternative configurations enabled in various embodiments, the hardware implementing the method 900 is referred to herein as a “processing system. ”
[0090] In block 902, the processing system may identify a start point for starting to render a sequential frame. In some embodiments, the processing system identifying the start point for starting to render the sequential frame in block 902 may include a processing system (e.g., processing system 102, 104, 206 in FIGS. 1 and 2) , one or more processors (e.g., processors 110, 112, 114, 116, 118, 152, 160 in FIG. 1) , a frame render start point module (e.g., frame render start point module 212 in FIG. 2) , an operating system (e.g., operating system 400 in FIG. 4) , and / or a display system (e.g., display system 404 in FIG. 4) . The start point for rendering the sequential frame may be identified based on data and / or processes that are to be used and / or implemented prior to starting to render the sequential frame. The end and / or completion of the data and / or processes that are to be used and / or implemented prior to starting to render the sequential frame may occur at approximately starting to render a sequential frame. As such, the end and / or completion of the data and / or processes that are to be used and / or implemented prior to starting to render the sequential frame may be used to indicate a start point at which rendering the sequential frame may start.
[0091] For example, an end point of a queue buffer (e.g., queue buffer 700 in FIG. 7) preceding rendering the sequential frame (e.g., sequential frame 702 in FIG. 7) may be identified as the start point for starting to render the sequential frame (e.g., start point for rendering the sequential frame 704 in FIG. 7) . As another example, the end of a sleep timer (e.g., sleep timer 800 in FIG. 8) in the application logic thread preceding rendering the sequential frame (e.g., sequential frame 802 in FIG. 8) may be identified as the start point for starting to render the sequential frame (e.g., start point for rendering the sequential frame 804 in FIG. 8) .
[0092] In block 904, the processing system may set a touch event processing point. The touch event processing point (e.g., touch event processing point 706, 806 in FIGS. 7 and 8) may be set to prior to the start point for rendering the sequential frame identified in block 902. In some embodiments, the touch event processing point may be set to a constant and / or variable measurement prior to the start point for rendering the sequential frame. For example, the measurement may be time, such as measured in milliseconds (ms) , which may include a fraction of 1ms up to 100ms, such as 1ms. As another example, the measurement may be an event, such as a number of process cycles, clock cycles, etc. Setting the touch event processing point may include generating and transmitting a signal to the processing system, setting a flag at a register to be read by the processing system, etc. In some embodiments, the processing system setting the touch event processing point in block 904 may include the processing system, one or more processors, a touch event processing point module (e.g., touch event processing point module 214 in FIG. 2) , the operating system, and / or the display system.
[0093] In block 906, the processing system may receive a touch event. The touch event may include data of a user’s one or more touch inputs to a display device of a touchscreen computing device (e.g., computing device 100 in FIG. 1, touchscreen computing device 202 in FIG. 2) . The data of the one or more touch inputs may include one or more of one or more locations, sizes, directions of movement, speeds of movement, times, durations, numbers, pressures, patterns, etc. of touches on the display device. The touch event may be associated with a touch IRQ that may trigger reading of touch event and dispatching of the touch event to the processing system. The processing system may receive the read and dispatched touch event. In some embodiments, the processing system receiving the touch event in block 906 may include the processing system, one or more processors, a touch event module (e.g., touch event module 210 in FIG. 2) , the operating system, and / or the display system.
[0094] In determination block 908, the processing system may identify whether the touch event processing point is reached. As discussed for setting the touch event processing point in block 904, the touch event processing point may take various forms, a signal to the processing system, a flag at a register to be read by the processing system, etc. The processing system may receive and / or read the touch event processing point in whichever form, identifying that the touch event processing point is reached. Lack of receiving and / or reading the touch event processing point in whichever form may indicate to the processing system that the touch event processing point is not reached. In some embodiments, identify whether the touch event processing point is reached in determination block 908 may include the processing system, one or more processors, the touch event processing module (e.g., touch event processing module 216 in FIG. 2) , the operating system, and / or the display system.
[0095] In response to identifying that the touch event processing point is reached (i.e., determination block 908 = “Yes” ) , the processing system may process one or more touch events in block 910. The one or more touch events may include touch events received in block 906 between starting to render the frame and starting to render the sequential frame. Processing the one or more touch events in block 910 may commence at the touch event processing point prior to the start point for rendering the sequential frame.
[0096] Processing the one or more touch events in block 910 may include translating the data of the user’s one or more touch inputs to the display device of the touchscreen computing device to data for rendering the sequential frame on the display device. For example, the touch event may be translated to a movement of an item in sequential frame relative to a rendered frame. As another example, the touch event may be translated to manipulation, such as zooming, panning, rotating, skewing, changing perspective, etc., of the sequential frame relative to the rendered frame. As another example, the touch event may be translated to implementation of an application specific action, such as a game based action, including a defensive action, an attack action, a change of item state action, in the sequential frame. The processing system may process the one or more touch events irrespective of a display synchronization signal. In some embodiments, the one or more touch events in block 910 may be processed by the processing system, one or more processors within the processing system, a touch event processing module, the operating system, and / or the display system.
[0097] In block 912, the processing device may render the sequential frame. Rendering the sequential frame may include instructing a display device, such as via a display device controller, to generate a display based on the data for rendering the sequential frame on the display device. In some embodiments, the processing system processing the one or more touch events in block 912 may include the processing system, one or more processors, a frame render module (e.g., frame render module 218 in FIG. 2) , the operating system, and / or the display system.
[0098] In response to identifying that the touch event processing point is not reached (i.e., determination block 908 = “No” ) , the processing system may cache the one or more touch events block 914. The processing system may store the one or more touch events, including the data of the user’s one or more touch inputs to the display device of the touchscreen computing device, to a memory (e.g., memory 120, 158 in FIG. 1, electronic storage 204 in FIG. 2) . The one or more touch events may be cached for access to the one or more touch events in response to the identifying that the touch event processing point is reached (i.e., determination block 908 = “Yes” ) .
[0099] Instances of any of blocks 902-918 may be continually, periodically, and / or episodically implemented by the processing system. Instances of any of the blocks 902-918 may be implemented serially and / or in parallel. For example, an instance of block 906 may be implemented in parallel with an instance of any of blocks 902, 904, 908-914. As another example, an instance of blocks 902 and 904 may be implemented in parallel with an instance of any of block 906-914.
[0100] A system in accordance with the various embodiments (including, but not limited to, embodiments described above with reference to FIGS. 1-9) may be implemented in a wide variety of computing systems including mobile computing devices, an example of which suitable for use with the various embodiments is illustrated in FIG. 10. The mobile computing device 1000 may include a processor 1002 coupled to a touchscreen controller 1004 and an internal memory 1006. The processor 1002 may be one or more multicore integrated circuits designated for general or specific processing tasks. The internal memory 1006 may be volatile or non-volatile memory, and may also be secure and / or encrypted memory, or unsecure and / or unencrypted memory, or any combination thereof. Examples of memory types that can be leveraged include but are not limited to DDR, Low-Power DDR (LPDDR) , Graphics DDR (GDDR) , WIDEIO, RAM, Static RAM (SRAM) , Dynamic RAM (DRAM) , Parameter RAM (P-RAM) , Resistive RAM (R-RAM) , Magnetoresistive RAM (M-RAM) , Spin-Transfer Torque RAM (STT-RAM) , and embedded DRAM. The touchscreen controller 1004 and the processor 1002 may also be coupled to a touchscreen panel 1012, such as a resistive-sensing touchscreen, capacitive-sensing touchscreen, infrared sensing touchscreen, etc. Additionally, the display device of the mobile computing device 1000 need not have touch screen capability.
[0101] The mobile computing device 1000 may have one or more radio signal transceivers 1008 (e.g., Peanut, Bluetooth, ZigBee, Wi-Fi, RF radio) and antennae 1010, for sending and receiving communications, coupled to each other and / or to the processor 1002. The transceivers 1008 and antennae 1010 may be used with the above-mentioned circuitry to implement the various wireless transmission protocol stacks and interfaces. The mobile computing device 1000 may include a cellular network wireless modem chip 1016 that enables communication via a cellular network and is coupled to the processor.
[0102] The mobile computing device 1000 may include a peripheral device connection interface 1018 coupled to the processor 1002. The peripheral device connection interface 1018 may be singularly configured to accept one type of connection, or may be configured to accept various types of physical and communication connections, common or proprietary, such as Universal Serial Bus (USB) , FireWire, Thunderbolt, or PCIe. The peripheral device connection interface 1018 may also be coupled to a similarly configured peripheral device connection port (not shown) .
[0103] The mobile computing device 1000 may also include speakers 1014 for providing audio outputs. The mobile computing device 1000 may also include a housing 1020, constructed of a plastic, metal, or a combination of materials, for containing all or some of the components described herein. The mobile computing device 1000 may include a power source 1022 coupled to the processor 1002, such as a disposable or rechargeable battery. The rechargeable battery may also be coupled to the peripheral device connection port to receive a charging current from a source external to the mobile computing device 1000. The mobile computing device 1000 may also include a physical button 1024 for receiving user inputs. The mobile computing device 1000 may also include a power button 1026 for turning the mobile computing device 1000 on and off.
[0104] Methods and devices for implementing such methods in accordance with the various embodiments (including, but not limited to, embodiments described above with reference to FIGS. 1-9) may be implemented in a wide variety of computing systems including an embedded vehicle computing system 1100 an example of which is illustrated in FIGS. 11A-11C. An embedded vehicle computing system 1100 may include a vehicle control unit 1140, such as an ECU, which may include a processor, such as a CPU, an artificial intelligence (AI) processor, etc. The embedded vehicle computing system 1100 may include a plurality of sensors 1142-1170, including global navigation satellite system (GNSS) receivers 1142, accelerometers 1144, occupancy sensors 1146, 1148, 1150, 1152, tire pressure sensors 1154, 1156, cameras 1158, 1160, microphones 1162, 1164, impact sensors 1166, external sensors 1168, 1170.
[0105] The plurality of sensors 1142-1170, disposed in or on the vehicle, may be used for various purposes, such as navigation, crash avoidance, etc., as well to provide sensor data regarding objects and people in or on the vehicle. The sensors 1142-1170 may include one or more of a wide variety of sensors capable of detecting a variety of information useful for navigation and collision avoidance. Each of the sensors 1142-1170 may be in wired or wireless communication with a control unit 1140, as well as with each other.
[0106] The sensors may include one or more cameras 1158, 1160 or other optical sensors or photo optic sensors. The sensors may further include other types of object detection and ranging sensors, such as external sensors 1168, 1170, IR sensors, and ultrasonic sensors. The sensors may further include tire pressure sensors 1154, 1156, humidity sensors, temperature sensors, satellite GNSS receivers 1142, control input sensors 1145, accelerometers 1144, vibration sensors, gyroscopes, gravimeters, impact sensors 1166, force meters, stress meters, strain sensors, fluid sensors, chemical sensors, gas content analyzers, pH sensors, radiation sensors, Geiger counters, neutron detectors, biological material sensors, microphones 1162, 1164, occupancy sensors 1146, 1148, 1150, 1152, proximity sensors, and other sensors.
[0107] The vehicle control unit 1140 may include one or more processors configured with processor-executable instructions to perform navigation and collision avoidance operations using information received from various sensors, particularly the cameras 1158, 1160. In some embodiments, the control unit 1140 may supplement the processing of camera images using distance and relative position (e.g., relative bearing angle) that may be obtained from external sensors 1168, 1170. The control unit 1140 may further be configured to control steering, breaking and speed of the vehicle using information regarding other vehicles determined using various embodiments. The vehicle control unit 1140 may include one or more processors configured with processor-executable instructions to receive information from the sensors 1142-1170 and to perform operations using such information as further described herein. In various embodiments, the vehicle control unit 1140 may include, be a component of, or communicate with V2X onboard equipment of the vehicle.
[0108] FIG. 11C is a component block diagram illustrating the embedded vehicle computing system 1100 including components and support systems suitable for implementing various embodiments. The embedded vehicle computing system 1100 may include the control unit 1140, which may include various circuits and devices used to control the operation of the vehicle. The control unit 1140 may include a processor 1140a, such as a CPU, an AI processor, etc., a memory 1140b, an input module 1140c, an output module 1140d, and a radio module 1140e. The control unit 1140 may be coupled to and configured to control drive control components 1172a, navigation components 1172b, and one or more sensors 1172c of the embedded vehicle computing system 1100.
[0109] The control unit 1140 may communicate with V2X onboard equipment 1140f. The processor 1140a may be configured with processor-executable instructions to control maneuvering, navigation, and / or other operations of the vehicle, including operations of various embodiments, including gathering and analyzing real-world vehicle run data gathered from the sensors 1172c. The processor 1140a may be coupled to the memory 1140b. The V2X onboard equipment 1140f may include one or more processors 1140g configured with processor-executable instructions to perform various operations of various embodiments, including communicating real-world vehicle run data gathered from the sensors 1172c between the embedded vehicle computing system 1140 and a wireless communication device 1112 and / or the computing device on a communication network (e.g., a core network 1132) via the radio module 1140e.
[0110] The radio module 1140e may be configured for wireless communication. The radio module 1140e may exchange signals (e.g., command signals for controlling maneuvering, signals from navigation facilities, data signals, etc. ) via a communication link 1122 with a network transceiver (e.g., the base station 1110) , and may provide the signals to the processor 1140a, 1140g and / or the navigation unit 1172b. In some embodiments, the radio module 1140e may enable the embedded vehicle computing system 1100 to communicate with a wireless communication device 1112 through the wireless communication link 1124. The wireless communication link 1124 may be a bidirectional or unidirectional communication link, and may use one or more communication protocols.
[0111] The input module 1140c may receive sensor data from one or more vehicle sensors 1172c as well as electronic signals from other components, including the drive control components 1172a and the navigation components 1172b. The output module 1140d may communicate with or activate various components of the embedded vehicle computing system 1100, including the drive control components 1172a, the navigation components 1172b, and the sensor (s) 1172c.
[0112] The control unit 1140 may be coupled to the drive control components 1172a to control physical elements of the vehicle related to maneuvering and navigation of the vehicle, such as the engine, motors, throttles, steering elements, flight control elements, braking or deceleration elements, and the like. The drive control components 1172a may also include components that control other devices of the vehicle, including interior environment controls (e.g., air conditioning and heating) , external and / or interior lighting, interior and / or exterior informational displays (which may include a display screen or other devices to display information) , safety devices (e.g., haptic devices, audible alarms, etc. ) , and other similar devices.
[0113] The control unit 1140 may be coupled to the navigation components 1172b, and may receive data from the navigation components 1172b and be configured to use such data to determine the present position and orientation of the vehicle, as well as an appropriate course toward a destination. The navigation components 1172b may include or be coupled to a GNSS receiver system (e.g., one or more Global Positioning System (GPS) receivers) enabling the embedded vehicle computing system 1100 to determine its current position using GNSS signals. Alternatively, or in addition, the navigation components 1172b may include radio navigation receivers for receiving navigation beacons or other signals from radio nodes, such as Wi-Fi access points, cellular network sites, radio station, remote computing devices, other vehicles, etc. Through control of the drive control elements 1172a, the processor 1140a may control the vehicle to navigate and maneuver. The processor 1140a, 1140g and / or the navigation components 1172b may be configured to communicate with a network element such as a server in a communication network (e.g., a core network 1132) via the wireless communication link 1122, 1126 to receive commands to control maneuvering, receive data useful in navigation, provide real-time position reports, etc.
[0114] The control unit 1140 may be coupled to one or more sensors 1172c. The sensor (s) 1172c may include the sensors 1142-1170 as described, and may the configured to provide a variety of data to the processor 1140a, 1140g.
[0115] While the control unit 1140 is described as including separate components, in some embodiments some or all of the components (e.g., the processor 1140a, the memory 1140b, the input module 1140c, the output module 1140d, and the radio module 1140e) may be integrated in a single device or module, such as a processing system processing device. Such a processing system processing device may be configured for use in vehicles and be configured, such as with processor-executable instructions executing in the processor 1140a, to perform operations of navigation and collision avoidance.
[0116] Implementation examples are described in the following paragraphs. While some of the following implementation examples are described in terms of example systems, devices, or methods, further example implementations may include: the example systems or devices discussed in the following paragraphs implemented as a method executing operations of the example systems or devices, the example systems, devices, or methods discussed in the following paragraphs implemented by a computing device processing system configured to perform operations of the example systems, devices, or methods; one or more processing devices of a computing device configured to perform operations of the example systems, devices, or methods; a computing device having a touchscreen and a processing system configured to cause the computing device to perform operations of the example systems, devices, or methods; the example systems, devices, or methods discussed in the following paragraphs implemented by a computing device including means for performing functions of the example systems, devices, or methods; and the example systems, devices, or methods discussed in the following paragraphs implemented as a non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a computing device to perform the operations of the example systems, devices, or methods.
[0117] Example 1. A method for processing touch events of a touchscreen of a computing device by a processing system, including receiving a touch event after starting to render a frame and before starting to render a sequential frame; setting a touch event processing point prior to a start point for starting to render the sequential frame in response to receiving the touch event; and processing the touch event at the touch event processing point prior to the start point for starting to render the sequential frame irrespective of a display synchronization signal.
[0118] Example 2. The method of example 1, further including rendering the touch event in the sequential frame.
[0119] Example 3. The method of any of examples 1 or 2, in which receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs following receiving the display synchronization signal during rendering the frame.
[0120] Example 4. The method of any of examples 1 or 2, in which receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs prior to receiving the display synchronization signal during rendering the frame.
[0121] Example 5. The method of any of examples 1-4, further including identifying the start point for starting to render the sequential frame.
[0122] Example 6. The method of example 5, in which identifying the start point for starting to render the sequential frame includes identifying an end of a queue buffer configured for storing display data of the frame.
[0123] Example 7. The method of example 5, in which identifying the start point for starting to render the sequential frame includes identifying a sleep period prior to starting to render the sequential frame.
[0124] Computer program code or “program code” for execution on a programmable processor for carrying out operations of the various embodiments may be written in a high level programming language such as C, C++, C#, Smalltalk, Java, JavaScript, Visual Basic, a Structured Query Language (e.g., Transact-SQL) , Perl, or in various other programming languages. Program code or programs stored on a computer readable storage medium as used in this application may refer to machine language code (such as object code) whose format is understandable by a processor.
[0125] The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the operations of the various embodiments must be performed in the order presented. As will be appreciated by one of skill in the art the order of operations in the foregoing embodiments may be performed in any order. Words such as “thereafter, ” “then, ” “next, ” etc. are not intended to limit the order of the operations; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a, ” “an” or “the” is not to be construed as limiting the element to the singular.
[0126] The various illustrative logical blocks, modules, circuits, and algorithm operations described in connection with the various embodiments may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and operations have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the claims.
[0127] The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP) , an application-specific integrated circuit (ASIC) , a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.
[0128] In one or more embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable medium or a non-transitory processor-readable medium. The operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module that may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) , floppy disk, and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and / or instructions on a non-transitory processor-readable medium and / or computer-readable medium, which may be incorporated into a computer program product.
[0129] The preceding description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the claims. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and implementations without departing from the scope of the claims. Thus, the present disclosure is not intended to be limited to the embodiments and implementations described herein, but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.
Claims
1.A method for processing touch events of a touchscreen of a computing device by a processing system, comprising:receiving a touch event after starting to render a frame and before starting to render a sequential frame;setting a touch event processing point prior to a start point for starting to render the sequential frame in response to receiving the touch event; andprocessing the touch event at the touch event processing point prior to the start point for starting to render the sequential frame irrespective of a display synchronization signal.2.The method of claim 1, further comprising rendering the touch event in the sequential frame.3.The method of claim 1, wherein receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs following receiving the display synchronization signal during rendering the frame.4.The method of claim 1, wherein receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs prior to receiving the display synchronization signal during rendering the frame.5.The method of claim 1, further comprising identifying the start point for starting to render the sequential frame.6.The method of claim 5, wherein identifying the start point for starting to render the sequential frame comprises identifying an end of a queue buffer configured for storing display data of the frame.7.The method of claim 5, wherein identifying the start point for starting to render the sequential frame comprises identifying a sleep period prior to starting to render the sequential frame.8.A computing device comprising:a touchscreen;a memory; andprocessing system having one or more processors coupled to the touchscreen and memory, and configured to:receive a touch event after starting to render a frame and before starting to render a sequential frame on the touchscreen;set a touch event processing point prior to a start point for starting to render the sequential frame in response to receiving the touch event; andprocess the touch event at the touch event processing point prior to the start point for starting to render the sequential frame irrespective of a display synchronization signal.9.The computing device of claim 8, wherein the one or more processors are further configured to render the touch event in the sequential frame.10.The computing device of claim 8, wherein the one or more processors are further configured to receive the touch event after starting to render the frame and before starting to render the sequential frame following receiving the display synchronization signal during rendering the frame.11.The computing device of claim 8, wherein the one or more processors are further configured to receive the touch event after starting to render the frame and before starting to render the sequential frame prior to receiving the display synchronization signal during rendering the frame.12.The computing device of claim 8, wherein the one or more processors are further configured to identify the start point for starting to render the sequential frame.13.The computing device of claim 8, wherein the one or more processors are further configured to identify the start point for starting to render the sequential frame based on identifying an end of a queue buffer configured for storing display data of the frame.14.The computing device of claim 8, wherein the one or more processors are further configured to identify the start point for starting to render the sequential frame based on identifying a sleep period prior to starting to render the sequential frame.15.A computing device, comprising:a touchscreen;means for receiving a touch event after starting to render a frame and before starting to render a sequential frame on the touchscreen;means for setting a touch event processing point prior to a start point for starting to render the sequential frame in response to receiving the touch event; andmeans for processing the touch event at the touch event processing point prior to the start point for starting to render the sequential frame irrespective of a display synchronization signal.16.The computing device of claim 15, further comprising means for rendering the touch event in the sequential frame.17.The computing device of claim 15, wherein means for receiving the touch event after starting to render the frame and before starting to render the sequential frame is implemented following receiving the display synchronization signal during rendering the frame.18.The computing device of claim 15, wherein means for receiving the touch event after starting to render the frame and before starting to render the sequential frame is implemented prior to receiving the display synchronization signal during rendering the frame.19.The computing device of claim 15, further comprising means for identifying the start point for starting to render the sequential frame.20.The computing device of claim 19, wherein means for identifying the start point for starting to render the sequential frame comprises means for identifying an end of a queue buffer configured for storing display data of the frame.21.The computing device of claim 19, wherein means for identifying the start point for starting to render the sequential frame comprises means for identifying a sleep period prior to starting to render the sequential frame.22.A non-volatile processor-readable medium having stored thereon processor-executable instructions configured to cause one or more processor of a processing system of a computing device to perform operations comprising:receiving a touch event after starting to render a frame and before starting to render a sequential frame;setting a touch event processing point prior to a start point for starting to render the sequential frame in response to receiving the touch event; andprocessing the touch event at the touch event processing point prior to the start point for starting to render the sequential frame irrespective of a display synchronization signal.23.The non-volatile processor-readable medium of claim 22, wherein the stored processor-executable instructions are configured to cause one or more processor of the processing system to perform operations further comprising rendering the touch event in the sequential frame.24.The non-volatile processor-readable medium of claim 22, wherein the stored processor-executable instructions are configured to cause one or more processor of the processing system to perform operations such that receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs following receiving the display synchronization signal during rendering the frame.25.The non-volatile processor-readable medium of claim 22, wherein the stored processor-executable instructions are configured to cause one or more processor of the processing system to perform operations such that receiving the touch event after starting to render the frame and before starting to render the sequential frame occurs prior to receiving the display synchronization signal during rendering the frame.26.The non-volatile processor-readable medium of claim 22, wherein the stored processor-executable instructions are configured to cause one or more processor of the processing system to perform operations further comprising identifying the start point for starting to render the sequential frame.27.The non-volatile processor-readable medium of claim 26, wherein the stored processor-executable instructions are configured to cause one or more processor of the processing system to perform operations such that identifying the start point for starting to render the sequential frame comprises identifying an end of a queue buffer configured for storing display data of the frame.28.The non-volatile processor-readable medium of claim 26, wherein the stored processor-executable instructions are configured to cause one or more processor of the processing system to perform operations such that identifying the start point for starting to render the sequential frame comprises identifying a sleep period prior to starting to render the sequential frame.
Citation Information
Patent Citations
Dynamic time frame compensation rendering system and dynamic time frame compensation rendering method for virtual-reality mobile terminal
CN106296566A
System and method for timing input sensing, rendering, and display to minimize latency
CN109074189A
Method for improving video rendering efficiency and user interaction fluency
CN111954067A
Video rendering method and device, equipment, storage medium and computer program product
CN112860944A
Browser page rendering method and device, electronic equipment and readable storage medium
CN116186439A