Imagine I write a program that can display gif images. That's all it does. I charge $1 for this program. People pay this because it is really good at what it does and there aren't really any other choices; almost every single image out there is a gif.
You come along and write a program that can display jpeg images. That's all it does. You do this so that no one needs to pay royalties for my gif image viewer. There aren't as many jpeg images as there are gif, but a few people use it. Someone writes a "gif to jpeg" converter which means people can convert their image and display it in your viewer, but it's an extra step, and a little bit of quality is lost in the conversion. Similarly someone makes a jpeg to gif converter but because almost everything is gif anyway it doesn't get a lot of use.
Eventually you come up with a jpegviewer++. It is the exact same jpeg viewer that you wrote before but now, if someone tries to use it to read gif images, it bypasses its own jpeg renderer and just loads up my program in the background in order to display the image.
That's effectively HDMI vs DisplayPort. They are different, incompatible standards. In order to use one with the other you need an active conversion cable to change the signal from one to the other. DisplayPort++ can use a passive HDMI converter because, when you plug in the cable, it stops pushing DisplayPort data and redirects some of the pins to an HDMI controller. A DisplayPort++ has both a DisplayPort controller and an HDMI controller in it, that's why it can do both.