VirtualBox

儲存庫 vbox 的更動 62568


忽略:
時間撮記:
2016-7-26 下午03:30:28 (8 年 以前)
作者:
vboxsync
訊息:

bugref:8087: Additions/x11: support non-root X server: fix regression from not mapping all of the guest VRAM in the kernel driver: we were no longer reporting the host flags location correctly, preventing IRQ handling and dynamic resizing from working with large VRAM sizes.

位置:
trunk/src/VBox/Additions/linux/drm
檔案:
修改 3 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Additions/linux/drm/vbox_drv.h

    r62550 r62568  
    105105    /** Amount of available VRAM, not including space used for buffers. */
    106106    uint32_t available_vram_size;
    107     /** Offset of host communication area in mapped VRAM. */
    108     uint32_t vram_host_offset;
     107    /** Offset of mapped VRAM area in full VRAM. */
     108    uint32_t vram_map_start;
    109109    /** Offset to the host flags in the VRAM. */
    110110    uint32_t host_flags_offset;
  • trunk/src/VBox/Additions/linux/drm/vbox_main.c

    r62557 r62568  
    7070    unsigned i;
    7171    struct VBVABUFFER *vbva;
     72    uint32_t vram_map_offset = vbox->available_vram_size - vbox->vram_map_start;
    7273
    7374    AssertLogRelReturnVoid(vbox->vbva_info != NULL);
     
    7677            LogFunc(("vboxvideo: enabling VBVA.\n"));
    7778            vbva = (struct VBVABUFFER *) (  ((uint8_t *)vbox->mapped_vram)
    78                                            + vbox->vram_host_offset
     79                                           + vram_map_offset
    7980                                           + i * VBVA_MIN_BUFFER_SIZE);
    8081            if (!VBoxVBVAEnable(&vbox->vbva_info[i], &vbox->submit_info, vbva, i))
     
    255256    }
    256257    /* Take a command buffer for each screen from the end of usable VRAM. */
    257     vbox->vram_host_offset = (VBOX_MAX_SCREENS - vbox->num_crtcs) * VBVA_MIN_BUFFER_SIZE;
    258258    vbox->available_vram_size -= vbox->num_crtcs * VBVA_MIN_BUFFER_SIZE;
    259259    for (i = 0; i < vbox->num_crtcs; ++i)
     
    325325    if (!vbox->mapped_vram)
    326326        return -ENOMEM;
     327    vbox->vram_map_start = map_start;
    327328    guest_heap = ((uint8_t *)vbox->mapped_vram) + base_offset - map_start
    328329                   + guest_heap_offset;
  • trunk/src/VBox/Additions/linux/drm/vbox_mode.c

    r62557 r62568  
    107107                                pitch, width, height,
    108108                                vbox_crtc->blanked ? 0 : bpp, flags);
    109     VBoxHGSMIReportFlagsLocation(&vbox->submit_info, vbox->host_flags_offset);
     109    VBoxHGSMIReportFlagsLocation(&vbox->submit_info,   vbox->vram_map_start
     110                                                     + vbox->host_flags_offset);
    110111    LogFunc(("vboxvideo: %d\n", __LINE__));
    111112}
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette