Remote desktop system startup control method and related equipment

By obtaining the display mode status of the virtual graphics card, judging the loading status of the graphics card driver, and converting the frame cache image into a video stream file to send it to the client when it is not loaded, solving the problem of inefficient display updates in the boot stage of the remote desktop system, and achieving the smoothness of information screen updates.

CN115865908BActive Publication Date: 2025-03-04BEIJING VOLCANO ENGINE TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211555121.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-12-05
Publication Date
2025-03-04
Estimated Expiration
2042-12-05

AI Technical Summary

Technical Problem

The display update efficiency of the remote desktop system during the startup phase is inefficient, resulting in unsmooth update of the information screen.

Method used

Use the virtual graphics card emulator to obtain the display mode status of the virtual graphics card and determine whether the graphics card driver is loaded. If not loaded, the server acquires the frame cache image sent by the virtual graphics card and converts it into a video stream file to send it to the client.

Benefits of technology

It improves the fluency of update of information screens in the startup phase of the virtual machine operating system, and solves the problem of inefficient update of graphics commands.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115865908B_ABST
    Figure CN115865908B_ABST
Patent Text Reader

Abstract

The present disclosure provides a remote desktop system startup control method and related equipment. The method includes: receiving a startup signal sent by a client of a remote desktop system, controlling the startup of a virtual machine in response to the startup signal, wherein a virtual graphics card simulator, a virtual graphics card simulated by the virtual graphics card simulator, and a server of the remote desktop system are running in the virtual machine; obtaining the display mode state of the virtual graphics card through the virtual graphics card simulator, the display mode state is used to identify the current working state of the virtual graphics card; based on the display mode state, determining whether the graphics card driver of the virtual graphics card is loaded; in response to the graphics card driver not being loaded, sending a frame buffer image to the server through the virtual graphics card, and converting the frame buffer image into a video stream file through the server and sending it to the client. The present disclosure can solve the problem of unsmooth information screen update caused by low update efficiency of graphics commands in the startup phase of the virtual machine's operating system.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the field of Internet technology, and in particular to a remote desktop system startup control method and related equipment. Background Art

[0002] With the rapid development of computer technology and network technology, the application of remote desktop technology is becoming more and more widespread. The working principle of remote desktop technology is to send the content displayed on the screen of one device (i.e. desktop data) to the device at the other end through the network for display.

[0003] Cloud desktop technology is a specific application of remote desktop technology. It is based on a physical machine (such as a physical server) deployed in the cloud. Cloud desktop refers to presenting the desktop data of the virtual machine running on the physical machine on the terminal, that is, displaying it on the terminal.

[0004] However, currently the display update efficiency of remote desktop during the startup phase is inefficient. Summary of the invention

[0005] In view of this, the purpose of the present disclosure is to provide a remote desktop system startup control method and related devices.

[0006] Based on the above purpose, the first aspect of the present disclosure provides a remote desktop system startup control method, comprising:

[0007] Receiving a startup signal sent by a client of a remote desktop system, and controlling a virtual machine to start up in response to the startup signal, wherein a virtual graphics card simulator runs in the virtual machine, a virtual graphics card simulated by the virtual graphics card simulator, and a server of the remote desktop system;

[0008] Acquiring a display mode state of the virtual graphics card through the virtual graphics card simulator, wherein the display mode state is used to identify a current working state of the virtual graphics card;

[0009] Based on the display mode state, determining whether the graphics card driver of the virtual graphics card is loaded;

[0010] In response to the graphics card driver not being loaded, a frame buffer image is sent to the server through the virtual graphics card, and the frame buffer image is converted into a video stream file through the server and sent to the client.

[0011] In some embodiments, the display mode state includes a video graphics array display state and a native display state; and judging whether the graphics card driver of the virtual graphics card is loaded based on the display mode state includes at least one of the following:

[0012] In response to the virtual graphics card display mode being in a video graphics array display state, determining that the graphics card driver is not loaded;

[0013] In response to the current display mode state of the virtual graphics card being a video graphics array display state and the previous valid display mode state being a native display state, determining that the graphics card driver is not loaded;

[0014] In response to the current display mode state of the virtual graphics card being a native display state, determining that the graphics card driver has been loaded;

[0015] In response to the current display mode state of the virtual graphics card being a native display state and the previous valid display mode state being a video graphics array display state, it is determined that the graphics card driver has been loaded.

[0016] In some embodiments, the method further comprises:

[0017] In response to the graphics card driver being loaded, the server intercepts the graphics commands sent by the graphics card driver to the virtual graphics card, optimizes the graphics commands and sends them to the client.

[0018] In some embodiments, the optimizing the graphics commands includes:

