0
$\begingroup$

For example: I have an AMD graphics card, can I "recreate" Nvidia's OpenGL extensions? And vice versa?

By "recreate" I mean to write my implementation in some way. In general, how critical is the loss of features due to vendor? Or is it not worth bothering about it at all?

I apologize in advance if someone has already asked this question, or perhaps that it is silly and inappropriate

$\endgroup$
2
  • $\begingroup$ Do you have a specific extension in mind? $\endgroup$
    – pmw1234
    Dec 16, 2023 at 12:02
  • $\begingroup$ @pmw1234 no, I ask in general $\endgroup$
    – deaqsly
    Dec 17, 2023 at 19:43

2 Answers 2

1
$\begingroup$

Most vendor-specific extensions (particularly those of more recent vintage) are based on the particular nature of that vendor's hardware. And even if some other vendor's hardware could do something similar, emulating that functionality without actually being part of the driver would be, if not impossible, then exceedingly inefficient.

There may be specific cases where you might be able to implement something reasonably with a wrapper atop OpenGL, but most vendor extensions are too reliant on the specific internals of their hardware to make this viable.

Consider NV_texture_barrier. It was technically an NVIDIA extension, but it was widely implemented by others before being standardized into ARB_texture_barrier. But the fact that it could be implemented by other vendors didn't mean that you, code outside of the driver, could implement it. The core aspect of the functionality requires direct access to the GPU. Calling glTextureBarrierNV causes caches to be cleared and other synchronization operations that are specific to each piece of hardware.

That's not something you can do from outside of the driver.

$\endgroup$
0
0
$\begingroup$

Extensions generally get compiler and driver support in order to take advantage of vendor specific hardware/software. The extensions can go out of "style" because they are replaced by something different, accepted and added to the GLSL specification and slightly change to be more general or a better fit for a wider range of hardware, some just don't get the industry traction the creators had hoped for, etc.

But this doesn't mean they can't be emulated. Often the basic behavior can be emulated using modern GLSL code and extensions. But every extension will be different and some may not be doable.

One other possibility is to get ahold of the open source drivers for the target hardware and edit the code to add the extension.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.