Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • chengbo7135/xserver
  • wjp/xserver
  • DemiMarie/xserver
  • alanc/xserver
  • uvas/xserver
  • cl91/xserver
  • heymiaoO/xserver
  • oreaus/xserver
  • stapelberg/xserver
  • PaulKocialkowski/xserver
  • CendioOssman/xserver
  • wiz/xserver
  • maos20008/xserver
  • dougvj/xserver
  • mgorse1/xserver
  • gldrk/xserver
  • TMR5454/xserver
  • Kyawswat/xserver
  • hexiaodong/xserver
  • gilvbp/xserver
  • vliaskov/xserver
  • aarondill/xserver
  • zzyiwei/xserver
  • kleinerm/xserver
  • jcherry/xserver
  • jcristau/xserver
  • nathankidd/xserver
  • jexposit/xserver
  • refi_64/xserver
  • kbrenneman/xserver
  • kupper.pa/xserver
  • LickmeDown/xserver
  • zboszor/xserver
  • jadahl/xserver
  • shadeslayer/xserver
  • mherrb/xserver
  • Julia/xserver
  • twaik/xserver
  • fvalasiad/xserver
  • zzxyb/xserver
  • HermannSW/xserver
  • erwinou/xserver
  • ekurzinger/xserver
  • nacho.resa/xserver
  • agoins/xserver
  • NSUTanghaixiang/xserver
  • p12tic/xserver
  • huxd1532/xserver
  • keithp/xserver
  • vinilokorlok/xserver
  • bbeckett/xserver
  • dslater38/xserver
  • zzag/xserver
  • emersion/xserver
  • djlucas/xserver
  • ccullumbine2018/xserver
  • daniels/xserver
  • llandwerlin/xserver
  • matt335672/xserver
  • doraskayo/xserver
  • afett/xserver
  • XDXTHX/xserver
  • xexaxo/xserver
  • ecurtin/xserver
  • rbernon/xserver
  • pekdon/xserver
  • karolherbst/xserver
  • russellcnv/xserver
  • mbiebl/xserver
  • orbea/xserver
  • vsyrjala/xserver
  • lyudess/xserver
  • manu/xserver
  • lucmann/xserver
  • tholin/xserver
  • yarivb/xserver
  • tmlind/xserver
  • chema/xserver
  • J-Bu/xserver
  • chenhuacai/xserver
  • E5ten/xserver
  • haagch/xserver
  • whot/xserver
  • strassek/xserver
  • mntmn/xserver
  • liyi42/xserver
  • YusufKhan-gamedev/xserver
  • iv-m/xserver
  • vanvugt/xserver
  • Rui511/xserver
  • catap/xserver
  • tjbp/xserver
  • webi123/xserver
  • noblock/xserver
  • freemangordon/xserver
  • xdandys/xserver
  • jbeich/xserver
  • zeising/xserver
  • romangg/xserver
  • pq/xserver
  • azhadchenko/xserver
  • Emantor/xserver
  • carlosg/xserver
  • kwg/xserver
  • pichika/xserver
  • klniu/xserver
  • TAAPArthur/xserver
  • sjoerd/xserver
  • Sjecai2/xserver
  • jturney/xserver
  • pkubaj/xserver
  • os369510/xserver
  • Zamundaaa/xserver
  • Gorg/xserver
  • lkundrak/xserver
  • niveditharau/xserver
  • ForTheReallys/xserver
  • jmonteiro/xserver
  • jocelyn/xserver
  • ThatMG393/xserver
  • fweimer/xserver
  • mlankhorst/xserver
  • marv/xserver
  • dbn/xserver
  • mattrope/xserver
  • coypoop/xserver
  • mwyraz/xserver
  • frog/xserver
  • 3v1n0/xserver
  • awilfox/xserver
  • muesli4/xserver
  • rarbab/xserver
  • yshui/xserver
  • jannau/xserver
  • mikeroyal/xserver
  • andrebsguedes/xserver
  • JeffyCN/xserver
  • ipominov/xserver
  • gtrentalancia/xserver
  • josch/xserver
  • lucyllewy/xserver
  • tomty89/xserver
  • qarmin/xserver
  • tagr/xserver
  • zwenna/xserver
  • bkylerussell/xserver
  • mupuf/xserver
  • zubzub/xserver
  • galaxytgtabiday/xserver
  • OlCe/xserver
  • ashafer/xserver
  • dengbo/xserver
  • valpackett/xserver
  • andreyknyazev077/xserver
  • antonovitch/xserver
  • contactshashanksharma/xserver-fork-shashank
  • akihiko.odaki/xserver
  • sknsean/xserver
  • rnpnr/xserver
  • hitong602/xserver
  • halfline/xserver
  • ismailsiege/xserver
  • dongwonk/xserver
  • Fatton1/xserver
  • GermanAizek/xserver
  • daenzer/xserver
  • FeepingCreature/xserver
  • mvlad/xserver
  • puleglot/xserver
  • smelenius/xserver
  • sewn/xserver
  • kaichuan.hsieh/xserver
  • SimonPilkington/xserver
  • adamdruppe/xserver
  • floppym/xserver
  • trevdave/xserver
  • luke-jr/xserver
  • headrush/xserver
  • davidriley/xserver
  • heitbaum/xserver
  • mrisaacb/xserver
  • goosen78/xserver
  • Ma/xserver
  • gmbr3/xserver
  • tsutsui/xserver
  • sherrodejjohnson/xserver
  • hassoon1986/xserver
  • lanodan/xserver
  • ydc-dadada/xserver
  • wengxt/xserver
  • icenowy/xserver
  • denisfa/xserver
  • StarsGreen/xserver
  • adamjrichter/xserver
  • bigon/xserver
  • djacewicz/xserver
  • davidre/xserver
  • kylin0061/xserver
  • arrowd/xserver
  • ernstp/xserver
  • bbrezillon/xserver
  • penguin42/xserver
  • anarsoul/xserver
  • marvinjr35/xserver
  • gerddie/xserver
  • xry111/xserver
  • psyruss85/xserver
  • volkanorhan/xserver
  • luporl/xserver
  • cbur201592/xserver
  • bphaslett/xserver
  • guillem/xserver
  • haihao/xserver
  • peterh/xserver
  • miztake/xserver
  • zaps166/xserver
  • lostgoat/xserver
  • vfjpl/xserver
  • bentiss/xserver
  • rilian-la-te/xserver
  • wujiangGitHub/xserver
  • cubanismo/xserver
  • arichardson/xserver
  • schreibemirhalt/xserver
  • jsg/xserver
  • karlosrangel337/xserver
  • knisht/xserver
  • manuelcrack642/xserver
  • ross/xserver
  • topimiettinen/xserver
  • davidedmundson/xserver
  • DPA/xserver
  • dkorkmazturk/xserver
  • karamjameelmoore/xserver
  • lihongtao/xserver
  • sthibaul/xserver
  • RyzenDew/xserver
  • christian-rauch/xserver
  • Vivek/xserver
  • peigongdsd/xserver
  • peng.jin/xserver
  • alagner/xserver
  • mehdigh419/xserver
  • dixler/xserver
  • BBaoVanC/xserver
  • Drakulix/xserver
  • Acidburn0zzz/xserver
  • bafanahub/xserver
  • benpicco/xserver
  • yangxiaojuan-loongson/xserver
  • kaocher82/xserver
  • pepp/xserver
  • cgzones/xserver
  • luyn/xserver
  • 1740301466jxz/xserver
  • ids1024/xserver
  • svalaskevicius/xserver
  • ZhiJie.Zhang/xserver
  • metux/xserver
  • eschwartz/xserver
  • jayantpranjal0/xserver
  • hmazlan/xserver
  • kerneltoast/xserver
  • Michaelypk/xserver
  • dottedmag/xserver
  • aplattner/xserver
  • sergiomb/xserver
  • looi/xserver
  • robclark/xserver
  • tzimmermann/xserver
  • vitoux.pascal/xserver
  • aditj/xserver
  • kennylevinsen/xserver
  • Kishore409/xserver
  • Daasin/xserver
  • dirbaio/xserver
  • xinbowang/xserver
  • mwei/xserver
  • SpikyCaterpillar1/xserver
  • devin11911191/xserver
  • xorg/xserver
  • alex-tu-cc/xserver
  • kaniini/xserver
  • jcourreges/xserver
  • n3rdopolis/xserver
  • zagursky/xserver
  • thesamesam/xserver
  • anholt/xserver
  • themaister/xserver
  • jrtc27/xserver
  • JoseExposito/xserver
  • Hi-Angel/xserver
  • City-busz/xserver
  • ydirson/xserver
  • dawnhan/xserver
  • avolkov/xserver
  • meMuszr/xserver
  • dk/xserver
  • cooperch/xserver
  • Tuetuopay/xserver
  • gabifalk/xserver
  • jeremyhu/xserver
  • 1480c1/xserver
  • Spintzyk/xserver
  • MisterDA/xserver
  • starnight/xserver
  • abono/xserver
  • ajax/xserver
  • dougg3/xserver
  • chenx_dust/xserver
  • EXtremeExploit/xserver
  • jwrdegoede/xserver
  • road2react/xserver
  • acelan/xserver
  • airlied/xserver
  • gfxstrand/xorg-xserver
  • justazarsky/xserver
  • sri-ka1ki/xserver
  • rgfernandes/xserver
  • lynxeye/xserver
  • tintou/xserver
  • mattst88/xserver
  • rmader/xserver
  • linkmauve/xserver
  • kamarul6401/xserver
  • andy-zetier/xserver
  • gsittyz/xserver
  • bernhardu/xserver
  • causztic/xserver
  • cpmichael/modesetting
  • ryanneph/xserver
  • zhangyaning/xserver
  • olv/xserver
  • hongaoo/xserver
  • LiChenG-P/xserver
  • Ivaniku/x-taylan
  • dkg/xserver
  • ofourdan/xserver
  • mahkoh/xserver
  • AkiSakurai/xserver
  • msizanoen1/xserver