[0019] The graphics command is optimized based on the graphics command tree, and at least part of the graphics included in the graphics command is clipped to reduce the graphics included in the graphics command.

[0020] In some embodiments, the method further comprises:

[0021] In response to the graphics card driver being loaded, the virtual graphics card is controlled to stop sending the frame buffer image to the server.

[0022] Optionally, in response to the graphics card driver not being loaded, the method further includes:

[0023] In some embodiments, the method further comprises:

[0024] Before the graphics card driver is loaded, the server is prohibited from sending the graphics command to the client.

[0025] A second aspect of the present disclosure further provides an electronic device, comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor implements the method described in the first aspect when executing the program.

[0026] The third aspect of the present disclosure further provides a remote desktop system startup control system, comprising:

[0027] Client; and,

[0028] An electronic device as described in the second aspect.

[0029] The fourth aspect of the present disclosure also provides a non-transitory computer-readable storage medium, which stores computer instructions, and the computer instructions are used to enable the computer to execute the method described in the first aspect.

[0030] A fifth aspect of the present disclosure also provides a computer program product, comprising a computer-readable storage medium storing instructions, wherein when the instructions are executed, at least one central processor unit of a computing device executes the method according to the first aspect.

[0031] From the above, it can be seen that the remote desktop system startup control and related equipment provided by the present invention obtain the display mode status of the virtual graphics card during the virtual machine startup phase, and determine whether the graphics card driver of the virtual graphics card is loaded based on the display mode status of the virtual graphics card. When the graphics card driver is not loaded, the server obtains the frame buffer image sent by the virtual graphics card and converts the frame buffer image into a video stream file and sends it to the client, thereby solving the problem of unsmooth information screen update caused by low update efficiency of graphics commands during the startup phase of the virtual machine's operating system. BRIEF DESCRIPTION OF THE DRAWINGS

[0032] In order to more clearly illustrate the technical solutions in the present disclosure or related technologies, the drawings required for use in the embodiments or related technical descriptions are briefly introduced below. Obviously, the drawings described below are only embodiments of the present disclosure. For ordinary technicians in this field, other drawings can be obtained based on these drawings without creative work.

[0033] Figure 1 A flowchart of a remote desktop system startup control method according to an embodiment of the present disclosure;

[0034] Figure 2 This is a structural block diagram of the remote desktop system startup control system described in an embodiment of the present disclosure;

[0035] Figure 3 A schematic diagram of the display mode state of the virtual graphics card according to an embodiment of the present disclosure;

[0036] Figure 4 Another flowchart of the remote desktop system startup control method according to an embodiment of the present disclosure;

[0037] Figure 5 It is a schematic diagram of the structure of an electronic device according to an embodiment of the present disclosure. DETAILED DESCRIPTION

[0038] In order to make the objectives, technical solutions and advantages of the present disclosure more clearly understood, the present disclosure is further described in detail below in combination with specific embodiments and with reference to the accompanying drawings.

[0039] It should be noted that, unless otherwise defined, the technical terms or scientific terms used in the embodiments of the present disclosure should be understood by people with ordinary skills in the field to which the present disclosure belongs. The "first", "second" and similar words used in the embodiments of the present disclosure do not indicate any order, quantity or importance, but are only used to distinguish different components. "Including" or "comprising" and similar words mean that the elements or objects appearing before the word cover the elements or objects listed after the word and their equivalents, without excluding other elements or objects. "Connect" or "connected" and similar words are not limited to physical or mechanical connections, but can include electrical connections, whether direct or indirect. "Up", "down", "left", "right" and the like are only used to indicate relative positional relationships. When the absolute position of the described object changes, the relative positional relationship may also change accordingly.

[0040] Remote desktop refers to presenting the desktop of a virtual machine running on a physical machine (i.e., the host machine) on a terminal, i.e., displaying it on a terminal (i.e., the client). The main working principle is to continuously capture desktop data such as the screen image and sound in the virtual machine, and transmit the desktop data to the terminal through the network, so that the terminal can display the desktop of the physical machine to the user.

[0041] The Simple Protocol for Independent Computing Environment (SPICE) is a remote desktop transmission protocol based on a virtualized environment. SPICE uses a display update strategy based on graphics commands to implement data transmission between a SPICE client and a SPICE server.

[0042] Specifically, a virtual machine is provided on the host machine, and the virtual machine includes a virtual graphics card simulator and a SPICE server, and the virtual graphics card simulator simulates a virtual graphics card. When realizing data transmission of a remote desktop, the SPICE server intercepts the graphics command through the virtual graphics card, optimizes the graphics command through the graphics command tree, and sends it to the SPICE client provided on the terminal based on the simple protocol of an independent computing environment. Among them, when optimizing the graphics command through the graphics command tree, the commands hidden by other commands can be deleted, so that the graphics commands of the pictures hidden behind other pictures that cannot be seen by the user are deleted, thereby saving the network bandwidth required for the subsequent transmission of graphics commands.

