am bd94d9af: part of fix [2186418] switch qsd8k devices to 24-bits framebuffer
Merge commit 'bd94d9af5cc7067b0e849af076183626b4c32e4e' into eclair-mr2 * commit 'bd94d9af5cc7067b0e849af076183626b4c32e4e': part of fix [2186418] switch qsd8k devices to 24-bits framebuffer
This commit is contained in:
		| @@ -59,7 +59,8 @@ struct fb_context_t { | ||||
| /*****************************************************************************/ | ||||
|  | ||||
| static void | ||||
| msm_copy_buffer(buffer_handle_t handle, int fd, int width, int height, | ||||
| msm_copy_buffer(buffer_handle_t handle, int fd, | ||||
|                 int width, int height, int format, | ||||
|                 int x, int y, int w, int h); | ||||
|  | ||||
| static int fb_setSwapInterval(struct framebuffer_device_t* dev, | ||||
| @@ -120,9 +121,6 @@ static int fb_post(struct framebuffer_device_t* dev, buffer_handle_t buffer) | ||||
|         m->currentBuffer = buffer; | ||||
|          | ||||
|     } else { | ||||
|         // If we can't do the page_flip, just copy the buffer to the front  | ||||
|         // FIXME: use copybit HAL instead of memcpy | ||||
|          | ||||
|         void* fb_vaddr; | ||||
|         void* buffer_vaddr; | ||||
|          | ||||
| @@ -138,8 +136,9 @@ static int fb_post(struct framebuffer_device_t* dev, buffer_handle_t buffer) | ||||
|  | ||||
|         //memcpy(fb_vaddr, buffer_vaddr, m->finfo.line_length * m->info.yres); | ||||
|  | ||||
|         msm_copy_buffer(m->framebuffer, m->framebuffer->fd, | ||||
|                 m->info.xres, m->info.yres, | ||||
|         msm_copy_buffer( | ||||
|                 m->framebuffer, m->framebuffer->fd, | ||||
|                 m->info.xres, m->info.yres, m->fbFormat, | ||||
|                 m->info.xoffset, m->info.yoffset, | ||||
|                 m->info.width, m->info.height); | ||||
|  | ||||
| @@ -199,18 +198,26 @@ int mapFrameBufferLocked(struct private_module_t* module) | ||||
|     info.yoffset = 0; | ||||
|     info.activate = FB_ACTIVATE_NOW; | ||||
|  | ||||
|     /* Interpretation of offset for color fields: All offsets are from the right, | ||||
|     * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you | ||||
|     * can use the offset as right argument to <<). A pixel afterwards is a bit | ||||
|     * stream and is written to video memory as that unmodified. This implies | ||||
|     * big-endian byte order if bits_per_pixel is greater than 8. | ||||
|     */ | ||||
|  | ||||
|     /* | ||||
|      * Explicitly request 5/6/5 | ||||
|      * Explicitly request RGBA_8888 | ||||
|      */ | ||||
|     info.bits_per_pixel = 16; | ||||
|     info.red.offset     = 11; | ||||
|     info.red.length     = 5; | ||||
|     info.green.offset   = 5; | ||||
|     info.green.length   = 6; | ||||
|     info.blue.offset    = 0; | ||||
|     info.blue.length    = 5; | ||||
|     info.bits_per_pixel = 32; | ||||
|     info.red.offset     = 24; | ||||
|     info.red.length     = 8; | ||||
|     info.green.offset   = 16; | ||||
|     info.green.length   = 8; | ||||
|     info.blue.offset    = 8; | ||||
|     info.blue.length    = 8; | ||||
|     info.transp.offset  = 0; | ||||
|     info.transp.length  = 0; | ||||
|     module->fbFormat = HAL_PIXEL_FORMAT_RGBX_8888; | ||||
|  | ||||
|     /* | ||||
|      * Request NUM_BUFFERS screens (at lest 2 for page flipping) | ||||
| @@ -378,7 +385,7 @@ int fb_device_open(hw_module_t const* module, const char* name, | ||||
|             const_cast<uint32_t&>(dev->device.width) = m->info.xres; | ||||
|             const_cast<uint32_t&>(dev->device.height) = m->info.yres; | ||||
|             const_cast<int&>(dev->device.stride) = stride; | ||||
|             const_cast<int&>(dev->device.format) = HAL_PIXEL_FORMAT_RGB_565; | ||||
|             const_cast<int&>(dev->device.format) = m->fbFormat; | ||||
|             const_cast<float&>(dev->device.xdpi) = m->xdpi; | ||||
|             const_cast<float&>(dev->device.ydpi) = m->ydpi; | ||||
|             const_cast<float&>(dev->device.fps) = m->fps; | ||||
| @@ -400,7 +407,8 @@ int fb_device_open(hw_module_t const* module, const char* name, | ||||
| /* Copy a pmem buffer to the framebuffer */ | ||||
|  | ||||
| static void | ||||
| msm_copy_buffer(buffer_handle_t handle, int fd, int width, int height, | ||||
| msm_copy_buffer(buffer_handle_t handle, int fd, | ||||
|                 int width, int height, int format, | ||||
|                 int x, int y, int w, int h) | ||||
| { | ||||
|     struct { | ||||
| @@ -425,7 +433,7 @@ msm_copy_buffer(buffer_handle_t handle, int fd, int width, int height, | ||||
|     blit.req.dst.height = height; | ||||
|     blit.req.dst.offset = 0; | ||||
|     blit.req.dst.memory_id = fd;  | ||||
|     blit.req.dst.format = MDP_RGB_565; | ||||
|     blit.req.dst.format = format; | ||||
|  | ||||
|     blit.req.src_rect.x = blit.req.dst_rect.x = x; | ||||
|     blit.req.src_rect.y = blit.req.dst_rect.y = y; | ||||
|   | ||||
| @@ -104,6 +104,7 @@ struct private_module_t HAL_MODULE_INFO_SYM = { | ||||
|         perform: gralloc_perform, | ||||
|     }, | ||||
|     framebuffer: 0, | ||||
|     fbFormat: 0, | ||||
|     flags: 0, | ||||
|     numBuffers: 0, | ||||
|     bufferMask: 0, | ||||
|   | ||||
| @@ -38,6 +38,7 @@ struct private_module_t { | ||||
|     gralloc_module_t base; | ||||
|  | ||||
|     struct private_handle_t* framebuffer; | ||||
|     uint32_t fbFormat; | ||||
|     uint32_t flags; | ||||
|     uint32_t numBuffers; | ||||
|     uint32_t bufferMask; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user