341 results
Show changes
Commits on Source (4)
  • Jessica Clarke's avatar
    xwayland: Avoid gratuitous round trip through event_id · 85a36146
    Jessica Clarke authored and Olivier Fourdan's avatar Olivier Fourdan committed
    
    By adding a new xwl_present_event_from_vblank function we can avoid
    turning the vblank into an event_id, and also abstract away the exact
    encoding for event_id from most places.
    
    Signed-off-by: default avatarJessica Clarke <jrtc27@jrtc27.com>
    85a36146
  • Jessica Clarke's avatar
    xwayland: Pass vblank pointer itself to xwl_present_flip · 42d2d9c1
    Jessica Clarke authored and Olivier Fourdan's avatar Olivier Fourdan committed
    
    All these arguments other than damage come from the vblank itself so
    passing the vblank simplifies the caller. Moreover, we pass the event_id
    solely so we can get back to the event, which is just the (extended)
    vblank, so passing the vblank avoids that round trip.
    
    Signed-off-by: default avatarJessica Clarke <jrtc27@jrtc27.com>
    42d2d9c1
  • Jessica Clarke's avatar
    xwayland: Stop relying on event_id being a valid pointer · bfe8f549
    Jessica Clarke authored and Olivier Fourdan's avatar Olivier Fourdan committed
    
    On traditional 32-bit and 64-bit architectures, uint64_t can be abused
    to hold a uintptr_t and be cast back to a valid pointer. However, on
    CHERI, and thus Arm's Morello prototype, pointers are capabilities,
    which contain a traditional address alongside additional metadata,
    including a tag bit that ensures it cannot be forged (the only way to
    get a capability with the tag bit set is by using instructions that take
    in another valid capability with sufficient bounds/permissions/etc for
    the request, and any other operation, like overwriting individual bytes
    in memory, will give a capability whose tag is clear). Casting a pointer
    to a uintptr_t is fine as uintptr_t is represented as a capability, but
    casting to a uint64_t yields just the address, losing the metadata and
    tag. Thus, when cast back to a uintptr_t, the capability remains invalid
    and faults on any attempt to dereference.
    
    As with various other places in the tree, address this by searching for
    the pointer in a list so that we no longer rely on this undefined
    behaviour.
    
    Signed-off-by: default avatarJessica Clarke <jrtc27@jrtc27.com>
    bfe8f549
  • Jessica Clarke's avatar
    xwayland: Stop using event address as event_id · 13e513d2
    Jessica Clarke authored and Olivier Fourdan's avatar Olivier Fourdan committed
    
    Nothing should be relying on this anymore, so use a counter like other
    places in the tree instead. This ensures that the event_id doesn't get
    cast back into a pointer again in future, and also may be slightly less
    confusing in cases where calloc reuses an address as debug logs would
    show the same event_id for those but now they will be distinct.
    
    Signed-off-by: default avatarJessica Clarke <jrtc27@jrtc27.com>
    13e513d2