[0043] After receiving the optimized graphics command, the SPICE client can update the display content based on the operation code and operand in the graphics command, thereby realizing remote desktop display.

[0044] However, during the startup phase of the remote desktop operating system, since the virtual graphics card is in VGA (Video Graphics Array) compatible mode, the graphics card driver of the virtual graphics card has not yet been loaded in the virtual machine's operating system. At this time, the SPICE server cannot intercept the graphics commands from the virtual graphics card, and naturally cannot optimize the graphics commands. In this case, the virtual graphics card simulator directly obtains commands through the virtual graphics card in VGA compatible mode, and the update efficiency of graphics commands in this mode is low, resulting in the information screen displayed in a large number of pictures and text modes in the startup phase of the operating system. The screen is not updated smoothly and has tearing phenomenon, and the information is low in recognizability.

[0045] In view of this, the present disclosure provides a remote desktop system startup control method. Figure 1 As shown, the method includes:

[0046] Step S101, receiving a startup signal sent by a client of a remote desktop system, and controlling a virtual machine to start up in response to the startup signal, wherein a virtual graphics card simulator, a virtual graphics card simulated by the virtual graphics card simulator, and a server of the remote desktop system are running in the virtual machine.

[0047] Step S103: acquiring the display mode state of the virtual graphics card through the virtual graphics card simulator, where the display mode state is used to identify the current working state of the virtual graphics card.

[0048] Step S105: Based on the display mode status, determine whether the graphics card driver of the virtual graphics card is loaded.

[0049] Step S107, in response to the graphics card driver not being loaded, sending a frame buffer image to the server through the virtual graphics card, and converting the frame buffer image into a video stream file through the server and sending it to the client.

[0050] The remote desktop system startup control method described in the embodiment of the present disclosure obtains the display mode status of the virtual graphics card during the virtual machine startup phase, and determines whether the graphics card driver of the virtual graphics card is loaded based on the display mode status of the virtual graphics card. When the graphics card driver is not loaded, the server obtains the frame buffer image sent by the virtual graphics card and converts the frame buffer image into a video stream file and sends it to the client, thereby solving the problem of unsmooth information screen update caused by low update efficiency of graphics commands during the startup phase of the virtual machine's operating system.

[0051] Figure 2 The structure diagram of the remote desktop system startup control system described in the embodiment of the present disclosure is shown. Figure 2 The remote desktop system startup control system shown further illustrates the technical solution of the present disclosure.

[0052] like Figure 2 As shown, in this embodiment, the remote desktop system startup control system includes a host machine 100 and a client 200. Among them, a virtual machine and its operating system are installed on the host machine 100. A virtual graphics card simulator 101 and a server 103 are set in the virtual machine. The virtual graphics card simulator 101 simulates the virtual graphics card 102, and the virtual graphics card 102 is configured in the virtual machine in the form of a PCI (Peripheral Component Interconnect, a standard for defining a local bus) graphics card device. The virtual graphics card 102 is used to receive the virtual machine drawing command sent by the virtual graphics card driver, thereby realizing image rendering of the virtual machine desktop.

[0053] When the user needs to start the remote desktop, the client 200 of the remote desktop system installed on the terminal device can send a startup signal to the host machine 100. The terminal device can be a variety of electronic devices, including but not limited to desktop computers, portable computers, smart phones, and tablet computers. The client 200 (such as a browser) is installed on the terminal device, and the user sends a startup signal to the host machine 100 through the client 200.

[0054] After receiving the startup signal, the host machine 100 controls the virtual machine and its operating system to start up based on the startup signal. The virtual machine runs a virtual graphics card simulator 101, a virtual graphics card 102 simulated by the virtual graphics card simulator 101, and a server 103 of the remote desktop system. The virtual graphics card 102 can be a QXL virtual graphics card, and the server 103 can be a SPICE server.

[0055] At the same time, the display mode state of the virtual graphics card 102 is obtained through the virtual graphics card simulator 101 in the host machine 100, and whether the graphics card driver of the virtual graphics card 102 is loaded is determined based on the display mode state of the virtual graphics card 102. The display mode state is used to identify the current working state of the virtual graphics card 102.

[0056] When the host machine 100 determines that the graphics driver of the virtual graphics card 102 is not loaded, the virtual graphics driver cannot send a virtual machine drawing command to the virtual graphics card 102, and the server 103 cannot intercept the graphics command from the virtual graphics card 102, nor can it optimize the graphics command. At this time, the frame buffer image drawn in the virtual graphics card 102 can be sent to the server 103 through the virtual graphics card simulator 101, and the server 103 converts the frame buffer image into a video stream file, compresses and encapsulates the data, and then sends it to the client 200.

