Multi-screen splicing system and multi-screen splicing method
By implementing the resolution calculation of the virtual screen and the determination of the storage address of the physical screen at the GPU driver layer, the compatibility problem of multi-screen splicing technology under different Linux systems is solved, achieving cross-operating system compatibility and flexible display layout control.
Patent Information
- Application Number
- CN202511069667.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-07-31
- Publication Date
- 2025-11-11
AI Technical Summary
Existing multi-screen splicing technologies have poor compatibility across different Linux operating systems, requiring adaptation for each system and leading to compatibility issues.
The core logic of multi-screen splicing is placed in the GPU driver layer. It interacts with the hardware through the DRM and KMS frameworks, independently completes the resolution calculation of the virtual screen and the determination of the storage address of the physical screen, generates screen plug-in and unplug events of the virtual screen, and requests video memory buffers in the graphics display service to achieve cross-operating system compatibility.
It improves cross-operating system multi-screen splicing compatibility, avoids dependence on graphics display services, is applicable to different Linux systems, and does not require adaptation for each operating system.
Smart Images

Figure CN120929037A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of multi-screen splicing display technology, and in particular to a multi-screen splicing system and a multi-screen splicing method. Background Technology
[0002] Multi-screen splicing technology aims to combine multiple physical display devices into a logically unified display area, expanding the visible workspace or creating large-size displays. This technology is widely used in professional scenarios such as financial transaction monitoring, industrial control centers, and digital advertising displays. By integrating multiple displays to output continuous images, it significantly improves information capacity and operational efficiency. Traditional implementations rely on the operating system's underlying graphics display architecture to coordinate the synchronous output of each physical screen, involving key technical aspects such as display signal processing, spatial coordinate mapping, and synchronous image rendering.
[0003] The current mainstream method for multi-screen splicing in Linux systems is for users to send multi-screen splicing requests to the graphics display service via command-line tools, and the graphics display service then implements the multi-screen splicing. This method relies on the virtual screen splicing capabilities of the graphics display service and the functional support of the command-line tools.
[0004] Because different Linux systems (such as Tongxin, Galaxy Kylin, and HarmonyOS) have different versions of graphics display services, command-line tools, and supported functions, existing multi-screen splicing technologies have poor compatibility and need to be adapted for each operating system. Summary of the Invention
[0005] This disclosure provides a multi-screen splicing system and a multi-screen splicing method; it can splice multiple physical screens into a single virtual screen under different operating systems.
[0006] The technical solution disclosed herein is implemented as follows: In a first aspect, this disclosure provides a multi-screen splicing system, which includes: a GPU driver, a graphics card, multiple physical screens, and a graphics display service; the GPU driver is used to generate the resolution of a virtual screen based on screen splicing instructions and the resolution of each physical screen; and to convert screen plug-in / plug events of multiple physical screens into screen plug-in / plug events of the virtual screen and send them to the graphics display service; and to request a continuous complete image frame buffer matching the resolution of the virtual screen from the graphics card's video memory based on a video memory request sent by the graphics display service; and to determine the sub-image frame buffer corresponding to each physical screen in the complete image frame buffer according to the complete image frame buffer, the resolution of each physical screen, and the screen splicing instructions.
[0007] Secondly, this disclosure provides a multi-screen splicing method applied to a GPU driver. The multi-screen splicing method includes: generating a virtual screen resolution based on screen splicing instructions and the resolutions of each physical screen; converting screen plug-in / plug events of multiple physical screens into screen plug-in / plug events of the virtual screen and sending them to a graphics display service; requesting a continuous complete image frame buffer matching the resolution of the virtual screen from the graphics card's video memory based on a video memory request sent by the graphics display service; and determining a sub-image frame buffer corresponding to each physical screen in the complete image frame buffer according to the complete image frame buffer, the resolutions of each physical screen, and the screen splicing instructions.
[0008] Thirdly, this disclosure provides a multi-screen splicing device, which includes: a generation section, a conversion and transmission section, an application section, and a determination section; the generation section is configured to generate the resolution of a virtual screen based on screen splicing instructions and the resolution of each physical screen; the conversion and transmission section converts screen plug-in / plug events of multiple physical screens into screen plug-in / plug events of the virtual screen and sends them to a graphics display service; the application section is configured to apply for a continuous complete image frame buffer matching the resolution of the virtual screen from the graphics card's video memory based on a video memory application request sent by the graphics display service; the determination section is configured to determine the sub-image frame buffer corresponding to each physical screen in the complete image frame buffer according to the complete image frame buffer, the resolution of each physical screen, and the screen splicing instructions.
[0009] Fourthly, this disclosure provides an electronic device including a processor, a memory, and a program or instructions stored in the memory and executable on the processor, wherein the program or instructions, when executed by the processor, implement the steps of the multi-screen splicing method as described in the second aspect.
[0010] Fifthly, this disclosure provides a computer-readable storage medium on which a program or instructions are stored, which, when executed by a processor, implement the steps of the multi-screen splicing method as described in the second aspect.
[0011] In a sixth aspect, this disclosure provides a computer program product, wherein the computer program product includes a computer program or instructions, and when the computer program product is run on a processor, the processor executes the computer program or instructions to implement the steps of the multi-screen splicing method as described in the second aspect.
[0012] This disclosure provides a multi-screen splicing system. By placing the core logic of multi-screen splicing within the GPU driver, this embodiment fundamentally improves cross-operating system compatibility. This is because the GPU driver resides in the Linux kernel layer and interacts with the hardware through the DRM (Direct Rendering Manager) and KMS (Kernel Mode Setting) frameworks. All API interfaces of this framework exhibit consistent behavior across different Linux systems (such as UnionTech, Kylin, and HarmonyOS). In this embodiment, the GPU driver independently calculates the resolution of the virtual screen and determines the corresponding storage address in video memory for each physical screen. Thus, the display controller of each physical screen directly reads sub-image frame data from the corresponding address and outputs it to the corresponding physical screen, thereby completing the splicing of multiple physical screens. This process does not rely on the graphics display service. The graphics display services of different operating systems only passively receive screen plug-in / plug-out events from a virtual screen. The graphics display service handles these virtual screen plug-in / plug-out events in the same way as hardware hot-plug events connected to a real physical screen, requiring no adaptation. Therefore, this multi-screen splicing method is applicable to different operating systems. Attached Figure Description
[0013] Figure 1 This is a schematic diagram of the structure of a multi-screen splicing system provided in this disclosure.
[0014] Figure 2 This is a schematic diagram illustrating the principle of determining the resolution of a virtual screen as provided in this disclosure.
[0015] Figure 3 This is a schematic diagram of another multi-screen splicing system provided in this disclosure.
[0016] Figure 4 This is a schematic diagram of a visual interface provided in this disclosure.
[0017] Figure 5 This is another visual interface diagram provided in this disclosure.
[0018] Figure 6 This is a schematic diagram illustrating the misalignment of multiple physical screens at the seams provided in this disclosure.
[0019] Figure 7 This is a schematic diagram showing multiple physical screens continuous at the seams provided in this disclosure.
[0020] Figure 8 This is a flowchart illustrating a multi-screen splicing method provided in this disclosure.
[0021] Figure 9 This is a structural block diagram of a multi-screen splicing device provided in this disclosure.
[0022] Figure 10 This is a schematic diagram of the hardware structure of an electronic device provided in this disclosure. Detailed Implementation
[0023] The technical solutions in the embodiments of this disclosure will be clearly described below with reference to the accompanying drawings. Obviously, the described embodiments are only some, not all, of the embodiments of this disclosure. All other embodiments obtained by those skilled in the art based on the embodiments of this disclosure are within the scope of protection of this disclosure.
[0024] The technical implementation of multi-screen splicing mainly relies on command-line tools (such as xrandr in X11) and graphics display services (such as X server and Wayland compositor), both of which reside at the application layer. However, the implementation of graphics display services varies significantly across different operating systems. For example, Tongxin's graphics display service is the Xorg service, which only supports layout of multiple physical screens according to a few preset modes (such as landscape and portrait). Galaxy Kylin's graphics display service is Wayland, which does not support the traditional xrandr command. HarmonyOS's graphics display service uses a self-developed rendering engine and cannot use the xrandr command. This leads to the possibility of failure or splicing errors for the same multi-screen splicing request on different operating systems.
[0025] The fundamental reason is that in the relevant multi-screen splicing technology, the core control is completely handed over to the graphics display service. The specific process is as follows: the graphics display service calculates the layout (position, resolution) of the physical screen, creates the corresponding virtual screen, and reports the size and segmentation rules of the virtual screen to the GPU driver. The GPU driver passively configures the display controller and frame buffer segmentation according to the reported parameters, and the graphics card hardware outputs the image to the physical screen according to the configuration.
[0026] This screen splicing technology deeply couples the creation and management logic of virtual screens into the graphics display service layer. However, different operating systems have incompatible graphics display services: protocol incompatibility (e.g., Wayland removes the XRandR extension), and fragmented functionality (e.g., Tongxin's Xorg only supports basic splicing, while Galaxy Kylin's Wayland requires custom development). This results in poor compatibility of existing multi-screen splicing technologies, with the behavior of the same splicing command being completely unpredictable across different operating systems, requiring developers to rewrite the adaptation layer for each operating system.
[0027] Addressing the issue of poor compatibility in multi-screen splicing systems that rely on graphics display services, this disclosure aims to provide a multi-screen splicing system compatible with different operating systems. For example... Figure 1As shown, the multi-screen splicing system 10 includes: a GPU driver 20, a graphics card 30, and physical screens 1 to N (integers greater than 1), and a graphics display service 40. The GPU driver 20 is used to perform steps S101 to S104 as described below.
[0028] S101. Based on the screen splicing instructions and the resolution of each physical screen, generate the resolution of the virtual screen.
[0029] A screen splicing command is a request initiated by the user or operating system to combine multiple physical screens into a single virtual screen. It is a binary standard command recognizable by the GPU driver. For example, a screen splicing command requests that two physical screens be combined into a larger virtual screen.
[0030] A physical screen refers to the physical display of the hardware that the operating system is actually connected to. The resolution of a physical screen is determined based on its original resolution, which can be either the original resolution or a compensated resolution. Each physical screen has a built-in storage module that stores attributes such as the screen's manufacturer, original resolution, color gamut, and interface type. The GPU driver 20 reads the original resolution of each physical screen from its built-in storage module via the graphics card 30. For example, there are two physical screens connected to the GPU driver 20: Physical Screen 1, resolution: 1020×1080; and Physical Screen 2, resolution: 1020×1080.
[0031] A virtual screen refers to a combination of multiple physical screens arranged in a specific layout. The resolution of a virtual screen refers to its total pixel size. The resolution of the virtual screen is generated based on the screen splicing instructions and the resolutions of each physical screen. Specifically, the arrangement method is adaptively determined according to the screen splicing instructions. For example, two screens are spliced horizontally by default, and three screens are spliced vertically by default. According to the arrangement method, the total width and total height of each physical screen after splicing are determined. The height of the virtual screen is greater than or equal to the total height, and the width of the virtual screen is greater than or equal to the total width.
[0032] S102. Convert the screen plug-in / plug events of multiple physical screens into screen plug-in / plug events of virtual screens and send them to the graphics display service.
[0033] Screen plug-in / plug-out events are standardized status notifications sent by the GPU driver 20 to the graphics display service 40. These virtual screen plug-in / plug-out events simulate the connection or disconnection behavior of physical screens. When the GPU driver 20 detects screen plug-in / plug-out events for each physical screen that needs to be tiled, it does not report them to the graphics display service 40. Instead, it converts these events into a single virtual screen plug-in / plug-out event and reports it to the application-layer graphics display service 40, notifying the service that a new screen has been connected.
[0034] S103. Based on the video memory request sent by the graphics display service, request a continuous complete image frame buffer from the video memory of the graphics card that matches the resolution of the virtual screen.
[0035] A complete image frame buffer refers to a contiguous storage area in video memory that can accommodate the resolution of the virtual screen. For example, if the resolution of the virtual screen is 5120×2880 and each pixel occupies 4 bytes, then the size of the complete image frame buffer is 5120×2880×4.
[0036] Based on the screen plugging and unplugging events of the virtual screen, the graphics display service 40 obtains the resolution of the virtual screen from the GPU driver 20, and generates a video memory allocation request based on the resolution of the virtual screen. The video memory allocation request is used to request the GPU driver 20 to allocate a continuous complete image frame buffer from the video memory that matches the resolution of the virtual screen.
[0037] Based on the screen plug-in / plug events of the virtual screen, the graphics display service 40 notifies the application layer's window manager to rearrange all windows, such as automatically stretching the currently open map application to match the virtual screen, and notifies the application layer's rendering compositor to write all rendering output to the full image frame buffer allocated by the GPU driver 20. During this process, the graphics display service 40 of different operating systems only needs to receive notifications of the standardized virtual screen's screen plug-in / plug events and manage the virtual screen as a regular physical screen. For example, for the Wayland compositor in Kylin OS, the GPU driver 20 generates a 5760×1080 virtual screen and sends the virtual screen's screen plug-in / plug events to the Wayland compositor. For the Wayland compositor, the screen plug-in / plug events of this virtual screen are exactly the same as the hot-plug events of a connected real physical screen; this process requires no adaptation code.
[0038] S104. Based on the complete image frame buffer, the resolution of each physical screen, and the screen splicing instructions, determine the sub-image frame buffer corresponding to each physical screen in the complete image frame buffer.
[0039] A sub-image frame buffer refers to a logical subset of the complete frame buffer, that is, a portion of the complete frame buffer. Based on the complete image frame buffer, the resolution of each physical screen, and the screen stitching instructions, the sub-image frame buffer corresponding to each physical screen within the complete image frame buffer is determined. This can be understood as the GPU driver 20 dividing a complete image frame into multiple sub-image frames and configuring the display controllers of each physical screen, binding each physical screen's display controller to the address of its corresponding sub-image frame. Thus, after rendering a complete image frame and storing it in the complete frame buffer, the GPU driver 20 synchronously pushes the data in each sub-image frame buffer to the display controller corresponding to each physical display screen. The display controller then outputs the data in the sub-image frame buffer to the corresponding physical screen for display via a video interface (HDMI or DP, etc.), thereby ensuring synchronous refresh of each physical screen and avoiding screen tearing.
[0040] Based on the resolution of each physical screen and the screen splicing instructions, the address offset corresponding to the pixel row of each physical screen is determined. The column length of pixels after the address offset corresponding to all pixel rows of each physical screen is determined as the sub-image frame buffer of each physical screen. The column length of pixels refers to the storage space that can be stored in the resolution of the physical screen that matches the width. For example, if the resolution of the physical screen is 1020×1080, then the column length of pixels refers to the storage space that can be stored for 1080 pixels.
[0041] For example, the resolution of the four physical screens is 2560×1440, and they are stitched together in a 2×2 grid. The resolution of the virtual screen is 5120×2880. Assuming that one pixel occupies 4 bytes, the complete frame buffer is determined to be from 0x00000000 to 0x03840000. Then, the first segment of 1440×4 bytes stores the first row of pixel data of physical screen 1, the second segment of 1440×4 bytes stores the first row of pixel data of physical screen 2, the third segment of 1440×4 bytes stores the second row of pixel data of physical screen 1, the fourth segment of 1440×4 bytes stores the second row of pixel data of physical screen 2, and so on. The 5119th segment of 1440×4 bytes stores the last row of pixel data of physical screen 1, and the 5120th segment of 1440×4 bytes stores the last row of pixel data of physical screen 2. The 5121st segment (1440×4 bytes) stores the first row of pixel data for physical screen 3, the 5122nd segment (1440×4 bytes) stores the first row of pixel data for physical screen 4, and so on. The 10239th segment (1440×4 bytes) stores the last row of pixel data for physical screen 3, and the 10240th segment (1440×4 bytes) stores the last row of pixel data for physical screen 4.
[0042] This disclosure improves cross-operating system compatibility by placing the core logic of multi-screen splicing in the GPU driver. This is because the GPU driver resides in the Linux kernel layer and interacts with the hardware through the DRM (Direct Rendering Manager) and KMS (Kernel Mode Setting) frameworks. All API interfaces of this framework exhibit consistent behavior across different Linux systems (such as UnionTech, Kylin, and HarmonyOS). In this disclosure, the GPU driver independently calculates the resolution of the virtual screen and determines the corresponding storage address in video memory for each physical screen. Thus, the display controller of each physical screen directly reads sub-image frame data from the corresponding address and outputs it to the corresponding physical screen, completing the splicing of multiple physical screens. This process does not rely on the graphics display service. The graphics display services of different operating systems only passively receive screen plug-in / plug-out events for a single virtual screen. The graphics display service handles these virtual screen plug-in / plug-out events in the same way as hardware hot-plug events connected to a real physical screen, requiring no adaptation. Therefore, this multi-screen splicing method is applicable to different operating systems.
[0043] Understandably, in one scenario, the screen splicing instruction includes the arrangement method, in which case the default is to splice all physical screens connected to the operating system into a single virtual screen.
[0044] GPU driver 20 is used to sum the widths of the individual physical screens after splicing, according to the arrangement, to obtain the width in the resolution of the virtual screen, and to sum the heights of the individual physical screens after splicing, to obtain the height in the resolution of the virtual screen.
[0045] The arrangement method refers to how the physical screens that need to be spliced are arranged. For example, if the arrangement method is horizontal, all physical screens connected to the operating system will be arranged in a row. If the arrangement method is 3×2, all physical screens connected to the operating system will be arranged in three rows and two columns.
[0046] After arranging all physical screens according to the specified pattern, the total width of all physical screens is the width of the virtual screen's resolution, and the height of each physical screen is the height of the virtual screen's resolution. The width and height of the physical screens are measured in pixels. For example... Figure 2 As shown, physical screens 202 and 203 are horizontally spliced to form a virtual screen 201. The resolution of the physical screens 202 and 203 is 1920×1080. The height of the spliced virtual screen 201 is 1080 and the width is 3840, that is, the resolution of the virtual screen 201 is 3840×1080.
[0047] In another scenario, the screen splicing instruction includes: the identifiers of the physical screens that make up the virtual screen, and their arrangement. In this case, instead of splicing all the physical screens connected to the operating system, all the physical screens are grouped, and each group of physical screens is spliced into a virtual screen. Alternatively, some of the physical screens are spliced into a virtual screen, and the remaining physical screens do not participate in the screen splicing.
[0048] GPU driver 20 is used to identify multiple physical screens to be stitched together based on the physical screen identifiers; according to the arrangement, the widths of the multiple physical screens to be stitched together are summed to obtain the width in the resolution of the virtual screen, and the heights of the multiple physical screens to be stitched together are summed to obtain the height in the resolution of the virtual screen.
[0049] The physical screen identifier refers to the unique identifier of each physical screen that needs to be spliced. Based on the physical screen identifiers included in the screen splicing instructions, the physical screens to be spliced are determined, and multiple physical screens to be spliced are spliced according to the arrangement. After splicing, the resolution of the virtual screen is determined.
[0050] It should be noted that the screen splicing command may include: the identifiers and arrangement of multiple physical screens that make up the virtual screen, that is, by using a screen splicing command, all physical screens can be divided into multiple groups, and each group can be spliced into a virtual screen.
[0051] In this embodiment, traditional solutions are limited by the closed architecture of graphics display services across different operating systems, supporting only the merging of all physical screens into a single virtual screen and unable to flexibly configure the display layout according to different scenarios. In contrast, in this embodiment, the GPU driver can adaptively determine whether to perform splicing of all physical screens or selective group splicing based on the specific content of the screen splicing instruction. Group splicing allows multiple independent virtual screens to coexist within the same operating system (e.g., physical screen 1 and physical screen 2 form virtual screen A, and physical screen 3 and physical screen 4 form virtual screen B), while also retaining some of the native display capabilities of the physical screens. This fine-grained control ensures multi-screen content collaboration while also taking into account independent operation needs, making it suitable for various application scenarios.
[0052] In some embodiments, such as Figure 3 As shown, the multi-screen splicing system also includes a user interface 60 and a protocol conversion unit 50. The user interface 60 is used to perform the following step S301, and the protocol conversion unit 50 is used to perform the following steps S302 and S303.
[0053] S301. Based on the received user screen splicing operation, generate screen splicing configuration parameters and send them to the protocol conversion unit.
[0054] User interface 60 provides a visual interface located at the user layer (application layer). User screen splicing operation refers to the operation of splicing multiple physical screens sent by the user through the visual interface. User interface 60 captures the user screen splicing operation, and protocol conversion unit 50 describes the structured data of the splicing layout of multiple physical screens, i.e., screen splicing configuration parameters. This user interface 60 facilitates more intuitive and simple operation for users.
[0055] For example. As Figure 4 As shown, the visual interface 40 provided for the user interface 60 includes an "Add Group" control 401; clicking the "Add Group" control 401 generates a group, as shown in the "Group 1" control 402, indicating that a group 1 has been added; clicking the "..." in the "Group 1" control 402... The expandable shape control 403 displays a list of all physical screens connected to the current operating system. The image shows a list of physical screens 403 including screens 1 to 3. Clicking on the physical screen to be stitched in group 1 adds the corresponding physical screen to the "Group 1" control 402. The image shows "Screen 1" clicked as an example. The "Arrangement" control 404 allows the user to select how the physical screens are laid out. The image shows a 2×1 layout, i.e., two physical screens stitched horizontally. The "Group Stitching" control 405 indicates stitching according to groups, and the "Style" control 406 indicates stitching all physical screens together. It should be noted that if the user does not perform any operation and directly clicks the "Style" control 406, all physical screens will be stitched into a single virtual screen using the default arrangement.
[0056] S302. Based on the received screen splicing configuration parameters, send screen splicing instructions to the GPU driver.
[0057] The protocol conversion unit 50 is located at the system layer and can communicate with the GPU driver 20 at the kernel layer. It is used to parse the screen splicing configuration parameters and generate binary instructions that can be executed by the GPU driver 20, namely screen splicing instructions, to ensure that the GPU driver 20 can recognize them.
[0058] S303 stores screen splicing instructions and sends them to the GPU driver when the operating system starts.
[0059] Compared to traditional solutions that require users to manually reconfigure splicing parameters or execute command-line operations, this embodiment uses a protocol conversion unit 50 to encrypt and store the current screen splicing instructions in a local configuration file before powering off. When the operating system restarts, the protocol conversion unit 50 automatically reads this configuration and sends it to the GPU driver 20, which then reconstructs the virtual screen layout according to the screen splicing instructions. This process requires no user intervention, eliminating the risk of display layout interruption due to restarts.
[0060] Because misalignment may occur at the seams during the splicing process of the physical screens, resulting in image misalignment at the seams when the same complete image frame is displayed on the virtual screen, some embodiments include a splicing compensation amount for each physical screen in the screen splicing instruction; the GPU driver 20 is used to update the resolution of each physical screen based on the splicing compensation amount corresponding to each physical screen.
[0061] The stitching compensation amount refers to the pixel-level parameters used to correct image misalignment between physical screens, including horizontal and vertical offsets. Adding the corresponding stitching compensation amount to the original resolution of each physical screen yields the updated resolution for that screen. For example, if physical screen 1's original resolution is 3840×2160, the corresponding stitching compensation amount is a horizontal offset of 3 pixels to the left to eliminate gaps, and a vertical offset of 1 pixel to the bottom edge to align with the bottom edge.
[0062] The splicing compensation amount can be determined by pre-combining physical screens in different arrangements, determining and saving the splicing compensation amount for each combination of physical screens under each arrangement, and then determining the splicing compensation amount for each physical screen based on the current arrangement and physical screen combination.
[0063] If the splicing compensation amount for each physical screen corresponding to the current arrangement and physical screen combination is not stored, the user interface 60 can also display a standard graphic on the virtual screen, and the part standard graphics displayed on each physical screen that makes up the virtual screen together form a complete standard graphic; and adjust the display offset of the physical screens that make up the virtual screen until the pixels of the standard graphic at the seams between the physical screens are continuous, so as to obtain the splicing compensation amount corresponding to each physical screen that makes up the virtual screen.
[0064] Standard graphics refer to test graphics stored in the user interface 60, such as triangles, squares, and circles. If the user finds that the complete image frames displayed on the virtual screen are misaligned at the seams of the physical screens, such as... Figure 5 As shown, you can click the "Calibration" control 407 to bring up a pop-up window. Figure 6 The interface shown. Standard graphic 408 is a triangle. In the virtual screen 411, where the original resolutions of physical screens 409 and 410 are spliced together, standard graphic 408 is misaligned at the seam. This can be corrected by adjusting the rectangular dot-filled slider 412, which allows horizontal or vertical movement of a portion of the standard graphic on the physical screen. When visually it is determined that there is no misalignment at the seam, as... Figure 7As shown, clicking the "OK" control 413 allows the user interface 60 to record the current splicing compensation amount for each physical screen. This allows for real-time resolution compensation of each physical screen during practical applications, ensuring that the complete image frame displayed on the virtual screen is perfectly aligned at the seams of the physical screens, resulting in a smoother display.
[0065] like Figure 8 As shown, this disclosure also provides a multi-screen splicing method. The following example, using a GPU driver as the execution entity, illustrates the multi-screen splicing method provided by this disclosure. This multi-screen splicing method may include the following steps S801 to S804.
[0066] S801 generates the resolution of the virtual screen based on the screen splicing instructions and the resolution of each physical screen.
[0067] S802: Convert the screen plug-in / plug events of multiple physical screens into screen plug-in / plug events of virtual screens and send them to the graphics display service.
[0068] S803: Based on the video memory request sent by the graphics display service, request a continuous complete image frame buffer from the video memory of the graphics card that matches the resolution of the virtual screen.
[0069] S804. Based on the complete image frame buffer, the resolution of each physical screen, and the screen splicing instructions, determine the sub-image frame buffer corresponding to each physical screen in the complete image frame buffer.
[0070] In some embodiments, the virtual screen consists of all physical screens connected to the GPU driver; the screen splicing instruction includes: arrangement method; the above step 801 may include: according to the arrangement method, summing the widths of the spliced physical screens to obtain the width in the resolution of the virtual screen, and summing the heights of the spliced physical screens to obtain the height in the resolution of the virtual screen.
[0071] In some embodiments, the virtual screen is composed of a portion of the physical screen connected to the GPU driver; the screen splicing instruction includes: the identifiers of the physical screens that make up the virtual screen, and the arrangement method; the above step S801 may include: determining a plurality of physical screens to be spliced based on the identifiers of the physical screens; and, according to the arrangement method, summing the widths of the plurality of physical screens to be spliced to obtain the width in the resolution of the virtual screen, and summing the heights of the plurality of physical screens to be spliced to obtain the height in the resolution of the virtual screen.
[0072] In some embodiments, the screen splicing instruction further includes a splicing compensation amount corresponding to each physical screen; the multi-screen splicing method further includes updating the resolution of each physical screen based on the splicing compensation amount corresponding to each physical screen.
[0073] In some embodiments, the multi-screen splicing method further includes: synchronously outputting the data in each sub-image frame buffer to the corresponding physical screen.
[0074] It should be noted that the relevant descriptions and technical effects of the above multi-screen splicing methods can be found in the steps and effects that the GPU driver can achieve in the above multi-screen splicing system. To avoid repetition, they will not be repeated here.
[0075] Figure 9 This is a structural block diagram of a multi-screen splicing device disclosed herein, such as... Figure 9 As shown, it includes: The generation section 901 is configured to generate the resolution of the virtual screen based on the screen stitching instructions and the resolution of each physical screen; the conversion and sending section 902 converts the screen plug-in / plug events of multiple physical screens into screen plug-in / plug events of the virtual screen and sends them to the graphics display service; the request section 903 is configured to request a continuous complete image frame buffer matching the resolution of the virtual screen from the graphics card's video memory based on the video memory request sent by the graphics display service; and the determination section 904 is configured to determine the sub-image frame buffer corresponding to each physical screen in the complete image frame buffer according to the complete image frame buffer, the resolution of each physical screen, and the screen stitching instructions.
[0076] In some embodiments, the virtual screen consists of all physical screens connected to the GPU driver; the screen splicing instructions include: an arrangement method; and a generation part 901, configured to sum the widths of the spliced physical screens according to the arrangement method to obtain the width in the resolution of the virtual screen, and to sum the heights of the spliced physical screens to obtain the height in the resolution of the virtual screen.
[0077] In some embodiments, the virtual screen is composed of a portion of the physical screen connected to the GPU driver; the screen splicing instruction includes: identifiers of the physical screens that make up the virtual screen, and their arrangement; a generation part 901 is configured to determine a plurality of physical screens to be spliced based on the identifiers of the physical screens; and, according to the arrangement, summing the widths of the plurality of physical screens to be spliced after splicing to obtain the width in the resolution of the virtual screen, and summing the heights of the plurality of physical screens to be spliced after splicing to obtain the height in the resolution of the virtual screen.
[0078] In some embodiments, the multi-screen splicing device further includes a transmitting section; the transmitting section is configured to send a screen splicing instruction to the generating section 901 according to the received screen splicing configuration parameters.
[0079] In some embodiments, the generation section 901 is configured to generate screen splicing configuration parameters based on the received user screen splicing operation.
[0080] In some embodiments, the multi-screen splicing device further includes a storage section; the storage section is configured to store screen splicing instructions and send the screen splicing instructions to the generation section 901 through the sending section when the operating system starts.
[0081] In some embodiments, the screen splicing instruction also includes the splicing compensation amount for each physical screen; The determined part 904 is configured to update the resolution of each physical screen based on the splicing compensation amount corresponding to each physical screen.
[0082] In some embodiments, the multi-screen splicing device further includes: a display portion and an adjustment portion; the display portion is configured to display a standard graphic on a virtual screen; the adjustment portion is configured to adjust the display offset of the physical screens that make up the virtual screen until the pixels of the standard graphic are continuous at the seams between the physical screens, thereby obtaining the splicing compensation amount corresponding to each physical screen that makes up the virtual screen.
[0083] In some embodiments, the multi-screen splicing device further includes an output section configured to synchronously output data in each sub-image frame buffer to the corresponding physical screen.
[0084] In this embodiment, each module can implement the multi-screen splicing method provided in the above method embodiments and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0085] Please refer to Figure 10 This illustration shows a schematic diagram of the hardware structure of an electronic device provided in an exemplary embodiment of this disclosure. In some examples, the electronic device may be at least one of devices such as a smartphone, smartwatch, desktop computer, laptop, virtual reality terminal, augmented reality terminal, wireless terminal, and laptop computer. The electronic device has communication capabilities and can access wired or wireless networks. The term "electronic device" can refer to one of multiple terminals; those skilled in the art will understand that the number of terminals may be more or less. Figure 10 As shown, the electronic device in this disclosure may include one or more of the following components: processor 1010 and memory 1020.
[0086] Optionally, the processor 1010 connects various parts within the electronic device using various interfaces and lines. It executes various functions and processes data by running or executing instructions, programs, code sets, or instruction sets stored in the memory 1020, and by calling data stored in the memory 1020. Optionally, the processor 1010 can be implemented using at least one hardware form of Digital Signal Processing (DSP), Field Programmable Gate Array (FPGA), or Programmable Logic Array (PLA). The processor 1010 can integrate one or more of the following: Central Processing Unit (CPU), Graphics Processing Unit (GPU), Neural-network Processing Unit (NPU), and baseband chip. Specifically, the CPU primarily handles the operating system, user interface, and applications; the GPU is responsible for rendering and drawing the content displayed on the touchscreen; the NPU implements Artificial Intelligence (AI) functions; and the baseband chip handles wireless communication. It is understandable that the aforementioned baseband chip may not be integrated into the processor 1010, but may be implemented using a separate chip.
[0087] The memory 1020 may include random access memory (RAM) or read-only memory (ROM). Optionally, the memory 1020 may include a non-transitory computer-readable storage medium. The memory 1020 may be used to store instructions, programs, code, code sets, or instruction sets. The memory 1020 may include a program storage area and a data storage area, wherein the program storage area may store instructions for implementing an operating system, instructions for at least one function (such as touch function, sound playback function, image playback function, etc.), instructions for implementing the various method embodiments described above, etc.; the data storage area may store data created based on the use of the electronic device, etc.
[0088] In addition, those skilled in the art will understand that the structure of the electronic device shown in the above figures does not constitute a limitation on the electronic device. The electronic device may include more or fewer components than shown, or combine certain components, or have different component arrangements. For example, the electronic device may also include a display screen, camera assembly, microphone, speaker, radio frequency circuit, input unit, sensors (such as accelerometer, angular velocity sensor, light sensor, etc.), audio circuit, WiFi module, power supply, Bluetooth module, etc., which will not be described in detail here.
[0089] This disclosure also provides a computer-readable storage medium storing at least one instruction, which is executed by a processor to implement the multi-screen splicing method as described in the above embodiments.
[0090] This disclosure also provides a computer program product including computer instructions stored in a computer-readable storage medium; a processor of an electronic device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the electronic device to perform the multi-screen splicing method described in the above embodiments.
[0091] This disclosure also provides a chip, which includes a processor and a communication interface. The communication interface is coupled to the processor. The processor is used to run programs or instructions to implement the various processes of the above-described multi-screen splicing method embodiments and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0092] It should be understood that the chip mentioned in the embodiments of this disclosure may also be referred to as a system-on-a-chip, system chip, chip system, or system-on-a-chip, etc.
[0093] In the several embodiments provided in this disclosure, it should be understood that the disclosed systems, apparatuses, servers, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection between apparatuses or units through some interfaces, and may be electrical, mechanical, or other forms.
[0094] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0095] Furthermore, the functional units in the various embodiments of this disclosure can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
[0096] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this disclosure, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of this disclosure. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, ROM, RAM, magnetic disks, or optical disks.
[0097] Those skilled in the art will recognize that the functions described in this disclosure in one or more of the examples above can be implemented using hardware, software, firmware, or any combination thereof. When implemented in software, these functions can be stored in a computer-readable medium or transmitted as one or more instructions or code on a computer-readable medium. Computer-readable media include computer storage media and communication media, wherein communication media include any medium that facilitates the transfer of a computer program from one place to another. Storage media can be any available medium accessible to a general-purpose or special-purpose computer.
[0098] It should be noted that the technical solutions described in this disclosure can be combined arbitrarily as long as they do not conflict.
[0099] The above description is merely a specific embodiment of this disclosure, but the scope of protection of this disclosure is not limited thereto. Any changes or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this disclosure should be included within the scope of protection of this disclosure.
Claims
1. A multi-screen splicing system, characterized in that, The multi-screen splicing system includes: a graphics processing unit (GPU) driver, a graphics card, multiple physical screens, and a graphics display service; The GPU driver is used to generate the resolution of the virtual screen based on the screen splicing instructions and the resolution of each physical screen; In addition, the screen plugging / unplugging events of the multiple physical screens are converted into screen plugging / unplugging events of the virtual screen and sent to the graphics display service; In addition, based on the video memory request sent by the graphics display service, a continuous complete image frame buffer matching the resolution of the virtual screen is requested from the video memory of the graphics card; Furthermore, based on the complete image frame buffer, the resolution of each physical screen, and the screen stitching instructions, the sub-image frame buffer corresponding to each physical screen in the complete image frame buffer is determined.
2. The multi-screen splicing system according to claim 1, characterized in that, The virtual screen consists of all physical screens connected to the GPU driver; the screen splicing instructions include: arrangement method; The GPU driver is used to sum the widths of the stitched physical screens according to the arrangement to obtain the width in the resolution of the virtual screen, and to sum the heights of the stitched physical screens to obtain the height in the resolution of the virtual screen.
3. The multi-screen splicing system according to claim 1, characterized in that, The virtual screen is composed of a portion of the physical screen connected to the GPU driver; the screen splicing instruction includes: the identifiers of the physical screens that make up the virtual screen, and their arrangement. The GPU driver is used to identify multiple physical screens to be stitched together based on the identifiers of the physical screens. Furthermore, according to the aforementioned arrangement, the widths of the multiple physical screens to be spliced are summed to obtain the width in the resolution of the virtual screen, and the heights of the multiple physical screens to be spliced are summed to obtain the height in the resolution of the virtual screen.
4. The multi-screen splicing system according to claim 1, characterized in that, The multi-screen splicing system also includes: a protocol conversion unit; The protocol conversion unit is used to send screen splicing instructions to the GPU driver based on the received screen splicing configuration parameters.
5. The multi-screen splicing system according to claim 4, characterized in that, The multi-screen splicing system also includes: a user interface; The user interface is used to generate the screen splicing configuration parameters based on the received user screen splicing operation, and send them to the protocol conversion unit.
6. The multi-screen splicing system according to claim 4, characterized in that, The protocol conversion unit is also used to store the screen splicing instructions and send the screen splicing instructions to the GPU driver when the operating system starts.
7. The multi-screen splicing system according to claim 5, characterized in that, The screen splicing instruction also includes the splicing compensation amount corresponding to each physical screen; The GPU driver is used to update the resolution of each physical screen based on the splicing compensation amount corresponding to each physical screen.
8. The multi-screen splicing system according to claim 7, characterized in that, The user interface is used to display standard graphics on the virtual screen; In addition, the display offset of the physical screens that make up the virtual screen is adjusted until the pixels of the standard graphic are continuous at the seams between the physical screens, so as to obtain the splicing compensation amount corresponding to each physical screen that makes up the virtual screen.
9. The multi-screen splicing system according to claim 1, characterized in that, The GPU driver is used to synchronously output the data in each sub-image frame buffer to the corresponding physical screen.
10. A multi-screen splicing method, characterized in that, Applied to GPU drivers, the multi-screen splicing method includes: The resolution of the virtual screen is generated based on the screen splicing instructions and the resolution of each physical screen. The screen plug-in / plug-out events of multiple physical screens are converted into screen plug-in / plug-out events of the virtual screen and sent to the graphics display service; Based on the video memory request sent by the graphics display service, a continuous complete image frame buffer matching the resolution of the virtual screen is requested from the video memory of the graphics card. Based on the complete image frame buffer, the resolution of each physical screen, and the screen stitching instructions, determine the sub-image frame buffer corresponding to each physical screen in the complete image frame buffer.
Citation Information
Patent Citations
Method and system for capturing high-resolution picture to be displayed on large screen
CN104731546A
Multi-screen splicing display processing method and device
CN105739934A
Multi-screen splicing method based on FC-AV protocol
CN111147767A
Multi-screen splicing method and device, electronic equipment and storage medium
CN115543244A
Multi-screen merging method and device, vehicle-mounted equipment, storage medium and vehicle-mounted system
CN119045759A