Giter VIP home page Giter VIP logo

Comments (7)

RileyWen avatar RileyWen commented on June 1, 2024
  1. See umdf2/pch.h. For further information, see iddcx.h
  2. No. The new monitor is enumerated by Windows after we call the API which reports the arrival of a new monitor.

from screenexpander.

Gabriele91 avatar Gabriele91 commented on June 1, 2024

I thank you for your reply.
Now, It works on my setup!
I have another question for you.

I saw the multi-monitor is supported in Screen Adapter class and Monitor Class (and ioControl).
But when I try to create more than a monitor, it does not work.
The error is "Error value: 1117 Message: The request could not be performed because of an I/O device error".

Do you have any suggestions about this error?

Because I know, the C# client application and the PIPE server do not support multi-monitor.
Thus, I've expected an error in another region of the code not during the creation of a new monitor.

Thanks for your time.

[UPDATE]

The error comes out during the IndirectAdapter::NewMonitorArrives method,
precisely when IddCxMonitorArrival is called.
So, I wrote another pipe server in order to send a sequence of logs.
I got the output of this problem:

  1. First monitor:
    IddCxMonitorArrival success, id:0 < FIRST MONITOR
  2. Second monitor:
    IddCxMonitorArrival Failed, Error: -1073741811
    An invalid parameter was passed to a service or function. (NTSTATUS)

I'm moving on, to aims to investigate why this happens!
Anyway, do you have a suggestion? Could it be the wrong adapter's parameter?

Again, thanks for your time, you are very kind.

[UPDATE]

I solved this issue, the IDDCX_MONITOR_INFO's id must to be different for each monitor.

Anyway, thank you for your support.
Bye.

from screenexpander.

RileyWen avatar RileyWen commented on June 1, 2024

The architecture of this program supports multi-monitor feature but it hasn't been implemented yet. I can't spare time for it right now.

from screenexpander.

alexpacio avatar alexpacio commented on June 1, 2024

Hi,

how could I create a monitor with a completely non-standard resolution (for example, 2000px X 1000px) without passing an EDID?

What should I do?

from screenexpander.

Gabriele91 avatar Gabriele91 commented on June 1, 2024

Regarding the "strange" resolutions,
I create a monitor without the EDID, and then
I pass the following display configuration when IddMonitorGetDefaultModes is called :

DISPLAYCONFIG_VIDEO_SIGNAL_INFO foo[]=
        {
              148500 * KHZ,
            { 148500 * KHZ, 1920 + 280},
            { 148500 * KHZ, (1920 + 280) * (1080 + 45)},
            { WIDTH, HEIGHT },   //  <- **Active Size**
            { 1920 + 280, 1080 + 45},
            { {255, 0} },
            DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE
        },

Moreover, since the resolution is an "intersection" among display mode and target mode,
I return a "compatible" target mode configuration:

IddMonitorQueryModes(...) {
    CreateTargetMode(TargetModes[0], 
               1920, 1080, 
               WIDTH, HEIGHT,   //  <- **Active Size**
               60
       );
}

There are 2 issues in this approach:

  1. I can't create a display with a resolution bigger than 1920x1080,
  2. just resolutions like 1024x720, 960x540, 800x600 are accepted (i.e. in the other cases, the SwapChain context is not created).

So, exists a table or a function which can generate an appropriated display configuration?

Generally speaking, based on your knowledge, is the modification of the active size attribute the right way to create a monitor with a strange resolution?

from screenexpander.

RileyWen avatar RileyWen commented on June 1, 2024

Hi,

how could I create a monitor with a completely non-standard resolution (for example, 2000px X 1000px) without passing an EDID?

What should I do?

I would suggest writing an EDID generator on your own.

from screenexpander.

RileyWen avatar RileyWen commented on June 1, 2024

Solved privately.

from screenexpander.

Related Issues (3)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.