[0057] For example, the host machine 100 can capture the frame buffer image at a preset frequency (e.g., 30 FPS, i.e., 30 frames per second) to convert the frame buffer image into a video stream file, and then compress and encapsulate it and send it to the client 200. Afterwards, the client 200 decodes and displays the received data, thereby obtaining the corresponding video stream file for playback and display, ensuring smooth playback of the client 200.

[0058] In this embodiment, when the graphics card driver of the virtual graphics card 102 is not loaded, that is, the server 103 cannot optimize the graphics commands sent by the virtual graphics card 102, the frame buffer image in the virtual graphics card 102 is converted into a video stream file for sending. Compared with a large number of pictures that are not optimized and sent directly based on graphics commands, network traffic can be reduced, and it is avoided that a large amount of network bandwidth is occupied by directly transmitting a large number of pictures and content displayed in text mode based on graphics commands, resulting in unsmooth image updates on the client 200.

[0059] In some embodiments, the display mode state of the virtual graphics card 102 includes a video graphics array display state (i.e., VGA compatible mode) and a native display state (i.e., Native mode). The video graphics array display state is used to indicate that the virtual graphics card 102 is in a standard compatible mode state, and the native display state is used to indicate that the virtual graphics card 102 is in a controlled state.

[0060] For example, Figure 3 As shown, when the virtual graphics card 102 is a QXL virtual graphics card: the video graphics array display state of the virtual graphics card 102 can be a VGA (Video Graphics Array, video transmission standard) standard compatible mode state, and the virtual graphics card 102 being in the VGA standard compatible mode state indicates that the virtual graphics card 102 is in the VGA standard compatible mode state, that is, in a low-standard compatible video transmission state; the native display state of the virtual graphics card 102 can be a Native mode state, and the virtual graphics card 102 being in the Native mode state indicates that the graphics card driver of the QXL virtual graphics card has been loaded in the operating system of the virtual machine, and the QXL virtual graphics card is driven and controlled by the host machine 100.

[0061] Among them, the QXL virtual graphics card is a virtual graphics card implemented by the simulator. By installing the graphics card driver of the QXL virtual graphics card on the client, it appears as an ordinary graphics card in the virtual machine. When an application on the virtual machine needs to generate a rendering operation, for example, when the virtual machine operating system needs to generate a rendering operation of the desktop window image, the virtual machine operating system sends a request to the graphics engine (GDI / X) of the virtual machine, and the graphics engine transmits the command to the graphics card driver of the QXL virtual graphics card. The graphics card driver of the QXL virtual graphics card translates the command into a QXL command and pushes it into the message queue of the QXL virtual graphics card in the simulator, which is processed by the SPICE server and converted into the corresponding graphics command.

[0062] Therefore, based on the display mode status of the virtual graphics card 102, it can be determined whether the graphics card driver of the virtual graphics card is loaded.

[0063] In some embodiments, in response to the current display mode state of the virtual graphics card being a video graphics array display state, it is determined that the graphics card driver is not loaded.

[0064] In this embodiment, when the virtual graphics card 102 is in the video graphics array display state, it can be determined that the graphics card driver of the virtual graphics card 102 is not loaded. For example, when the virtual graphics card 102 is a QXL virtual graphics card and the QXL virtual graphics card is in the VGA standard compatible mode, the graphics card driver of the QXL virtual graphics card is not loaded.

[0065] In other embodiments, in response to the current display mode state of the virtual graphics card being a video graphics array display state and the previous valid display mode state being, it is determined that the graphics card driver is not loaded.

[0066] In this embodiment, when the current display mode state of the virtual graphics card 102 is the video graphics array display state, and the previous display mode state is the native display state, it can be determined that the graphics card driver of the virtual graphics card 102 is not loaded. For example, when the virtual graphics card 102 is a QXL virtual graphics card, and the QXL virtual graphics card is currently in the VGA standard compatible mode state, and the previous display mode state is the Native mode state, then the graphics card driver of the QXL virtual graphics card is not loaded.

[0067] Optionally, in this embodiment, the step of determining that the graphics card driver of the virtual graphics card is not loaded and executing step S107 is based on the fact that the current display mode state of the virtual graphics card 102 is the video graphics array display state and the previous display mode state is the native display state. This determination only needs to be performed when the display mode state of the virtual graphics card 102 is converted from the native display state to the video graphics array display state, and there is no need to continuously perform this determination, thereby reducing the system overhead. For example, assuming that the display mode state of the virtual graphics card 102 at the current moment (the tth moment) is the video graphics array display state, and the display mode state at the previous moment (the t-1th moment) is the native display state, and the display mode state at the next moment (the t+1th moment) is still the video graphics array display state, at the t+1th moment, since there is no display mode state switching, there is no need to perform the determination in step S105, and the host machine 100 continues to perform the steps when the virtual graphics card 102 is in the video graphics array display state.

