Subversion Repositories Kolibri OS

Rev

Rev 4401 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4401 Rev 4494
Line 105... Line 105...
105
{
105
{
106
   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
106
   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
107
   struct dri2_egl_config *dri2_conf = dri2_egl_config(conf);
107
   struct dri2_egl_config *dri2_conf = dri2_egl_config(conf);
108
   struct dri2_egl_surface *dri2_surf;
108
   struct dri2_egl_surface *dri2_surf;
109
   struct gbm_dri_surface *surf;
109
   struct gbm_dri_surface *surf;
-
 
110
   struct gbm_bo       *bo;
-
 
111
   _EGLImage           *img;
-
 
112
   EGLint attr[10];
Line 110... Line 113...
110
 
113
 
Line 111... Line 114...
111
   (void) drv;
114
   (void) drv;
112
 
115
 
Line 131... Line 134...
131
      break;
134
      break;
132
   default:
135
   default:
133
      goto cleanup_surf;
136
      goto cleanup_surf;
134
   }
137
   }
Line -... Line 138...
-
 
138
 
-
 
139
   attr[0] = EGL_WIDTH;
-
 
140
   attr[1] = surf->base.width;
-
 
141
   attr[2] = EGL_HEIGHT;
-
 
142
   attr[3] = surf->base.height;
-
 
143
   attr[4] = EGL_DRM_BUFFER_FORMAT_MESA;
-
 
144
   attr[5] = EGL_DRM_BUFFER_FORMAT_ARGB32_MESA;
-
 
145
   attr[6] = EGL_DRM_BUFFER_USE_MESA;
-
 
146
   attr[7] = EGL_DRM_BUFFER_USE_SHARE_MESA;
-
 
147
   attr[8] = EGL_NONE;
-
 
148
 
-
 
149
   img = drv->API.CreateDRMImageMESA(drv, disp, attr);
-
 
150
   dri2_surf->egl_front = img;
-
 
151
   dri2_surf->khr_front = (img) ? _eglLinkImage(img) : EGL_NO_IMAGE_KHR;
-
 
152
 
-
 
153
   bo = gbm_bo_import(&dri2_dpy->gbm_dri->base.base,
-
 
154
                      GBM_BO_IMPORT_EGL_IMAGE, dri2_surf->khr_front, 0);
-
 
155
   if( bo == NULL){
-
 
156
      _eglError(EGL_BAD_ALLOC, "gbm_bo_create front buffer");
-
 
157
      goto cleanup_surf;
-
 
158
   }
-
 
159
   dri2_surf->color_buffers[1].bo = bo;
-
 
160
 
-
 
161
   img = drv->API.CreateDRMImageMESA(drv, disp, attr);
-
 
162
   dri2_surf->egl_back = img;
-
 
163
   dri2_surf->khr_back = (img) ? _eglLinkImage(img) : EGL_NO_IMAGE_KHR;
-
 
164
 
-
 
165
   bo = gbm_bo_import(&dri2_dpy->gbm_dri->base.base,
-
 
166
                      GBM_BO_IMPORT_EGL_IMAGE, dri2_surf->khr_back, 0);
-
 
167
   if( bo == NULL){
-
 
168
      _eglError(EGL_BAD_ALLOC, "gbm_bo_create back buffer");
-
 
169
      goto cleanup_surf;
-
 
170
   }
-
 
171
   dri2_surf->color_buffers[2].bo = bo;
-
 
172
 
135
 
173
 
136
   dri2_surf->dri_drawable =
174
   dri2_surf->dri_drawable =
137
      (*dri2_dpy->dri2->createNewDrawable) (dri2_dpy->dri_screen,
175
      (*dri2_dpy->dri2->createNewDrawable) (dri2_dpy->dri_screen,
138
					    dri2_conf->dri_double_config,
176
					    dri2_conf->dri_double_config,
Line 149... Line 187...
149
   free(dri2_surf);
187
   free(dri2_surf);
Line 150... Line 188...
150
 
188
 
151
   return NULL;
189
   return NULL;
Line -... Line 190...
-
 
190
}
-
 
191
 
-
 
192
static EGLImageKHR
-
 
193
dri2_get_fb_image(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw, EGLint type)
-
 
194
{
-
 
195
   struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
-
 
196
 
-
 
197
   return (type == EGL_DRM_BUFFER_FRONT) ? dri2_surf->khr_front:dri2_surf->khr_back;
-
 
198
}
152
}
199
 
153
 
200
 
154
static _EGLSurface *
201
static _EGLSurface *
155
dri2_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
202
dri2_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
156
			   _EGLConfig *conf, EGLNativeWindowType window,
203
			   _EGLConfig *conf, EGLNativeWindowType window,
Line 563... Line 610...
563
   drv->API.CreateWindowSurface = dri2_create_window_surface;
610
   drv->API.CreateWindowSurface = dri2_create_window_surface;
564
   drv->API.DestroySurface = dri2_destroy_surface;
611
   drv->API.DestroySurface = dri2_destroy_surface;
565
   drv->API.SwapBuffers = dri2_swap_buffers;
612
   drv->API.SwapBuffers = dri2_swap_buffers;
566
   drv->API.CreateImageKHR = dri2_drm_create_image_khr;
613
   drv->API.CreateImageKHR = dri2_drm_create_image_khr;
567
   drv->API.QueryBufferAge = dri2_query_buffer_age;
614
   drv->API.QueryBufferAge = dri2_query_buffer_age;
-
 
615
   drv->API.GetImageFB = dri2_get_fb_image;
Line 568... Line 616...
568
 
616
 
Line 569... Line 617...
569
   disp->Extensions.EXT_buffer_age = EGL_TRUE;
617
   disp->Extensions.EXT_buffer_age = EGL_TRUE;
570
 
618