for (unsigned i = 0; i < views->count; ++i) {
struct st_sampler_view *stsv = &views->views[i];
if (stsv->view) {
- if (stsv->st != st) {
+ if (stsv->st && stsv->st != st) {
/* Transfer this reference to the zombie list. It will
* likely be freed when the zombie list is freed.
*/
if (srgb_skip_decode)
format = util_format_linear(format);
+ /* if resource format matches then YUV wasn't lowered */
+ if (format == stObj->pt->format)
+ return format;
+
/* Use R8_UNORM for video formats */
switch (format) {
case PIPE_FORMAT_NV12: