#define RENCODE_REC_SWIZZLE_MODE_LINEAR 0
#define RENCODE_REC_SWIZZLE_MODE_256B_S 1
+#define RENCODE_REC_SWIZZLE_MODE_256B_D 2
+#define RENCODE_REC_SWIZZLE_MODE_8x8_1D_THIN_12_24BPP 0x10000001
#define RENCODE_VIDEO_BITSTREAM_BUFFER_MODE_LINEAR 0
#define RENCODE_VIDEO_BITSTREAM_BUFFER_MODE_CIRCULAR 1
RADEON_ENC_END();
}
+static uint32_t radeon_enc_ref_swizzle_mode(struct radeon_encoder *enc)
+{
+ /* return RENCODE_REC_SWIZZLE_MODE_LINEAR; for debugging purpose */
+ if (enc->enc_pic.bit_depth_luma_minus8 != 0)
+ return RENCODE_REC_SWIZZLE_MODE_8x8_1D_THIN_12_24BPP;
+ else
+ return RENCODE_REC_SWIZZLE_MODE_256B_S;
+}
+
static void radeon_enc_ctx(struct radeon_encoder *enc)
{
- enc->enc_pic.ctx_buf.swizzle_mode = 0;
+ enc->enc_pic.ctx_buf.swizzle_mode = radeon_enc_ref_swizzle_mode(enc);
enc->enc_pic.ctx_buf.two_pass_search_center_map_offset = 0;
RADEON_ENC_BEGIN(enc->cmd.ctx);
RADEON_ENC_END();
}
+static uint32_t radeon_enc_ref_swizzle_mode(struct radeon_encoder *enc)
+{
+ /* return RENCODE_REC_SWIZZLE_MODE_LINEAR; for debugging purpose */
+ if (enc->enc_pic.bit_depth_luma_minus8 != 0)
+ return RENCODE_REC_SWIZZLE_MODE_8x8_1D_THIN_12_24BPP;
+ else
+ return RENCODE_REC_SWIZZLE_MODE_256B_S;
+}
+
static void radeon_enc_ctx(struct radeon_encoder *enc)
{
- enc->enc_pic.ctx_buf.swizzle_mode = 0;
+ enc->enc_pic.ctx_buf.swizzle_mode = radeon_enc_ref_swizzle_mode(enc);
enc->enc_pic.ctx_buf.two_pass_search_center_map_offset = 0;
RADEON_ENC_BEGIN(enc->cmd.ctx);
rvcn_sq_tail(&enc->cs, &enc->sq);
}
+static uint32_t radeon_enc_ref_swizzle_mode(struct radeon_encoder *enc)
+{
+ /* return RENCODE_REC_SWIZZLE_MODE_LINEAR; for debugging purpose */
+ if (enc->enc_pic.bit_depth_luma_minus8 != 0)
+ return RENCODE_REC_SWIZZLE_MODE_8x8_1D_THIN_12_24BPP;
+ else
+ return RENCODE_REC_SWIZZLE_MODE_256B_D;
+}
+
static void radeon_enc_ctx(struct radeon_encoder *enc)
{
- enc->enc_pic.ctx_buf.swizzle_mode = 0;
+ enc->enc_pic.ctx_buf.swizzle_mode = radeon_enc_ref_swizzle_mode(enc);
enc->enc_pic.ctx_buf.two_pass_search_center_map_offset = 0;
enc->enc_pic.ctx_buf.colloc_buffer_offset = enc->dpb_size;