assert(false);
}
- if (first ||
- width != userdata->last_width[field] ||
- height != userdata->last_height[field] ||
- cbcr_width != userdata->last_cbcr_width[field] ||
- cbcr_height != userdata->last_cbcr_height[field]) {
+ const bool recreate_main_texture =
+ first ||
+ width != userdata->last_width[field] ||
+ height != userdata->last_height[field] ||
+ cbcr_width != userdata->last_cbcr_width[field] ||
+ cbcr_height != userdata->last_cbcr_height[field];
+ const bool recreate_v210_texture =
+ global_flags.ten_bit_input &&
+ (first || v210_width != userdata->last_v210_width[field] || height != userdata->last_height[field]);
+
+ if (recreate_main_texture) {
// We changed resolution since last use of this texture, so we need to create
// a new object. Note that this each card has its own PBOFrameAllocator,
// we don't need to worry about these flip-flopping between resolutions.
userdata->last_cbcr_width[field] = cbcr_width;
userdata->last_cbcr_height[field] = cbcr_height;
}
- if (global_flags.ten_bit_input &&
- (first || v210_width != userdata->last_v210_width[field])) {
+ if (recreate_v210_texture) {
// Same as above; we need to recreate the texture.
glBindTexture(GL_TEXTURE_2D, userdata->tex_v210[field]);
check_error();
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB10_A2, v210_width, height, 0, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, nullptr);
check_error();
userdata->last_v210_width[field] = v210_width;
+ userdata->last_height[field] = height;
}
}