[0068] Optionally, in this embodiment, the judgment in step S105 may be performed by the display mode conversion state machine of the virtual graphics card 102 to determine whether the graphics card driver of the virtual graphics card 102 is loaded.

[0069] In some embodiments, in response to the current display mode state of the virtual graphics card being a native display state, it is determined that the graphics card driver has been loaded.

[0070] In this embodiment, when the virtual graphics card 102 is in the native display state, it can be determined that the graphics card driver of the virtual graphics card 102 has been loaded. For example, when the virtual graphics card 102 is a QXL virtual graphics card and the QXL virtual graphics card is in the Native mode state, the graphics card driver of the QXL virtual graphics card has been loaded.

[0071] In other embodiments, in response to the current display mode state of the virtual graphics card being a native display state and the previous valid display mode state being a video graphics array display state, it is determined that the graphics card driver has been loaded.

[0072] In this embodiment, when the current display mode state of the virtual graphics card 102 is the native display state, and the previous display mode state is the video graphics array display state, it can be determined that the graphics card driver of the virtual graphics card 102 is not loaded. For example, when the virtual graphics card 102 is a QXL virtual graphics card, and the QXL virtual graphics card is currently in the Native mode state, and the previous display mode state is the VGA standard compatible mode state, then the graphics card driver of the QXL virtual graphics card is loaded.

[0073] Optionally, in some embodiments, the video graphics array display state and the native display state are valid mode states of the virtual graphics card 102. In fact, the virtual graphics card 102 also includes an invalid mode state. The invalid mode state is used to indicate that the virtual graphics card 102 has not been initialized, or is in an uncertain state due to display mode switching after initialization, or is a state after the device is reset. For example, when the virtual graphics card 102 is a QXL virtual graphics card, the invalid mode state of the virtual graphics card 102 can be an Invalid mode state. The initial state of the QXL virtual graphics card is the Invalid mode state.

[0074] During the startup phase of the virtual machine and its operating system in the host machine 100, the initial display mode state of the QXL virtual graphics card is an invalid mode state, i.e., the Invalid mode state. It will first be converted to the video graphics array display state, i.e., the VGA standard compatible mode state. After the display resolution of the virtual machine is adjusted, the display mode state of the QXL virtual graphics card returns to the Invalid mode state, and then enters the VGA standard compatible mode state again. This process can be repeated several times, thereby realizing the adjustment of the display resolution of the virtual machine during the startup phase.

[0075] After the operating system of the virtual machine loads the graphics driver of the QXL virtual graphics card, the display mode state of the QXL virtual graphics card changes back to the Invalid mode state, and then enters the Native mode state, indicating that the graphics driver of the QXL virtual graphics card has been loaded.

[0076] Therefore, the display mode state of the virtual graphics card 102 is converted from the native display state to the video graphics array display state, that is, the current display mode state of the virtual graphics card 102 is the video graphics array display state and the previous valid display mode state is the native display state. In fact, the display mode state of the virtual graphics card 102 can be converted from the native display state to the invalid mode state, and then from the invalid mode state to the video graphics array display state. For example, when the virtual graphics card 102 is a QXL virtual graphics card, when the QXL virtual graphics card is converted from the Native mode state in the valid mode state to the Invalid mode state in the invalid mode state, and then converted to the VGA standard compatible mode state in the current valid display mode state, the host machine 100 determines that the graphics card driver of the QXL virtual graphics card is not loaded.

[0077] In some embodiments, the host machine 100 only obtains the valid mode state of the virtual graphics card 102, so when the host machine 100 displays the mode conversion state machine to determine whether the graphics card driver of the virtual graphics card 102 is loaded, it includes:

[0078] In response to the current valid display state of the virtual graphics card being the video graphics array display state and the previous valid display state being the native display state, the graphics card driver of the virtual graphics card 102 is not loaded. That is, if the current valid display state of the QXL virtual graphics card is the VGA standard compatible mode state and the previous valid display state is the Native mode state, the graphics card driver of the QXL virtual graphics card is not loaded.

[0079] In response to the current valid display state of the virtual graphics card being the native display state and the previous valid display state being the video graphics array display state, the graphics card driver of the virtual graphics card 102 has been loaded. That is, if the current valid display state of the QXL virtual graphics card is the Native mode state and the previous valid display state is the VGA standard compatible mode state, the graphics card driver of the QXL virtual graphics card has been loaded.

