DETAILED ACTION
Claims 1-20 are pending.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Priority
Receipt is acknowledged of certified copies of papers required by 37 CFR 1.55.
Information Disclosure Statement
The information disclosure statement (IDS) submitted on 11/06/2025 is in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statement is being considered by the examiner.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim 1-13 and 16-20 are rejected under 35 U.S.C. 103 as being unpatentable over Griffais (US 2019/0232164 A1) in view of Meng et al. (US 2022/0409999 A1).
Regarding claim 1, Griffais teaches the invention substantially as claimed including a non-transitory computer readable medium may store one or more programs, wherein the one or more programs comprise instructions that cause, when executed by a first processor of a first electronic device, the first processor to (Claim 1: A client machine comprising: a central processing unit (CPU); a graphics processing unit (GPU); and memory storing computer-executable instructions that, when executed by the CPU, cause the client machine to:):
identify first instructions corresponding to a state among a plurality of states of a game service and executable by a second processor of the first electronic device distinct from the first processor, and stored in a memory of the first electronic device ([0026] As shown in FIG. 1, in Step 1, as this group of first users 102 begin executing the new video game (i.e., a program that renders graphics on a display) on their respective client machines 104, the client machines 104 compile (using respective graphics drivers) a set of shaders, and the compiled shader code is used by the respective GPUs of the client machines 104 to render graphics for the program. The compiled shader code can then be cached in a predefined memory location that is accessible to the client application executing the program (e.g., the video game). The application ID of the program (e.g., video game) may also be cached in association with the compiled shader code at the predefined memory location; Step 2);
transmit, via the communication circuitry, in response to identification of the first instructions, information associated with the first instructions, to a second electronic device ([0027] In Step 2, the client machines 104, at some point in time, such as after stopping execution of the program (e.g., video game), may send information 110 to the remote system 106. The information 110 sent to the remote system 106, for a given client machine 104, may include the hardware configuration of the client machine 104, the application ID of the program (e.g., video game) executed on the client machine 104, and a set of shader IDs corresponding to the shaders that were compiled during execution of the program. The client machines 104 may generate the set of shader IDs upon reading the compiled shader code from the predefined memory location. Although FIG. 1 depicts a scenario where the information 110 is sent to the remote system 106 after client machines 104 stop execution of the program (e.g., video game), it is to be appreciated that the information 110 can be streamed from the client machines 104 in real-time, or substantially real-time, such as by streaming or otherwise sending the information 110 as the graphics drivers of those machines 104 compile and cache shader code to the predefined memory location.).
Griffais does not explicitly teach receive, via the communication circuitry, in response to transmitting the information, from the second electronic device, second instructions corresponding to the state and executable by the second processor; and
in response to receiving the second instructions, update the first instructions based on the second instructions by changing the first instructions to the second instructions, wherein the second instructions are an updated version of the first instructions.
However, Meng teaches receive, via the communication circuitry, in response to transmitting the information, from the second electronic device, second instructions corresponding to the state and executable by the second processor (Abstract: a server receives operation instructions from an electronic device, generates a plurality of first rendering instruction streams based on the operation instructions, sends the plurality of first rendering instruction streams to the electronic device, and generates and stores one or more first rendering contexts for one or more first rendering instruction streams in the plurality of first rendering instruction streams.; [0005] the rendering instructions are transmitted to a terminal device through a network. The terminal device parses and executes an instruction stream. In this case, GPU capabilities of the terminal device are fully utilized; [0138]; [0139] Specifically, a user starts the game by using a game client, that is, the app client, installed on the terminal. In this case, the app client generates operation instructions.; wherein starting the game corresponds to the state of the game service; [0234] For example, the communications module 910 can obtain, from a game server end in real time, a rendering instruction required for rendering a game picture.; Fig. 15, Electronic device 900, Processor 950, Communications module 910); and
in response to receiving the second instructions, update the first instructions based on the second instructions by changing the first instructions to the second instructions (Fig. 6, Step 606; [0145] S606: After receiving the rendering instruction stream, the context tracking module updates a local rendering context and sets a restoration point and a baseline snapshot.; [0011] By using the method, the server may send a set of rendering context differences to the electronic device, where the set of rendering context differences includes one or more rendering context differences, wherein the one rendering context difference is a difference between the second rendering context and one first rendering context. Therefore, the electronic device can obtain, based on the set of rendering context differences, a rendering instruction stream most recently generated by the server; [0019]; [0040]; [0130-134] comparison of objects to obtain a difference),
wherein the second instructions are an updated version of the first instructions ([0019] In a possible implementation, the server receives a rendering instruction stream response sent by the electronic device, where the rendering instruction stream response includes an instruction stream number of a rendering instruction stream most recently received by the electronic device; and the server updates the baseline snapshot to a first rendering context corresponding to the received instruction stream number.; [0145] S606: After receiving the rendering instruction stream, the context tracking module updates a local rendering context and sets a restoration point and a baseline snapshot.).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the teachings of Meng of updating rendering instructions by comparing a baseline snapshot and updating the instruction stream as the content changes. The modification would have been motivated by the desire of avoiding bottlenecks and high latency in cloud gaming environments.
Regarding claim 2, Griffais teaches wherein the information includes at least one of a time when the first instructions are compiled to be executable by the second processor, a size of the first instructions, identifier of content corresponding to the first instructions ([0027] In Step 2, the client machines 104, at some point in time,…, may send information 110 to the remote system 106. The information 110 sent to the remote system 106, for a given client machine 104, may include the hardware configuration of the client machine 104, the application ID of the program (e.g., video game) executed on the client machine 104, and a set of shader IDs corresponding to the shaders that were compiled during execution of the program. The client machines 104 may generate the set of shader IDs upon reading the compiled shader code from the predefined memory location.) or a frequency in which the first instructions are used by the second processor.
Regarding claim 3, Griffais teaches wherein the instructions, when executed by the first processor, causes the first electronic device to:
cause at least one of the identifier of the content corresponding to the first instructions, or the frequency in which the first instructions are used by the second processor to be included in a hash value in the information to be transmitted to the second electronic device ([0044] As shown at sub-block 238, the video game client 212 may also hash the machine code for the compiled shaders that is read from the cached entries, and this hash may be sent with the shader IDs (or shader keys) in a set of tuples (each tuple comprising a shader ID/key and a hash of the compiled machine code for the shader) to the remote system 106.).
Regarding claim 4, Griffais teaches wherein instructions, when executed by the first processor, causes the first electronic device to:
identify, in the memory, the first instructions in a block corresponding to the state among the plurality of states of the game service provided at least based on the one or more programs, wherein the block includes information to be inputted to a pipeline of the second processor corresponding to the first instructions when the first instructions are executed by the second processor ([0001] When these programs are executed in a graphics pipeline, the shaders output per-pixel values (e.g., color values) that are combined to create an image on the display with a desired visual effect. [0078] At 708, the client machine 104 may start executing a video game that uses shaders corresponding to the received shader code, at least a portion of which is cached at the predetermined memory location 218.; [0079] At 710, the client machine 104 may compile and cache shaders corresponding to the discarded shader code. This can be done during a loading screen, or during execution of the game in real-time. When it comes time to utilize shaders corresponding to the received shader code that was precached at block 706, the GPU 204 of the client machine 104 executes the compiled shader code in lieu of the graphics driver 216 compiling the corresponding shaders on its own, which conserves resources of the client machine 104.).
Regarding claim 5, Meng teaches wherein the instructions, when executed by the first processor, causes the first electronic device to:
receive, via the communication circuitry, in response to the transmitting of the information, from the second electronic device, the third instructions corresponding to another state among the plurality of states and executable by the second processor ([0006] FIG. 1 shows a process in an instruction cloud game scenario without network jitter. In other words, a server receives operation instructions from a terminal, enables a CPU to execute the logic of an application program to generate rendering instruction streams including resource loading, rendering pipeline execution, and display, and sends the rendering instruction streams to the terminal; and the terminal receives the rendering instruction streams, and enables a GPU to execute the rendering instruction streams and display an image corresponding to the application program.); and
store, in the memory third instructions in conjunction with the first instructions (Fig. 7a).
Regarding claim 6, Meng teaches wherein the instructions, when executed by the first processor, causes the first electronic device to:
receive, via the communication circuitry, in response to the transmitting of the information, from the second electronic device, a command signal indicating to upload the first instructions ([0081] In the cloud game scenario, a game client is installed on the terminal, and a user may start a game by using the game client on the terminal. The following is a process of an existing instruction cloud game:); and
in response to receiving the command signal, transmit, via the communication circuitry, to the second electronic device, the first instructions (Fig. 6, Step 602 Send the operation instructions).
Regarding claim 7, Meng teaches wherein the instructions, when executed by the first processor, causes the first electronic device to: receive, via the communication circuitry, from the second electronic device, a command signal indicating to update the first instructions in conjunction with the second instructions and in response to receiving the second instructions and the command signal, update the first instructions based on the second instructions (Fig. 6, Step 606; [0145] S606: After receiving the rendering instruction stream, the context tracking module updates a local rendering context and sets a restoration point and a baseline snapshot.; [0011] By using the method, the server may send a set of rendering context differences to the electronic device, where the set of rendering context differences includes one or more rendering context differences, wherein the one rendering context difference is a difference between the second rendering context and one first rendering context. Therefore, the electronic device can obtain, based on the set of rendering context differences, a rendering instruction stream most recently generated by the server; [0019]; [0040]; [0130-134] comparison of objects to obtain a difference).
Regarding claim 8, Griffais teaches wherein the instructions, when executed by the first processor, causes the first electronic device to:
transmit, to the second processor in response to entering a preset state corresponding to the first instructions among multiple states of the game service provided at least based on the one or more programs, signal indicating execution of a pipeline among pipelines based on the first instructions, and modify information associated with an execution number of the pipelines based on the first instructions in the memory ([0001] When these programs are executed in a graphics pipeline, the shaders output per-pixel values (e.g., color values) that are combined to create an image on the display with a desired visual effect.; [0027] In Step 2, the client machines 104, at some point in time, such as after stopping execution of the program (e.g., video game), may send information 110 to the remote system 106. The information 110 sent to the remote system 106, for a given client machine 104, may include the hardware configuration of the client machine 104, the application ID of the program (e.g., video game) executed on the client machine 104, and a set of shader IDs corresponding to the shaders that were compiled during execution of the program. The client machines 104 may generate the set of shader IDs upon reading the compiled shader code from the predefined memory location. Although FIG. 1 depicts a scenario where the information 110 is sent to the remote system 106 after client machines 104 stop execution of the program (e.g., video game), it is to be appreciated that the information 110 can be streamed from the client machines 104 in real-time, or substantially real-time, such as by streaming or otherwise sending the information 110 as the graphics drivers of those machines 104 compile and cache shader code to the predefined memory location.).
Regarding claim 9, Griffais teaches the invention as claimed including a non-transitory computer readable medium storing one or more programs, the one or more programs comprising instructions, when executed by at least one processor of a first electronic device including a communication circuitry, the first processor to (Fig. 1, Communication Interface 120; Claim 1: A client machine comprising: a central processing unit (CPU); a graphics processing unit (GPU); and memory storing computer-executable instructions that, when executed by the CPU, cause the client machine to:):
receive, via the communication circuitry, information generated by a first processor of a second electronic device distinct from the first electronic device ([0048] In order to download the compiled shader code 116, the remote system 106 may provide the client machine 104 with information (e.g., an identifier, uniform resource locator (URL), etc.) to tell the client machine 104 where to go to download the compiled shader code 116.);
identify first instructions, from the information, corresponding to a state among a plurality of states of a game service provided by the second electronic device, wherein the first instructions are stored in the second electronic device and executable by a second processor of the second electronic device distinct from the first processor ([0048] Returning to block 226, if the remote system 106 has compiled shader code available for the requesting client machine 104 to precache, the process 200 may follow the “yes” route from block 226 to block 242 where the client machine 104 receives (or downloads) the compiled shader code 116 corresponding to the hardware configuration and an application ID of the video game in question, and the client machine 104 precaches (or stores for subsequent use) at least a portion of the compiled shader code 116 at the predefined memory location 218. In order to download the compiled shader code 116, the remote system 106 may provide the client machine 104 with information (e.g., an identifier, uniform resource locator (URL), etc.) to tell the client machine 104 where to go to download the compiled shader code 116. The client machine 104 may download the compiled shader code 116 in compressed form (e.g., in zip files).);
identify, from a memory of the first electronic device in response to identification of the first instructions stored in the second electronic device, second instructions corresponding to the state and executable by the second processor ([0032] At Step 7, the client machine 104(N) precaches the compiled shader code 116 in a predetermined memory location for use during execution of the program (e.g., video game). By doing so, even though the client machine 104(N) may have never before compiled shaders for the particular program (e.g., video game) in question, the client machine 104(N) is now able to leverage the compiled shader code 116 received from the remote system 106.).
In addition, Meng teaches compare the first instructions with the second instructions, and based on the first instructions different from the second instructions, transmit, via the communication circuitry, to the second electronic device, the second instructions in conjunction with a command signal indicating to update the first instructions based on the second instructions (Fig. 6, Step 606; [0145] S606: After receiving the rendering instruction stream, the context tracking module updates a local rendering context and sets a restoration point and a baseline snapshot.; [0011] By using the method, the server may send a set of rendering context differences to the electronic device, where the set of rendering context differences includes one or more rendering context differences, wherein the one rendering context difference is a difference between the second rendering context and one first rendering context. Therefore, the electronic device can obtain, based on the set of rendering context differences, a rendering instruction stream most recently generated by the server; [0019]; [0040]; [0130-134] comparison of objects to obtain a difference).
Regarding claim 10, Griffais teaches wherein the instructions, when executed by at least one processor, causes the first electronic device to:
identify the second instructions based on metadata including at least one of a size of the second instructions, an identifier of the game service corresponding to the second instructions ([0027] In Step 2, the client machines 104, at some point in time,…, may send information 110 to the remote system 106. The information 110 sent to the remote system 106, for a given client machine 104, may include the hardware configuration of the client machine 104, the application ID of the program (e.g., video game) executed on the client machine 104, and a set of shader IDs corresponding to the shaders that were compiled during execution of the program. The client machines 104 may generate the set of shader IDs upon reading the compiled shader code from the predefined memory location.), an identifier of the second processor, an identifier of an operating system of the second electronic device, a vendor identifier (ID) of the second electronic device, or an identifier of pipeline of the second processor corresponding to the second instructions.
Regarding claim 11, Griffais teaches wherein the metadata further comprises a hash value including at least one of an identifier of content corresponding to the second instructions, or a frequency in which the second instructions are used by the second processor ([0044] As shown at sub-block 238, the video game client 212 may also hash the machine code for the compiled shaders that is read from the cached entries, and this hash may be sent with the shader IDs (or shader keys) in a set of tuples (each tuple comprising a shader ID/key and a hash of the compiled machine code for the shader) to the remote system 106.).
Regarding claim 12, Griffais teaches wherein the instructions, when executed by at least one processor, causes the first electronic device to:
identify, in the memory, the second instructions in a block corresponding to the state, wherein the block further comprises information to be inputted to a pipeline of the second processor corresponding to the second instructions when the second instructions are executed by the second processor of the second electronic device ([0001] When these programs are executed in a graphics pipeline, the shaders output per-pixel values (e.g., color values) that are combined to create an image on the display with a desired visual effect. [0078] At 708, the client machine 104 may start executing a video game that uses shaders corresponding to the received shader code, at least a portion of which is cached at the predetermined memory location 218.; [0079] At 710, the client machine 104 may compile and cache shaders corresponding to the discarded shader code. This can be done during a loading screen, or during execution of the game in real-time. When it comes time to utilize shaders corresponding to the received shader code that was precached at block 706, the GPU 204 of the client machine 104 executes the compiled shader code in lieu of the graphics driver 216 compiling the corresponding shaders on its own, which conserves resources of the client machine 104.).
Regarding claim 13, Griffais teaches wherein the instructions, when executed by at least one processor, causes the first electronic device to:
transmit, in response to identification of the second instructions having a version former than a version of the first instructions that is indicated by the received information, another command signal indicating upload of the first instructions, and transmit, in response to identification of the second instructions having a version latter than a version of the first instructions that is indicated by the received information, another signal including a command for substitution of the first instructions based on the second instructions to the second electronic device ([0011] FIG. 7 is a flow diagram of an example process for implementing an integrity check by discarding a portion of downloaded shader code, re-compiling the shaders corresponding to the discarded shader code, and uploading information for the re-compiled shaders. [0028-30]; [0032] At Step 7, the client machine 104(N) precaches the compiled shader code 116 in a predetermined memory location for use during execution of the program (e.g., video game). By doing so, even though the client machine 104(N) may have never before compiled shaders for the particular program (e.g., video game) in question, the client machine 104(N) is now able to leverage the compiled shader code 116 received from the remote system 106, which was previously-compiled by another client machine 104 with the same hardware configuration during execution of the program on the other client machine 104. This eliminates a computationally-intensive processing step on the client machine 104(N) (i.e., the step(s) of compiling shaders), which saves processing resources on the client machine 104(N) during execution of the program thereon (e.g., faster load time, mitigation/elimination of in-game stuttering or hitching, etc.). Depending on the algorithms used by the remote system 106 and/or the popularity of a particular video game, compiled shader code for the new video game may be made available to requesting client machines 104 within hours, and possibly within minutes, of the game's release. This is because the shader code distribution may quickly ramp up when many users start playing the video game immediately upon its release. Furthermore, groups of test users may start to generate compiled shader code 116 even before a release date of the video game, which may make at least some compiled shader code 116 available to the first users of the general public when they start playing the game.).
Regarding claim 16, it is a method type claim having similar limitations as claim 1 above. Therefore the citations provided for claim 1 apply for claim 16.
Regarding claim 17, it is a method type claim having similar limitations as claim 10 above. Therefore it is rejected under the same rationale.
Regarding claim 18, it is a method type claim having similar limitations as claim 11 above. Therefore it is rejected under the same rationale.
Regarding claim 19, it is a method type claim having similar limitations as claim 12 above. Therefore it is rejected under the same rationale.
Regarding claim 20, it is a method type claim having similar limitations as claim 13 above. Therefore it is rejected under the same rationale.
Claim 15 is rejected under 35 U.S.C. 103 as being unpatentable over Griffais and Meng, as applied to claim 9, in further view of Pereira et al. (US 2013/0210528 A1).
Regarding claim 15, Griffais and Meng do not explicitly teach but Pereira teaches wherein the instructions, when executed by the at least one processor, causes the first electronic device to:
identify, from the memory of the first electronic device in response to identification of the first instructions corresponding to the state, a third instructions corresponding to another state that is distinct from the state among the plurality of states, and having a priority, among an order of priorities respectively assigned to the plurality of states, inferior to a priority of the state and transmit, in response to identification of the third instructions, the third instructions to the second electronic device (Abstract: A determination is made of respective probabilities for advancement from the current game state to a set of possible later game states. Game code required for the set of possible later game states is prioritized in accordance with the determined probabilities for advancement from the current game state to each of the set of possible later game states. Game code required for the set of possible later game states is transmitted from a sever computer system to the client computer system in order of the prioritized game code. [0032] In another embodiment, a non-transitory computer readable medium having program instructions stored thereon for implementing a method for execution probability based server-to-client transmission of game code is disclosed. The non-transitory computer readable medium includes program instructions for receiving a current game state of a game being executed on a client computer system from a subset of game code. The non-transitory computer readable medium also includes program instructions for determining respective probabilities for advancement from the current game state to a set of possible later game states. The non-transitory computer readable medium also includes program instructions for prioritizing game code required for the set of possible later game states, in accordance with the determined probabilities for advancement from the current game state to each of the set of possible later game states. The non-transitory computer readable medium also includes program instructions for transmitting game code required for the set of possible later game states, in order of the prioritized game code, from a sever computer system to the client computer system.).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the teachings of Pereira with the teachings of Griffais and Meng to determine, based on priority which game code is required for later game states. The modification would have been motivated by the desire of ensuring necessary data is available for optimized game play.
Response to Arguments
Applicant’s arguments with respect to claims 1-20 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JORGE A CHU JOY-DAVILA whose telephone number is (571)270-0692. The examiner can normally be reached Monday-Friday, 6:00am-5:00pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Aimee J Li can be reached at (571)272-4169. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/JORGE A CHU JOY-DAVILA/Primary Examiner, Art Unit 2195