Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#15030 closed enhancement (duplicate)

Screen rotate video horizontally

Reported by: shredder Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: - General Version: R1/Development
Keywords: rotate mirror horizontally screen video graphics gpu Cc:
Blocked By: #14510 Blocking:
Platform: All

Description (last modified by diver)

I'd like haiku to mirror my screen horizontally, ie. rotate by 180 degrees the video output. I have a system where the video monitor mount is permanently fixed upside down due to space and cabling issues.

On other systems this was solved from software on an intel chipset. However as this is an older system and Haiku is generally terrific Haiku would be a better fit for the macinhe than other choices. However if the video cannot be reversed the users cannot use it. Apart from this being obvious, for example to report this bug, the human screen reading rate is maxing around 6.4 characters per second.

hrev52295+129 Mar 4 2019 10:03 BePC x86 Haiku

About Haiku: Version R1/beta1 revision hrev52295+129 x86_gcc2 2 processors Intel Pentium 4 3.20 Ghz Memory 3318 MiB total Kernel March 4, 2019 at 10:03:02 AM I've tried to run dmesg and lshw without success. However, poking around (upside-dwon) in bin I found some neat tools, here you are:

~> screeninfo

Screen 0: attached
  version: 1
  name:    Intel GMA
  chipset: i945G
  serial:  None

~> sysinfo

Kernel name: kernel_x86 built on: Mar  4 2019 10:03:02 version 0x1
2 Intel Pentium 4, revision 0f43 running at 3199MHz

CPU #0: "Intel(R) Pentium(R) 4 CPU 3.20GHz"
        Signature: 0x000f43; Type 0, family 15, model 4, stepping 3
        Features: 0xbfebfbff
                FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT
                PSE36 CFLUSH DS ACPI MMX FXSTR SSE SSE2 SS HTT TM PBE
        Extended Features (0x00000001): 0x0000649d
                SSE3 DTES64 MONITOR DS-CPL EST CNTXT-ID CX16 xTPR
        Extended Features (0x80000001): 0x20100000
                NX 64

        L2 Data cache fully associative, 1 lines/tag, 64 bytes/line
        L2 cache: 0 KB, 1-way set associative, 0 lines/tag, 31 bytes/line

        Inst TLB: 4K/4M/2M-bytes pages, fully associative, 64 entries
        Data TLB: 4K/4M-bytes pages, fully associative, 64 entries
        Unknown cache descriptor 0x60
        No integrated L3 cache
        Inst trace cache: 12K µOPs, 8-way set associative
        L2 cache: 2048 KB, 8-way set associative, 64 bytes/line

CPU #1: "Intel(R) Pentium(R) 4 CPU 3.20GHz"
        Signature: 0x000f43; Type 0, family 15, model 4, stepping 3
        Features: 0xbfebfbff
                FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT
                PSE36 CFLUSH DS ACPI MMX FXSTR SSE SSE2 SS HTT TM PBE
        Extended Features (0x00000001): 0x0000649d
                SSE3 DTES64 MONITOR DS-CPL EST CNTXT-ID CX16 xTPR
        Extended Features (0x80000001): 0x20100000
                NX 64

        L2 Data cache fully associative, 1 lines/tag, 64 bytes/line
        L2 cache: 0 KB, 1-way set associative, 0 lines/tag, 31 bytes/line

        Inst TLB: 4K/4M/2M-bytes pages, fully associative, 64 entries
        Data TLB: 4K/4M-bytes pages, fully associative, 64 entries
        Unknown cache descriptor 0x60
        No integrated L3 cache
        Inst trace cache: 12K µOPs, 8-way set associative
        L2 cache: 2048 KB, 8-way set associative, 64 bytes/line

2849095680 bytes free      (used/max  629432320 / 3478528000)
                           (cached    809340928)
     59392 semaphores free (used/max       6144 /      65536)
      3890 ports free      (used/max        206 /       4096)
      3913 threads free    (used/max        183 /       4096)
      2026 teams free      (used/max         22 /       2048)

Change History (7)

comment:1 by diver, 5 years ago

Description: modified (diff)

Is it possible to do it at the app_server level or each driver needs to implement it?

comment:2 by waddlesplash, 5 years ago

Blocked By: 14510 added
Resolution: duplicate
Status: newclosed

comment:3 by bruno, 5 years ago

Duplicate of #13193 or similar idea?

Rotate video option for MediaPlayer

comment:4 by pulkomandy, 5 years ago

@diver: it's possible in app_server (using transforms at painting level) but it may make more sense to let the driver do it in hardware as that may end up being simpler.

@bruno: not at all... this is for rotating the whole display, not just a specific video file.

@shredder: beware, mirroring and 180° rotation are not the same. mirroring would be useful if you look at the display backwards, for example through a mirror (possible in arcade cabinets or if you use a videoprojector projecting on the back of a screen), while 180° rotation is useful if you have the display mounted upside down.

comment:5 by shredder, 5 years ago

@waddlesplash: thank you! #14510 serves me well, it is a good duplicate for this ticket. For the record, before reporting this, I did run several queryies; I've just failed to find #14510 for whatever reason. Thank you.

@pulkomandy: Thank you! Clarification: I need rotation by 180°. Mirroring would NOT serve this ticket's use case - it was just my misunderstanding.

@bruno: definitely NOT a media player issue. I'd need to rotate everything, the whole operating system, every application, etc. NOT a 13193!

@pulkomandy: according to a certain axeld in #14510,

This can and should definitely be implemtented within app_server; the drivers don't have to know.

comment:6 by shredder, 5 years ago

@diver: could an admin modify the ticket description text to overstrike (invalidate) the "mirror" notions, please? I'd clarify to mean the rotating by 180 degrees only. (Mirroring seems to have been my misunderstanding, according to chat with pulkomandy.)

I doesn't seem able to modify the description myself, probably lacking permissions, as I have no controls to do so (and I've opened #15042 to change this).

comment:7 by diver, 5 years ago

Summary: Screen rotate video to mirror horizontallyScreen rotate video horizontally
Note: See TracTickets for help on using tickets.