[0080] For other situations, such as the current valid display state and the previous valid display state of the virtual graphics card are both the video graphics array display state, or the current valid display state of the virtual graphics card is the video graphics array display state and there is no previous valid display state, the graphics card driver of the virtual graphics card 102 is not loaded. For example, if the current valid display state and the previous valid display state of the QXL virtual graphics card are both the VGA standard compatible mode state, or the current valid display state of the QXL virtual graphics card is the VGA standard compatible mode state and there is no previous valid display state, the graphics card driver of the QXL virtual graphics card is not loaded.

[0081] Optionally, in the above embodiment, after the host machine 100 determines that the graphics driver has not been loaded, that is, before the graphics driver has been loaded, the host machine 100 prohibits the server 103 from sending the graphics command to the client 200, thereby avoiding any graphics command from being transmitted through the display channel between the server 103 and the client 200 and occupying a large amount of bandwidth.

[0082] In other embodiments, in response to the graphics card driver being loaded, the server intercepts graphics commands sent by the graphics card driver to the virtual graphics card, optimizes the graphics commands, and sends them to the client.

[0083] In this embodiment, when the host machine 100 determines that the graphics card driver of the virtual graphics card 102 has been loaded, the graphics card driver can send a drawing command to the virtual graphics card 102; at this time, the virtual graphics card emulator 101 no longer sends the frame cache image of the virtual graphics card 102 to the server 103. The server 103 can intercept the graphics command sent by the graphics card driver to the virtual graphics card 102, optimize the graphics command, and then send the optimized graphics command to the client 200.

[0084] Optionally, in this embodiment, the graphics command can be optimized based on the graphics command tree, and at least part of the graphics contained in the graphics command can be cropped to reduce the graphics contained in the graphics command and delete the commands hidden by other commands, so that the graphics commands of the pictures hidden behind other pictures and cannot be seen by the user are deleted, thereby saving the network bandwidth required for the subsequent transmission of graphics commands. That is, after the graphics card driver of the virtual graphics card is loaded, the graphics card driver allocates multiple drawing surfaces according to the PCI device BAR space resources of the graphics card, where: the main drawing surface represents the surface that needs to be displayed on the client, and the rest are off-screen surfaces, which cache the contents of each off-screen window to improve image display efficiency. The QXL virtual graphics card simulator will intercept the creation command of each surface, execute the corresponding creation operation, and further perform corresponding operations in the SPICE server.

[0085] Optionally, in the above embodiment, the server 103 is a SPICE server, the client 200 is a SPICE client, and the server 103 sends the video stream file or the second graphic command to the client 200 based on the simple protocol for independent computing environment, thereby realizing data transmission between the SPICE server and the SPICE client. The second graphic command is transmitted through the display channel between the SPICE server and the SPICE client; the video stream file can be transmitted through the display channel between the SPICE server and the SPICE client, or through other channels or protocols, which is not limited in this embodiment.

[0086] In some embodiments, the disclosed embodiments provide a remote desktop system startup control method, which is applied to a host machine 100. A virtual machine and its operating system are installed on the host machine 100. A QXL virtual graphics card simulator and a SPICE server are provided in the virtual machine, and a QXL virtual graphics card is simulated by the virtual graphics card simulator. Figure 4 As shown, the method includes:

[0087] Step S201, the QXL virtual graphics card simulator needs to determine whether the current virtual machine operating system has loaded the graphics card driver of the QXL virtual graphics card.

[0088] Step S202, the QXL virtual graphics card simulator determines that the virtual graphics card driver of the current virtual machine operating system is not loaded, provides driver loading status information to the SPICE server, and sends the drawn frame buffer image, otherwise executes step S203.

[0089] Step S203, the QXL virtual graphics card simulator determines that the graphics card driver of the QXL virtual graphics card of the current virtual machine operating system has been loaded, provides driver loading status information to the SPICE server, and stops sending the frame buffer image.

[0090] Step S204, the SPICE server receives the frame buffer image sent by the QXL virtual graphics card simulator, performs video stream compression encoding on the image, encapsulates it into a video data message in the SPICE protocol, and sends it to the SPICE client for display.

[0091] Step S205: the SPICE server queries the loading status of the virtual graphics card driver of the current virtual machine operating system.

[0092] Step S206, the SPICE server queries and finds that the graphics card driver of the QXL virtual graphics card of the current virtual machine operating system is not loaded, and prohibits the sending of graphics commands on the display channel, otherwise executes step S207.

[0093] Step S207, the SPICE server queries and finds that the virtual graphics card driver of the current virtual machine operating system has been loaded, so that the graphics command is sent on the display channel.

