mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-23 16:00:41 +02:00
gallium/radeon: pass create_screen flags to r600_common_screen_init
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
118b2008ba
commit
a98a04ec80
16 changed files with 34 additions and 26 deletions
|
|
@ -90,7 +90,7 @@ pipe_r300_create_screen(int fd, unsigned flags)
|
|||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
rw = radeon_drm_winsys_create(fd, r300_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, flags, r300_screen_create);
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ pipe_r600_create_screen(int fd, unsigned flags)
|
|||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
rw = radeon_drm_winsys_create(fd, r600_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, flags, r600_screen_create);
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
||||
|
|
@ -142,10 +142,10 @@ pipe_radeonsi_create_screen(int fd, unsigned flags)
|
|||
struct radeon_winsys *rw;
|
||||
|
||||
/* First, try amdgpu. */
|
||||
rw = amdgpu_winsys_create(fd, radeonsi_screen_create);
|
||||
rw = amdgpu_winsys_create(fd, flags, radeonsi_screen_create);
|
||||
|
||||
if (!rw)
|
||||
rw = radeon_drm_winsys_create(fd, radeonsi_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, flags, radeonsi_screen_create);
|
||||
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ extern "C" {
|
|||
|
||||
struct radeon_winsys;
|
||||
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws);
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws, unsigned flags);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
|
|
|||
|
|
@ -724,7 +724,7 @@ static boolean r300_fence_finish(struct pipe_screen *screen,
|
|||
return rws->fence_wait(rws, fence, timeout);
|
||||
}
|
||||
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws)
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws, unsigned flags)
|
||||
{
|
||||
struct r300_screen *r300screen = CALLOC_STRUCT(r300_screen);
|
||||
|
||||
|
|
|
|||
|
|
@ -632,7 +632,7 @@ static struct pipe_resource *r600_resource_create(struct pipe_screen *screen,
|
|||
return r600_resource_create_common(screen, templ);
|
||||
}
|
||||
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws)
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws, unsigned flags)
|
||||
{
|
||||
struct r600_screen *rscreen = CALLOC_STRUCT(r600_screen);
|
||||
|
||||
|
|
@ -647,7 +647,7 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws)
|
|||
rscreen->b.b.get_shader_param = r600_get_shader_param;
|
||||
rscreen->b.b.resource_create = r600_resource_create;
|
||||
|
||||
if (!r600_common_screen_init(&rscreen->b, ws)) {
|
||||
if (!r600_common_screen_init(&rscreen->b, ws, flags)) {
|
||||
FREE(rscreen);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,6 @@
|
|||
|
||||
struct radeon_winsys;
|
||||
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws);
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws, unsigned flags);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1322,7 +1322,7 @@ struct pipe_resource *r600_resource_create_common(struct pipe_screen *screen,
|
|||
}
|
||||
|
||||
bool r600_common_screen_init(struct r600_common_screen *rscreen,
|
||||
struct radeon_winsys *ws)
|
||||
struct radeon_winsys *ws, unsigned flags)
|
||||
{
|
||||
char family_name[32] = {}, llvm_string[32] = {}, kernel_version[128] = {};
|
||||
struct utsname uname_data;
|
||||
|
|
|
|||
|
|
@ -745,7 +745,7 @@ void r600_draw_rectangle(struct blitter_context *blitter,
|
|||
enum blitter_attrib_type type,
|
||||
const union pipe_color_union *attrib);
|
||||
bool r600_common_screen_init(struct r600_common_screen *rscreen,
|
||||
struct radeon_winsys *ws);
|
||||
struct radeon_winsys *ws, unsigned flags);
|
||||
void r600_destroy_common_screen(struct r600_common_screen *rscreen);
|
||||
void r600_preflush_suspend_features(struct r600_common_context *ctx);
|
||||
void r600_postflush_resume_features(struct r600_common_context *ctx);
|
||||
|
|
|
|||
|
|
@ -916,7 +916,8 @@ static void si_test_vmfault(struct si_screen *sscreen)
|
|||
exit(0);
|
||||
}
|
||||
|
||||
struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
|
||||
struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
|
||||
unsigned flags)
|
||||
{
|
||||
struct si_screen *sscreen = CALLOC_STRUCT(si_screen);
|
||||
unsigned num_threads, num_compiler_threads, num_compiler_threads_lowprio, i;
|
||||
|
|
@ -934,7 +935,7 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
|
|||
|
||||
si_init_screen_state_functions(sscreen);
|
||||
|
||||
if (!r600_common_screen_init(&sscreen->b, ws) ||
|
||||
if (!r600_common_screen_init(&sscreen->b, ws, flags) ||
|
||||
!si_init_gs_info(sscreen) ||
|
||||
!si_init_shader_cache(sscreen)) {
|
||||
FREE(sscreen);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
struct radeon_winsys;
|
||||
|
||||
struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws);
|
||||
struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
|
||||
unsigned flags);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ create_screen(int fd, unsigned flags)
|
|||
{
|
||||
struct radeon_winsys *sws;
|
||||
|
||||
sws = radeon_drm_winsys_create(fd, r300_screen_create);
|
||||
sws = radeon_drm_winsys_create(fd, flags, r300_screen_create);
|
||||
return sws ? debug_screen_wrap(sws->screen) : NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ create_screen(int fd, unsigned flags)
|
|||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
rw = radeon_drm_winsys_create(fd, r600_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, flags, r600_screen_create);
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@ create_screen(int fd, unsigned flags)
|
|||
struct radeon_winsys *rw;
|
||||
|
||||
/* First, try amdgpu. */
|
||||
rw = amdgpu_winsys_create(fd, radeonsi_screen_create);
|
||||
rw = amdgpu_winsys_create(fd, flags, radeonsi_screen_create);
|
||||
|
||||
if (!rw)
|
||||
rw = radeon_drm_winsys_create(fd, radeonsi_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, flags, radeonsi_screen_create);
|
||||
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,11 @@
|
|||
struct radeon_winsys;
|
||||
struct pipe_screen;
|
||||
|
||||
typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *);
|
||||
typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *,
|
||||
unsigned);
|
||||
|
||||
struct radeon_winsys *
|
||||
amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create);
|
||||
amdgpu_winsys_create(int fd, unsigned flags,
|
||||
radeon_screen_create_t screen_create);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -229,7 +229,8 @@ static const char* amdgpu_get_chip_name(struct radeon_winsys *ws)
|
|||
|
||||
|
||||
PUBLIC struct radeon_winsys *
|
||||
amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create)
|
||||
amdgpu_winsys_create(int fd, unsigned flags,
|
||||
radeon_screen_create_t screen_create)
|
||||
{
|
||||
struct amdgpu_winsys *ws;
|
||||
drmVersionPtr version = drmGetVersion(fd);
|
||||
|
|
@ -324,7 +325,7 @@ amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create)
|
|||
*
|
||||
* Alternatively, we could create the screen based on "ws->gen"
|
||||
* and link all drivers into one binary blob. */
|
||||
ws->base.screen = screen_create(&ws->base);
|
||||
ws->base.screen = screen_create(&ws->base, flags);
|
||||
if (!ws->base.screen) {
|
||||
amdgpu_winsys_destroy(&ws->base);
|
||||
mtx_unlock(&dev_tab_mutex);
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@
|
|||
struct radeon_winsys;
|
||||
struct pipe_screen;
|
||||
|
||||
typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *);
|
||||
typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *,
|
||||
unsigned);
|
||||
|
||||
struct radeon_winsys *
|
||||
radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create);
|
||||
radeon_drm_winsys_create(int fd, unsigned flags,
|
||||
radeon_screen_create_t screen_create);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -735,7 +735,8 @@ static int handle_compare(void *key1, void *key2)
|
|||
}
|
||||
|
||||
PUBLIC struct radeon_winsys *
|
||||
radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create)
|
||||
radeon_drm_winsys_create(int fd, unsigned flags,
|
||||
radeon_screen_create_t screen_create)
|
||||
{
|
||||
struct radeon_drm_winsys *ws;
|
||||
|
||||
|
|
@ -830,7 +831,7 @@ radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create)
|
|||
*
|
||||
* Alternatively, we could create the screen based on "ws->gen"
|
||||
* and link all drivers into one binary blob. */
|
||||
ws->base.screen = screen_create(&ws->base);
|
||||
ws->base.screen = screen_create(&ws->base, flags);
|
||||
if (!ws->base.screen) {
|
||||
radeon_winsys_destroy(&ws->base);
|
||||
mtx_unlock(&fd_tab_mutex);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue