svga: restrict use of rawbuf for constant buffer access to GL43 device
Restrict use of rawbuf for constant buffer access to GL43 capable device only. Fixes glretrace regressions running with SW Renderer. Reviewed-by: Martin Krastev <krastevm@vmware.com> Reviewed-by: Zack Rusin <zackr@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25381>
This commit is contained in:
@@ -209,19 +209,21 @@ svga_buffer_create_host_surface(struct svga_screen *ss,
|
||||
*/
|
||||
sbuf->key.coherent = ss->sws->have_coherent;
|
||||
|
||||
/* Set the persistent bit so if the buffer is to be bound
|
||||
* as constant buffer, we'll access it as raw buffer
|
||||
* instead of copying the content back and forth between the
|
||||
* mapped buffer surface and the constant buffer surface.
|
||||
*/
|
||||
sbuf->key.persistent = 1;
|
||||
if (ss->sws->have_gl43) {
|
||||
/* Set the persistent bit so if the buffer is to be bound
|
||||
* as constant buffer, we'll access it as raw buffer
|
||||
* instead of copying the content back and forth between the
|
||||
* mapped buffer surface and the constant buffer surface.
|
||||
*/
|
||||
sbuf->key.persistent = 1;
|
||||
|
||||
/* Set the raw views bind flag only if the mapped buffer surface
|
||||
* is not already bound as constant buffer since constant buffer
|
||||
* surface cannot have other bind flags.
|
||||
*/
|
||||
if ((bind_flags & PIPE_BIND_CONSTANT_BUFFER) == 0) {
|
||||
sbuf->key.flags |= SVGA3D_SURFACE_BIND_RAW_VIEWS;
|
||||
/* Set the raw views bind flag only if the mapped buffer surface
|
||||
* is not already bound as constant buffer since constant buffer
|
||||
* surface cannot have other bind flags.
|
||||
*/
|
||||
if ((bind_flags & PIPE_BIND_CONSTANT_BUFFER) == 0) {
|
||||
sbuf->key.flags |= SVGA3D_SURFACE_BIND_RAW_VIEWS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user