[0094] It should be noted that the method of the embodiment of the present disclosure can be performed by a single device, such as a computer or a server. The method of the present embodiment can also be applied in a distributed scenario and completed by multiple devices cooperating with each other. In the case of such a distributed scenario, one of the multiple devices can only perform one or more steps in the method of the embodiment of the present disclosure, and the multiple devices will interact with each other to complete the described method.

[0095] It should be noted that the above describes some embodiments of the present disclosure. Other embodiments are within the scope of the appended claims. In some cases, the actions or steps recorded in the claims can be performed in an order different from that in the above embodiments and still achieve the desired results. In addition, the processes depicted in the accompanying drawings do not necessarily require the specific order or continuous order shown to achieve the desired results. In some embodiments, multitasking and parallel processing are also possible or may be advantageous.

[0096] Based on the same inventive concept, corresponding to any of the above-mentioned embodiments and methods, the present disclosure also provides an electronic device, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein when the processor executes the program, the method described in any of the above embodiments is implemented.

[0097] Figure 5A more specific schematic diagram of the hardware structure of an electronic device provided in this embodiment is shown, and the device may include: a processor 1010, a memory 1020, an input / output interface 1030, a communication interface 1040, and a bus 1050. The processor 1010, the memory 1020, the input / output interface 1030, and the communication interface 1040 are connected to each other through the bus 1050 in the device.

[0098] The processor 1010 can be implemented by a general-purpose CPU (Central Processing Unit), a microprocessor, an application-specific integrated circuit (ASIC), or one or more integrated circuits, and is used to execute relevant programs to implement the technical solutions provided in the embodiments of this specification.

[0099] The memory 1020 may be implemented in the form of ROM (Read Only Memory), RAM (Random Access Memory), static storage device, dynamic storage device, etc. The memory 1020 may store an operating system and other application programs. When the technical solutions provided in the embodiments of this specification are implemented by software or firmware, the relevant program codes are stored in the memory 1020 and are called and executed by the processor 1010.

[0100] The input / output interface 1030 is used to connect the input / output module to realize information input and output. The input / output module can be configured in the device as a component (not shown in the figure), or it can be externally connected to the device to provide corresponding functions. The input device may include a keyboard, a mouse, a touch screen, a microphone, various sensors, etc., and the output device may include a display, a speaker, a vibrator, an indicator light, etc.

[0101] The communication interface 1040 is used to connect a communication module (not shown) to realize communication interaction between the device and other devices. The communication module can realize communication through a wired mode (such as USB, network cable, etc.) or a wireless mode (such as mobile network, WIFI, Bluetooth, etc.).

[0102] The bus 1050 includes a path that transmits information between the various components of the device (eg, the processor 1010, the memory 1020, the input / output interface 1030, and the communication interface 1040).

[0103] It should be noted that, although the above device only shows the processor 1010, the memory 1020, the input / output interface 1030, the communication interface 1040 and the bus 1050, in the specific implementation process, the device may also include other components necessary for normal operation. In addition, it can be understood by those skilled in the art that the above device may also only include the components necessary for implementing the embodiments of the present specification, and does not necessarily include all the components shown in the figure.

[0104] The electronic device of the above embodiment is used to implement the corresponding method in any of the above embodiments, and has the beneficial effects of the corresponding method embodiment, which will not be described in detail here.

[0105] Based on the same inventive concept, corresponding to any of the above-mentioned embodiments and methods, the present disclosure also provides a non-transitory computer-readable storage medium, wherein the non-transitory computer-readable storage medium stores computer instructions, and the computer instructions are used to enable the computer to execute the method described in any of the above embodiments.

[0106] The computer-readable medium of this embodiment includes permanent and non-permanent, removable and non-removable media, and information storage can be implemented by any method or technology. Information can be computer-readable instructions, data structures, modules of programs, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, read-only compact disk read-only memory (CD-ROM), digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices or any other non-transmission media that can be used to store information that can be accessed by a computing device.

[0107] The computer instructions stored in the storage medium of the above embodiments are used to enable the computer to execute the method described in any of the above embodiments, and have the beneficial effects of the corresponding method embodiments, which will not be repeated here.

[0108] Based on the same inventive concept, corresponding to any of the above-mentioned embodiments and methods, the present application also provides a computer program product, which includes a non-transitory tangible computer-readable medium having computer-readable instructions thereon. In some embodiments, the computer-readable instructions are executable by one or more processors so that the processors execute the method described. Corresponding to the execution subject corresponding to each step in each embodiment of the method, the processor that executes the corresponding step may belong to the corresponding execution subject.

[0109] The computer program product of the above embodiment is used to enable a processor to execute the method described in any of the above embodiments, and has the beneficial effects of the corresponding method embodiment, which will not be described in detail here.