......@@ -84,9 +84,22 @@ xwl_present_window_get_priv(WindowPtr window)
}
static struct xwl_present_event *
xwl_present_event_from_id(uint64_t event_id)
xwl_present_event_from_id(WindowPtr present_window, uint64_t event_id)
{
return (struct xwl_present_event*)(uintptr_t)event_id;
present_window_priv_ptr window_priv = present_get_window_priv(present_window, TRUE);
struct xwl_present_event *event;
xorg_list_for_each_entry(event, &window_priv->vblank, vblank.window_list) {
if (event->vblank.event_id == event_id)
return event;
}
return NULL;
}
static struct xwl_present_event *
xwl_present_event_from_vblank(present_vblank_ptr vblank)
{
return container_of(vblank, struct xwl_present_event, vblank);
}
static Bool entered_for_each_frame_callback;
......@@ -268,7 +281,7 @@ static void
xwl_present_free_idle_vblank(present_vblank_ptr vblank)
{
present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
xwl_present_free_event(xwl_present_event_from_id((uintptr_t)vblank));
xwl_present_free_event(xwl_present_event_from_vblank(vblank));
}
static WindowPtr
......@@ -306,7 +319,7 @@ xwl_present_flips_stop(WindowPtr window)
struct xwl_present_event *event;
vblank = xwl_present_window->flip_active;
event = xwl_present_event_from_id((uintptr_t)vblank);
event = xwl_present_event_from_vblank(vblank);
if (event->pixmap)
xwl_present_free_idle_vblank(vblank);
else
......@@ -336,7 +349,7 @@ xwl_present_flip_notify_vblank(present_vblank_ptr vblank, uint64_t ust, uint64_t
if (xwl_present_window->flip_active) {
struct xwl_present_event *event =
xwl_present_event_from_id((uintptr_t)xwl_present_window->flip_active);
xwl_present_event_from_vblank(xwl_present_window->flip_active);
if (!event->pixmap)
xwl_present_free_event(event);
......@@ -540,7 +553,12 @@ xwl_present_queue_vblank(ScreenPtr screen,
{
struct xwl_present_window *xwl_present_window = xwl_present_window_get_priv(present_window);
struct xwl_window *xwl_window = xwl_window_from_window(present_window);
struct xwl_present_event *event = xwl_present_event_from_id(event_id);
struct xwl_present_event *event = xwl_present_event_from_id(present_window, event_id);
if (!event) {
ErrorF("present: Error getting event\n");
return BadImplementation;
}
event->vblank.exec_msc = msc;
......@@ -732,18 +750,15 @@ xwl_present_clear_window_flip(WindowPtr window)
}
static Bool
xwl_present_flip(WindowPtr present_window,
RRCrtcPtr crtc,
uint64_t event_id,
PixmapPtr pixmap,
Bool sync_flip,
RegionPtr damage)
xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
{
WindowPtr present_window = vblank->window;
PixmapPtr pixmap = vblank->pixmap;
struct xwl_window *xwl_window = xwl_window_from_window(present_window);
struct xwl_present_window *xwl_present_window = xwl_present_window_priv(present_window);
BoxPtr damage_box;
struct wl_buffer *buffer;
struct xwl_present_event *event = xwl_present_event_from_id(event_id);
struct xwl_present_event *event = xwl_present_event_from_vblank(vblank);
if (!xwl_window)
return FALSE;
......@@ -781,7 +796,7 @@ xwl_present_flip(WindowPtr present_window,
wl_surface_commit(xwl_window->surface);
if (!sync_flip) {
if (!vblank->sync_flip) {
xwl_present_window->sync_callback =
wl_display_sync(xwl_window->xwl_screen->display);
wl_callback_add_listener(xwl_present_window->sync_callback,
......@@ -845,8 +860,7 @@ xwl_present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
} else
damage = RegionDuplicate(&window->clipList);
if (xwl_present_flip(vblank->window, vblank->crtc, vblank->event_id,
vblank->pixmap, vblank->sync_flip, damage)) {
if (xwl_present_flip(vblank, damage)) {
WindowPtr toplvl_window = xwl_present_toplvl_pixmap_window(vblank->window);
PixmapPtr old_pixmap = screen->GetWindowPixmap(window);
......@@ -916,6 +930,7 @@ xwl_present_pixmap(WindowPtr window,
present_notify_ptr notifies,
int num_notifies)
{
static uint64_t xwl_present_event_id;
uint64_t ust = 0;
uint64_t target_msc;
uint64_t crtc_msc = 0;
......@@ -981,7 +996,7 @@ xwl_present_pixmap(WindowPtr window,
return BadAlloc;
}
vblank->event_id = (uintptr_t)event;
vblank->event_id = ++xwl_present_event_id;
/* Xwayland presentations always complete (at least) one frame after they
* are executed
......