summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorChristian König <[email protected]>2011-03-26 10:58:38 +0100
committerChristian König <[email protected]>2011-03-26 10:58:38 +0100
commit5f23328a8ad991ef1c70f045865b6a5e13323b67 (patch)
tree902efd20c80d2f6a300077b2e853432e05439659 /src/gallium/state_trackers
parentc001c393713f36144701f3a61b6c7de7811898ee (diff)
[g3dvl] get sampler swizzle right for subpictures
This should make ai44 work correctly.
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/xorg/xvmc/subpicture.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/src/gallium/state_trackers/xorg/xvmc/subpicture.c b/src/gallium/state_trackers/xorg/xvmc/subpicture.c
index 3d0bb7ab67e..260303081d4 100644
--- a/src/gallium/state_trackers/xorg/xvmc/subpicture.c
+++ b/src/gallium/state_trackers/xorg/xvmc/subpicture.c
@@ -193,24 +193,31 @@ Status XvMCCreateSubpicture(Display *dpy, XvMCContext *context, XvMCSubpicture *
memset(&sampler_templ, 0, sizeof(sampler_templ));
u_sampler_view_default_template(&sampler_templ, tex, tex->format);
-#if 0
- switch (image->id) {
+ switch (xvimage_id) {
case FOURCC_RGB:
- assert(subpicture_priv->sfc->format == XvIDToPipe(image->id));
- for (y = 0; y < height; ++y) {
- dst_line = dst;
- for (x = 0; x < width; ++x, src += 3, dst_line += 4) {
- dst_line[0] = src[2]; /* B */
- dst_line[1] = src[1]; /* G */
- dst_line[2] = src[0]; /* R */
- }
- dst += xfer->stride;
- }
+ sampler_templ.swizzle_r = PIPE_SWIZZLE_BLUE;
+ sampler_templ.swizzle_g = PIPE_SWIZZLE_GREEN;
+ sampler_templ.swizzle_b = PIPE_SWIZZLE_RED;
+ sampler_templ.swizzle_a = PIPE_SWIZZLE_ONE;
+ break;
+
+ case FOURCC_AI44:
+ sampler_templ.swizzle_r = PIPE_SWIZZLE_ALPHA;
+ sampler_templ.swizzle_g = PIPE_SWIZZLE_ALPHA;
+ sampler_templ.swizzle_b = PIPE_SWIZZLE_ALPHA;
+ sampler_templ.swizzle_a = PIPE_SWIZZLE_RED;
break;
+
+ case FOURCC_IA44:
+ sampler_templ.swizzle_r = PIPE_SWIZZLE_RED;
+ sampler_templ.swizzle_g = PIPE_SWIZZLE_RED;
+ sampler_templ.swizzle_b = PIPE_SWIZZLE_RED;
+ sampler_templ.swizzle_a = PIPE_SWIZZLE_ALPHA;
+ break;
+
default:
- XVMC_MSG(XVMC_ERR, "[XvMC] Unrecognized Xv image ID 0x%08X.\n", image->id);
+ XVMC_MSG(XVMC_ERR, "[XvMC] Unrecognized Xv image ID 0x%08X.\n", xvimage_id);
}
-#endif
subpicture_priv->sampler = vpipe->create_sampler_view(vpipe, tex, &sampler_templ);
pipe_resource_reference(&tex, NULL);