[0110] Those skilled in the art should understand that the discussion of any of the above embodiments is merely illustrative and is not intended to imply that the scope of the present disclosure (including the claims) is limited to these examples. Based on the concept of the present disclosure, the technical features in the above embodiments or different embodiments may be combined, the steps may be implemented in any order, and there are many other variations of the different aspects of the embodiments of the present disclosure as described above, which are not provided in detail for the sake of simplicity.

[0111] In addition, to simplify the description and discussion, and in order not to make the embodiments of the present disclosure difficult to understand, the known power / ground connections to the integrated circuit (IC) chips and other components may or may not be shown in the provided figures. In addition, the device can be shown in the form of a block diagram to avoid making the embodiments of the present disclosure difficult to understand, and this also takes into account the fact that the details of the implementation of these block diagram devices are highly dependent on the platform on which the embodiments of the present disclosure will be implemented (that is, these details should be fully within the scope of understanding of those skilled in the art). Where specific details (e.g., circuits) are set forth to describe exemplary embodiments of the present disclosure, it is apparent to those skilled in the art that the embodiments of the present disclosure can be implemented without these specific details or with changes in these specific details. Therefore, these descriptions should be considered illustrative rather than restrictive.

[0112] Although the present disclosure has been described in conjunction with specific embodiments of the present disclosure, many replacements, modifications and variations of these embodiments will be apparent to those skilled in the art from the foregoing description. For example, other memory architectures (e.g., dynamic RAM (DRAM)) may use the embodiments discussed.

[0113] The embodiments of the present disclosure are intended to cover all such substitutions, modifications and variations that fall within the broad scope of the appended claims. Therefore, any omissions, modifications, equivalent substitutions, improvements, etc. made within the spirit and principles of the embodiments of the present disclosure should be included in the scope of protection of the present disclosure.

Claims

1. A remote desktop system startup control method, characterized in that: include: Receiving a startup signal sent by a client of a remote desktop system, and controlling a virtual machine to start up in response to the startup signal, wherein a virtual graphics card simulator runs in the virtual machine, a virtual graphics card simulated by the virtual graphics card simulator, and a server of the remote desktop system; Acquiring a display mode state of the virtual graphics card through the virtual graphics card simulator, wherein the display mode state is used to identify a current working state of the virtual graphics card, and the display mode state includes a VGA standard compatible mode state and a Native mode state; Based on the display mode state, determining whether the graphics card driver of the virtual graphics card is loaded; In response to the graphics card driver not being loaded, sending a frame buffer image to the server through the virtual graphics card, and converting the frame buffer image into a video stream file through the server and sending the file to the client; In response to the graphics card driver being loaded, the server intercepts the graphics commands sent by the graphics card driver to the virtual graphics card, optimizes the graphics commands and sends them to the client.

2. The method according to claim 1, characterized in that The step of determining whether the graphics card driver of the virtual graphics card is loaded based on the display mode state includes at least one of the following: In response to the current display mode state of the virtual graphics card being a VGA standard compatible mode state, determining that the graphics card driver is not loaded; In response to the current display mode state of the virtual graphics card being a VGA standard compatible mode state and the previous valid display mode state being a Native mode state, determining that the graphics card driver is not loaded; In response to the current display mode state of the virtual graphics card being a Native mode state, determining that the graphics card driver has been loaded; In response to the current display mode state of the virtual graphics card being the Native mode state and the previous valid display mode state being the VGA standard compatible mode state, it is determined that the graphics card driver has been loaded.

3. The method according to claim 1, characterized in that The optimizing of the graphics command comprises: The graphics command is optimized based on the graphics command tree, and at least part of the graphics included in the graphics command is clipped to reduce the graphics included in the graphics command.

4. The method according to claim 1, characterized in that: Also includes: In response to the graphics card driver being loaded, the virtual graphics card is controlled to stop sending the frame buffer image to the server.

5. The method according to claim 1, characterized in that: Also includes: Before the graphics card driver is loaded, the server is prohibited from sending the graphics command to the client.

6. An electronic device comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that: When the processor executes the program, the method according to any one of claims 1 to 5 is implemented.

7. A remote desktop system startup control system, characterized in that: include: A client, configured to generate a start signal; as well as, The electronic device as claimed in claim 6.

8. A non-transitory computer-readable storage medium storing computer instructions, characterized in that: The computer instructions are used to enable the computer to execute the method according to any one of claims 1 to 5.

9. A computer program product, comprising a computer-readable storage medium storing instructions, characterized in that: The instructions, when executed, cause at least one central processor unit of a computing device to perform a method according to any one of claims 1 to 5.

Citation Information

Patent Citations

  • Picture display method and system based on virtualization technology

    CN102725736A

  • Method and system for realizing 3D capability of cloud desktop virtual machine

    CN111381914A