aboutsummaryrefslogtreecommitdiffstats
path: root/meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch
diff options
context:
space:
mode:
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.patch111
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 0000000000..1b928b4c09
--- /dev/null
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch
@@ -0,0 +1,111 @@
+From 6622e8eba85cea476f8ef5b8c3620c4a0f024dcd Mon Sep 17 00:00:00 2001
+From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
+Date: Wed, 4 Nov 2009 10:56:54 +0000
+Subject: [PATCH] [G45] Add RGBA subpictures.
+
+---
+ i965_drv_video/i965_drv_video.c | 18 ++++++++++++++++++
+ i965_drv_video/i965_drv_video.h | 3 ++-
+ i965_drv_video/i965_render.c | 8 ++++----
+ 3 files changed, 24 insertions(+), 5 deletions(-)
+
+diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
+index 8f4bfc1..92c4785 100644
+--- a/i965_drv_video/i965_drv_video.c
++++ b/i965_drv_video/i965_drv_video.c
+@@ -70,6 +70,14 @@ i965_subpic_formats_map[I965_MAX_SUBPIC_FORMATS + 1] = {
+ { I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A4P4_UNORM,
+ { VA_FOURCC('A','I','4','4'), VA_MSB_FIRST, 8, },
+ 0 },
++ { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_B8G8R8A8_UNORM,
++ { VA_FOURCC('B','G','R','A'), VA_LSB_FIRST, 32,
++ 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 },
++ 0 },
++ { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_R8G8B8A8_UNORM,
++ { VA_FOURCC('R','G','B','A'), VA_LSB_FIRST, 32,
++ 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 },
++ 0 },
+ };
+
+ static const i965_subpic_format_map_t *
+@@ -467,6 +475,7 @@ i965_CreateSubpicture(VADriverContextP ctx,
+ obj_subpic->format = m->format;
+ obj_subpic->width = obj_image->image.width;
+ obj_subpic->height = obj_image->image.height;
++ obj_subpic->pitch = obj_image->image.pitches[0];
+ obj_subpic->bo = obj_image->bo;
+ return VA_STATUS_SUCCESS;
+ }
+@@ -1218,6 +1227,15 @@ i965_CreateImage(VADriverContextP ctx,
+ image->component_order[1] = 'G';
+ image->component_order[2] = 'B';
+ break;
++ case VA_FOURCC('A','R','G','B'):
++ case VA_FOURCC('A','B','G','R'):
++ case VA_FOURCC('B','G','R','A'):
++ case VA_FOURCC('R','G','B','A'):
++ image->num_planes = 1;
++ image->pitches[0] = width * 4;
++ image->offsets[0] = 0;
++ image->data_size = image->offsets[0] + image->pitches[0] * height;
++ break;
+ default:
+ goto error;
+ }
+diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
+index c95c799..4d775da 100644
+--- a/i965_drv_video/i965_drv_video.h
++++ b/i965_drv_video/i965_drv_video.h
+@@ -42,7 +42,7 @@
+ #define I965_MAX_ENTRYPOINTS 5
+ #define I965_MAX_CONFIG_ATTRIBUTES 10
+ #define I965_MAX_IMAGE_FORMATS 10
+-#define I965_MAX_SUBPIC_FORMATS 2
++#define I965_MAX_SUBPIC_FORMATS 4
+ #define I965_MAX_DISPLAY_ATTRIBUTES 4
+ #define I965_STR_VENDOR "i965 Driver 0.1"
+
+@@ -124,6 +124,7 @@ struct object_subpic
+ unsigned int format;
+ int width;
+ int height;
++ int pitch;
+ dri_bo *bo;
+ };
+
+diff --git a/i965_drv_video/i965_render.c b/i965_drv_video/i965_render.c
+index f105e90..0476087 100644
+--- a/i965_drv_video/i965_render.c
++++ b/i965_drv_video/i965_render.c
+@@ -586,7 +586,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx,
+ int index,
+ dri_bo *region,
+ unsigned long offset,
+- int w, int h, int format)
++ int w, int h, int p, int format)
+ {
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+ struct i965_render_state *render_state = &i965->render_state;
+@@ -620,7 +620,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx,
+ ss->ss2.mip_count = 0;
+ ss->ss2.render_target_rotation = 0;
+
+- ss->ss3.pitch = w - 1;
++ ss->ss3.pitch = p - 1;
+
+ dri_bo_emit_reloc(ss_bo,
+ I915_GEM_DOMAIN_SAMPLER, 0,
+@@ -678,8 +678,8 @@ i965_subpic_render_src_surfaces_state(VADriverContextP ctx,
+ region = obj_surface->bo;
+ subpic_region = obj_image->bo;
+ /*subpicture surface*/
+- i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format);
+- i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format);
++ i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format);
++ i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format);
+ }
+
+ static void
+--
+1.5.4.3
+