<blockquote>
  <p>Is such a method of zero-copy texture loading possible/optimal on modern discrete graphics hardware?</p>
</blockquote>

<p>You say that as though it were optimal <em>back then</em>. The Intel 740 was not exactly warmly embraced by the market, as noted by the Wikipedia article in question:</p>

<blockquote>
  <p>The AGP Texture concept soon proved to be a tremendous error in design, because the card had to constantly access the textures over a channel that was upwards of eight times slower than RAM placed on the graphics card itself.</p>
</blockquote>

<p>The disparity between available memory bandwidth/performance and available compute resources has only <em>increased</em> in the last 20 years. So, will it be "optimal" to have a discrete GPU read from main memory?</p>

<p>No.</p>

<p>Could it be "possible"? Not in terms of marketability. Even $50 and below discrete GPUs carry their own on-board RAM. Anything much slower/smaller than that isn't worthwhile, because pretty much everyone already has Intel or AMD's on-die GPUs for when performance isn't of importance. If you have a discrete board, it will always be better to put some RAM on the board with its own bus than to have the board try to read most of its data directly from main memory.</p>

<blockquote>
  <p>Furthermore, could zero-copy texture access functionality be exposed by using mapped buffers in OpenGL?</p>
</blockquote>

<p>No. Mapped buffers would be <em>buffers</em>, not textures. They're different kinds of storage objects with (hypothetically) distinct allocations behind them. PBO is a means of asynchronously transferring data from a buffer to a texture. That is a <em>transfer</em> of data, not an adoption of a memory allocation.</p>

<p>Intel has an <a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_map_texture.txt" rel="nofollow noreferrer">extension for mapping a texture's storage</a>, but that requires that the texture be in a linear format. It's not widely supported, and likely never will be.</p>

<p>Vulkan provides for the <em>possibility</em> of something similar, but using linear texture as sources in sampler read operations from a shader is not required to be supported. You'd have to ask each implementation whether it allows it and in which formats, and for which usages are allowed.</p>

CC BY-SA 4.0
2019-09-25T23:42:24.310Z
Indeed, the decreased performance does certainly make sense. However, interestingly, these benchmarks seem to contradict it: http://vintage3d.org/i740.php
novice
CC BY-SA 4.0
2019-09-25T21:06:05.637Z
2019-09-25T21:06:05.637Z
Nicol Bolas
<p>The <a href="https://en.wikipedia.org/wiki/Intel740" rel="nofollow noreferrer">Intel 740</a> AGP graphics card read textures directly from system RAM, using VRAM exclusively for depth buffers and the framebuffer. This has the effect of saving video RAM, and it could be implemented with AGP transfer speeds far lower than PCIe transfer speeds of today.</p>

<p>Is such a method of zero-copy texture loading possible/optimal on modern <strong>discrete</strong> graphics hardware? Is there a specific hardware feature that was present on the i740 requisite for this technique that is not present on modern graphics cards? Furthermore, could zero-copy texture access functionality be exposed by using mapped buffers in OpenGL?</p>

<opengl><texture><memory>
Zero-copy texture reading from CPU memory
novice
# Zero-copy texture reading from CPU memory

(Asked by: username_0 on 2019-09-25)

The [Intel 740](https://en.wikipedia.org/wiki/Intel740) AGP graphics card read textures directly from system RAM, using VRAM exclusively for depth buffers and the framebuffer. This has the effect of saving video RAM, and it could be implemented with AGP transfer speeds far lower than PCIe transfer speeds of today.

Is such a method of zero-copy texture loading possible/optimal on modern **discrete** graphics hardware? Is there a specific hardware feature that was present on the i740 requisite for this technique that is not present on modern graphics cards? Furthermore, could zero-copy texture access functionality be exposed by using mapped buffers in OpenGL?

**Tags:** opengl, texture, memory


---

## 1 answers

### Answer by username_1 on 2019-09-25. Score: 3 | Accepted answer

> Is such a method of zero-copy texture loading possible/optimal on modern discrete graphics hardware?

You say that as though it were optimal *back then*. The Intel 740 was not exactly warmly embraced by the market, as noted by the Wikipedia article in question:

> The AGP Texture concept soon proved to be a tremendous error in design, because the card had to constantly access the textures over a channel that was upwards of eight times slower than RAM placed on the graphics card itself.

The disparity between available memory bandwidth/performance and available compute resources has only *increased* in the last 20 years. So, will it be "optimal" to have a discrete GPU read from main memory?

No.

Could it be "possible"? Not in terms of marketability. Even $50 and below discrete GPUs carry their own on-board RAM. Anything much slower/smaller than that isn't worthwhile, because pretty much everyone already has Intel or AMD's on-die GPUs for when performance isn't of importance. If you have a discrete board, it will always be better to put some RAM on the board with its own bus than to have the board try to read most of its data directly from main memory.

> Furthermore, could zero-copy texture access functionality be exposed by using mapped buffers in OpenGL?

No. Mapped buffers would be *buffers*, not textures. They're different kinds of storage objects with (hypothetically) distinct allocations behind them. PBO is a means of asynchronously transferring data from a buffer to a texture. That is a *transfer* of data, not an adoption of a memory allocation.

Intel has an [extension for mapping a texture's storage](https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_map_texture.txt), but that requires that the texture be in a linear format. It's not widely supported, and likely never will be.

Vulkan provides for the *possibility* of something similar, but using linear texture as sources in sampler read operations from a shader is not required to be supported. You'd have to ask each implementation whether it allows it and in which formats, and for which usages are allowed.

> **Comments:**
> **username_0**: Indeed, the decreased performance does certainly make sense. However, interestingly, these benchmarks seem to contradict it: http://vintage3d.org/i740.php  

---

