diff options
Diffstat (limited to 'meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch')
-rw-r--r-- | meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch new file mode 100644 index 00000000..1b928b4c --- /dev/null +++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch | |||
@@ -0,0 +1,111 @@ | |||
1 | From 6622e8eba85cea476f8ef5b8c3620c4a0f024dcd Mon Sep 17 00:00:00 2001 | ||
2 | From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com> | ||
3 | Date: Wed, 4 Nov 2009 10:56:54 +0000 | ||
4 | Subject: [PATCH] [G45] Add RGBA subpictures. | ||
5 | |||
6 | --- | ||
7 | i965_drv_video/i965_drv_video.c | 18 ++++++++++++++++++ | ||
8 | i965_drv_video/i965_drv_video.h | 3 ++- | ||
9 | i965_drv_video/i965_render.c | 8 ++++---- | ||
10 | 3 files changed, 24 insertions(+), 5 deletions(-) | ||
11 | |||
12 | diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c | ||
13 | index 8f4bfc1..92c4785 100644 | ||
14 | --- a/i965_drv_video/i965_drv_video.c | ||
15 | +++ b/i965_drv_video/i965_drv_video.c | ||
16 | @@ -70,6 +70,14 @@ i965_subpic_formats_map[I965_MAX_SUBPIC_FORMATS + 1] = { | ||
17 | { I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A4P4_UNORM, | ||
18 | { VA_FOURCC('A','I','4','4'), VA_MSB_FIRST, 8, }, | ||
19 | 0 }, | ||
20 | + { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_B8G8R8A8_UNORM, | ||
21 | + { VA_FOURCC('B','G','R','A'), VA_LSB_FIRST, 32, | ||
22 | + 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 }, | ||
23 | + 0 }, | ||
24 | + { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_R8G8B8A8_UNORM, | ||
25 | + { VA_FOURCC('R','G','B','A'), VA_LSB_FIRST, 32, | ||
26 | + 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 }, | ||
27 | + 0 }, | ||
28 | }; | ||
29 | |||
30 | static const i965_subpic_format_map_t * | ||
31 | @@ -467,6 +475,7 @@ i965_CreateSubpicture(VADriverContextP ctx, | ||
32 | obj_subpic->format = m->format; | ||
33 | obj_subpic->width = obj_image->image.width; | ||
34 | obj_subpic->height = obj_image->image.height; | ||
35 | + obj_subpic->pitch = obj_image->image.pitches[0]; | ||
36 | obj_subpic->bo = obj_image->bo; | ||
37 | return VA_STATUS_SUCCESS; | ||
38 | } | ||
39 | @@ -1218,6 +1227,15 @@ i965_CreateImage(VADriverContextP ctx, | ||
40 | image->component_order[1] = 'G'; | ||
41 | image->component_order[2] = 'B'; | ||
42 | break; | ||
43 | + case VA_FOURCC('A','R','G','B'): | ||
44 | + case VA_FOURCC('A','B','G','R'): | ||
45 | + case VA_FOURCC('B','G','R','A'): | ||
46 | + case VA_FOURCC('R','G','B','A'): | ||
47 | + image->num_planes = 1; | ||
48 | + image->pitches[0] = width * 4; | ||
49 | + image->offsets[0] = 0; | ||
50 | + image->data_size = image->offsets[0] + image->pitches[0] * height; | ||
51 | + break; | ||
52 | default: | ||
53 | goto error; | ||
54 | } | ||
55 | diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h | ||
56 | index c95c799..4d775da 100644 | ||
57 | --- a/i965_drv_video/i965_drv_video.h | ||
58 | +++ b/i965_drv_video/i965_drv_video.h | ||
59 | @@ -42,7 +42,7 @@ | ||
60 | #define I965_MAX_ENTRYPOINTS 5 | ||
61 | #define I965_MAX_CONFIG_ATTRIBUTES 10 | ||
62 | #define I965_MAX_IMAGE_FORMATS 10 | ||
63 | -#define I965_MAX_SUBPIC_FORMATS 2 | ||
64 | +#define I965_MAX_SUBPIC_FORMATS 4 | ||
65 | #define I965_MAX_DISPLAY_ATTRIBUTES 4 | ||
66 | #define I965_STR_VENDOR "i965 Driver 0.1" | ||
67 | |||
68 | @@ -124,6 +124,7 @@ struct object_subpic | ||
69 | unsigned int format; | ||
70 | int width; | ||
71 | int height; | ||
72 | + int pitch; | ||
73 | dri_bo *bo; | ||
74 | }; | ||
75 | |||
76 | diff --git a/i965_drv_video/i965_render.c b/i965_drv_video/i965_render.c | ||
77 | index f105e90..0476087 100644 | ||
78 | --- a/i965_drv_video/i965_render.c | ||
79 | +++ b/i965_drv_video/i965_render.c | ||
80 | @@ -586,7 +586,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx, | ||
81 | int index, | ||
82 | dri_bo *region, | ||
83 | unsigned long offset, | ||
84 | - int w, int h, int format) | ||
85 | + int w, int h, int p, int format) | ||
86 | { | ||
87 | struct i965_driver_data *i965 = i965_driver_data(ctx); | ||
88 | struct i965_render_state *render_state = &i965->render_state; | ||
89 | @@ -620,7 +620,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx, | ||
90 | ss->ss2.mip_count = 0; | ||
91 | ss->ss2.render_target_rotation = 0; | ||
92 | |||
93 | - ss->ss3.pitch = w - 1; | ||
94 | + ss->ss3.pitch = p - 1; | ||
95 | |||
96 | dri_bo_emit_reloc(ss_bo, | ||
97 | I915_GEM_DOMAIN_SAMPLER, 0, | ||
98 | @@ -678,8 +678,8 @@ i965_subpic_render_src_surfaces_state(VADriverContextP ctx, | ||
99 | region = obj_surface->bo; | ||
100 | subpic_region = obj_image->bo; | ||
101 | /*subpicture surface*/ | ||
102 | - i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format); | ||
103 | - i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format); | ||
104 | + i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format); | ||
105 | + i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format); | ||
106 | } | ||
107 | |||
108 | static void | ||
109 | -- | ||
110 | 1.5.4.3 | ||
111 | |||