summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYounes Manton <younes.m@gmail.com>2008-09-13 01:35:14 -0400
committerYounes Manton <younes.m@gmail.com>2008-09-13 01:35:14 -0400
commit3122f2bebe8d76568916b8cddff542f52466055e (patch)
treef5037a5cb316781772ea9dccdb11e3b2201e4e01
parent56c22687e139e8fede6f7ea4d524699364dda07c (diff)
g3dvl: Fix field coded block copy.
-rw-r--r--src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c18
-rw-r--r--src/libXvMC/surface.c8
2 files changed, 8 insertions, 18 deletions
diff --git a/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c b/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c
index 75d326b36..888f0040b 100644
--- a/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c
+++ b/src/gallium/state_trackers/g3dvl/vl_r16snorm_mc_buf.c
@@ -108,17 +108,7 @@ static inline int vlGrabFieldCodedBlock(short *src, short *dst, unsigned int dst
{
unsigned int y;
- for (y = 0; y < VL_BLOCK_HEIGHT / 2; ++y)
- memcpy
- (
- dst + y * dst_pitch * 2,
- src + y * VL_BLOCK_WIDTH,
- VL_BLOCK_WIDTH * 2
- );
-
- dst += VL_BLOCK_HEIGHT * dst_pitch;
-
- for (; y < VL_BLOCK_HEIGHT; ++y)
+ for (y = 0; y < VL_BLOCK_HEIGHT; ++y)
memcpy
(
dst + y * dst_pitch * 2,
@@ -1181,7 +1171,7 @@ static int vlCreateVertexShaderFieldPMB
ti += tgsi_build_full_declaration(&decl, &tokens[ti], header, max_tokens - ti);
}
- /* decl c0 ; Texcoord denorm coefficients */
+ /* decl c0 ; Render target dimensions */
decl = vl_decl_constants(TGSI_SEMANTIC_GENERIC, 0, 0, 0);
ti += tgsi_build_full_declaration(&decl, &tokens[ti], header, max_tokens - ti);
@@ -1661,8 +1651,8 @@ static int vlCreateVertexShaderFieldBMB
ti += tgsi_build_full_declaration(&decl, &tokens[ti], header, max_tokens - ti);
}
- /* decl c0 ; Denorm coefficients */
- decl = vl_decl_constants(TGSI_SEMANTIC_GENERIC, 0, 0, 6);
+ /* decl c0 ; Render target dimensions */
+ decl = vl_decl_constants(TGSI_SEMANTIC_GENERIC, 0, 0, 0);
ti += tgsi_build_full_declaration(&decl, &tokens[ti], header, max_tokens - ti);
/*
diff --git a/src/libXvMC/surface.c b/src/libXvMC/surface.c
index a920da52f..6031b39d1 100644
--- a/src/libXvMC/surface.c
+++ b/src/libXvMC/surface.c
@@ -40,12 +40,12 @@ static enum vlPictureType PictureToVL(int xvmc_pic)
return -1;
}
-static enum vlMotionType MotionToVL(int xvmc_motion_type)
+static enum vlMotionType MotionToVL(int xvmc_motion_type, int xvmc_dct_type)
{
switch (xvmc_motion_type)
{
case XVMC_PREDICTION_FRAME:
- return vlMotionTypeFrame;
+ return xvmc_dct_type == XVMC_DCT_TYPE_FIELD ? vlMotionType16x8 : vlMotionTypeFrame;
case XVMC_PREDICTION_FIELD:
return vlMotionTypeField;
case XVMC_PREDICTION_DUAL_PRIME:
@@ -171,8 +171,8 @@ Status XvMCRenderSurface
batch.macroblocks[i].mby = macroblocks->macro_blocks[j].y;
batch.macroblocks[i].mb_type = TypeToVL(macroblocks->macro_blocks[j].macroblock_type);
if (batch.macroblocks[i].mb_type != vlMacroBlockTypeIntra)
- batch.macroblocks[i].mo_type = MotionToVL(macroblocks->macro_blocks[j].motion_type);
- batch.macroblocks[i].dct_type = macroblocks->macro_blocks[j].dct_type & XVMC_DCT_TYPE_FIELD ? vlDCTTypeFieldCoded : vlDCTTypeFrameCoded;
+ batch.macroblocks[i].mo_type = MotionToVL(macroblocks->macro_blocks[j].motion_type, macroblocks->macro_blocks[j].dct_type);
+ batch.macroblocks[i].dct_type = macroblocks->macro_blocks[j].dct_type == XVMC_DCT_TYPE_FIELD ? vlDCTTypeFieldCoded : vlDCTTypeFrameCoded;
for (k = 0; k < 2; ++k)
for (l = 0; l < 2; ++l)