r300-gallium, radeon-gallium: Continue migration to DRI2 state_tracker, part 2.
Almost there. glxinfo still works, and AFAICT so does trivial/clear.
This commit is contained in:
parent
9e67b0a174
commit
60041203d5
|
@ -186,3 +186,21 @@ void r300_init_screen_texture_functions(struct pipe_screen* screen)
|
||||||
screen->tex_surface_release = r300_tex_surface_release;
|
screen->tex_surface_release = r300_tex_surface_release;
|
||||||
screen->texture_blanket = r300_texture_blanket;
|
screen->texture_blanket = r300_texture_blanket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean r300_get_texture_buffer(struct pipe_texture* texture,
|
||||||
|
struct pipe_buffer** buffer,
|
||||||
|
unsigned* stride)
|
||||||
|
{
|
||||||
|
struct r300_texture* tex = (struct r300_texture*)texture;
|
||||||
|
if (!tex) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
pipe_buffer_reference(texture->screen, buffer, tex->buffer);
|
||||||
|
|
||||||
|
if (stride) {
|
||||||
|
*stride = tex->stride;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
|
@ -31,4 +31,12 @@
|
||||||
|
|
||||||
void r300_init_screen_texture_functions(struct pipe_screen* screen);
|
void r300_init_screen_texture_functions(struct pipe_screen* screen);
|
||||||
|
|
||||||
|
#ifndef R300_WINSYS_H
|
||||||
|
|
||||||
|
boolean r300_get_texture_buffer(struct pipe_texture* texture,
|
||||||
|
struct pipe_buffer** buffer,
|
||||||
|
unsigned* stride);
|
||||||
|
|
||||||
|
#endif /* R300_WINSYS_H */
|
||||||
|
|
||||||
#endif /* R300_TEXTURE_H */
|
#endif /* R300_TEXTURE_H */
|
||||||
|
|
|
@ -92,4 +92,8 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
boolean r300_get_texture_buffer(struct pipe_texture* texture,
|
||||||
|
struct pipe_buffer** buffer,
|
||||||
|
unsigned* stride);
|
||||||
|
|
||||||
#endif /* R300_WINSYS_H */
|
#endif /* R300_WINSYS_H */
|
||||||
|
|
|
@ -59,6 +59,7 @@ boolean radeon_buffer_from_texture(struct pipe_texture* texture,
|
||||||
struct pipe_buffer** buffer,
|
struct pipe_buffer** buffer,
|
||||||
unsigned* stride)
|
unsigned* stride)
|
||||||
{
|
{
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a buffer from a handle. */
|
/* Create a buffer from a handle. */
|
||||||
|
@ -67,7 +68,8 @@ struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
|
||||||
const char* name,
|
const char* name,
|
||||||
unsigned handle)
|
unsigned handle)
|
||||||
{
|
{
|
||||||
struct radeon_bo_manager* bom = ((struct radeon_winsys*)screen->winsys)->bom;
|
struct radeon_bo_manager* bom =
|
||||||
|
((struct radeon_winsys*)screen->winsys)->bom;
|
||||||
struct radeon_pipe_buffer* radeon_buffer;
|
struct radeon_pipe_buffer* radeon_buffer;
|
||||||
struct radeon_bo* bo = NULL;
|
struct radeon_bo* bo = NULL;
|
||||||
|
|
||||||
|
@ -92,18 +94,28 @@ boolean radeon_handle_from_buffer(struct pipe_screen* screen,
|
||||||
struct pipe_buffer* buffer,
|
struct pipe_buffer* buffer,
|
||||||
unsigned* handle)
|
unsigned* handle)
|
||||||
{
|
{
|
||||||
|
struct radeon_pipe_buffer* radeon_buffer =
|
||||||
|
(struct radeon_pipe_buffer*)buffer;
|
||||||
|
*handle = radeon_buffer->bo->handle;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
|
boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
|
||||||
struct pipe_buffer* buffer,
|
struct pipe_buffer* buffer,
|
||||||
unsigned* handle)
|
unsigned* handle)
|
||||||
{
|
{
|
||||||
|
/* XXX WTF is the difference here? global? */
|
||||||
|
struct radeon_pipe_buffer* radeon_buffer =
|
||||||
|
(struct radeon_pipe_buffer*)buffer;
|
||||||
|
*handle = radeon_buffer->bo->handle;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct drm_api drm_api_hooks = {
|
struct drm_api drm_api_hooks = {
|
||||||
.create_screen = radeon_create_screen,
|
.create_screen = radeon_create_screen,
|
||||||
.create_context = radeon_create_context,
|
.create_context = radeon_create_context,
|
||||||
.buffer_from_texture = radeon_buffer_from_texture,
|
/* XXX fix this */
|
||||||
|
.buffer_from_texture = r300_get_texture_buffer,
|
||||||
.buffer_from_handle = radeon_buffer_from_handle,
|
.buffer_from_handle = radeon_buffer_from_handle,
|
||||||
.handle_from_buffer = radeon_handle_from_buffer,
|
.handle_from_buffer = radeon_handle_from_buffer,
|
||||||
.global_handle_from_buffer = radeon_global_handle_from_buffer,
|
.global_handle_from_buffer = radeon_global_handle_from_buffer,
|
||||||
|
|
Loading…
Reference in New Issue