|
105 | 105 | (setf (data-pointer buffer) vbo)
|
106 | 106 | (v:debug :trial.resource "Allocating ~d KB buffer." (ceiling (size buffer) 1024))
|
107 | 107 | (%gl:bind-buffer (buffer-type buffer) vbo)
|
108 |
| - (%gl:buffer-storage |
109 |
| - (buffer-type buffer) |
110 |
| - (memory-region-size region) |
111 |
| - (memory-region-pointer region) |
112 |
| - (ecase (data-usage buffer) |
113 |
| - ((:dynamic-draw :stream-draw :static-draw) |
114 |
| - (list* :dynamic-storage :map-write (map-bits buffer))) |
115 |
| - ((:dynamic-read :stream-read :static-read) |
116 |
| - (list* :dynamic-storage :map-read (map-bits buffer))) |
117 |
| - ((:dynamic-copy :stream-copy :static-copy) |
118 |
| - (list* :dynamic-storage :map-read :map-write (map-bits buffer))))))))) |
| 108 | + (let ((usage (ecase (data-usage buffer) |
| 109 | + ((:dynamic-draw :stream-draw :static-draw) |
| 110 | + (list* :dynamic-storage :map-write (map-bits buffer))) |
| 111 | + ((:dynamic-read :stream-read :static-read) |
| 112 | + (list* :dynamic-storage :map-read (map-bits buffer))) |
| 113 | + ((:dynamic-copy :stream-copy :static-copy) |
| 114 | + (list* :dynamic-storage :map-read :map-write (map-bits buffer)))))) |
| 115 | + (gl-extension-case |
| 116 | + (:GL-ARB-BUFFER-STORAGE |
| 117 | + (%gl:buffer-storage (buffer-type buffer) (memory-region-size region) (memory-region-pointer region) |
| 118 | + (ecase (data-usage buffer) |
| 119 | + ((:dynamic-draw :stream-draw :static-draw) |
| 120 | + (list* :dynamic-storage :map-write (map-bits buffer))) |
| 121 | + ((:dynamic-read :stream-read :static-read) |
| 122 | + (list* :dynamic-storage :map-read (map-bits buffer))) |
| 123 | + ((:dynamic-copy :stream-copy :static-copy) |
| 124 | + (list* :dynamic-storage :map-read :map-write (map-bits buffer)))))) |
| 125 | + (T |
| 126 | + (%gl:buffer-data (buffer-type buffer) (memory-region-size region) (memory-region-pointer region) |
| 127 | + (data-usage buffer))))))))) |
119 | 128 |
|
120 | 129 | (defvar *buffers-in-tx* ())
|
121 | 130 | (defmacro with-buffer-tx ((struct buffer &key (update :write)) &body body)
|
|
0 commit comments