Unable to get Full-Screen VDI In Horizon Clients

  • Post category:Horizon View / VMware
  • Post last modified:July 24, 2024

Introduction

VDI (Virtual Desktop Infrastructure) in Horizon Clients refers to a technology that provides remote access to virtual desktops and applications hosted on a centralized server. VMware Horizon is a platform that delivers virtualized desktops and applications through a single platform, providing end-users with access to their personalized desktops and apps from any device, anywhere.

When Users were trying to connect to their VDI Desktops from a 5k Monitor or even from a 2K Monitor they were seen the Resolution of VDI as below:

Unable to get Full Screen VDI In Horizon Clients

Now the same is seen from the Horizon Client as well, it’s just the Screen Placement was in the Middle.

Checked the Client Settings and didn’t found any issues.

Unable to get Full Screen VDI In Horizon Clients

Environment Details:

Type of Pool: Instant Clone Desktop Pool

Display Protocol: Vmware BLAST

Horizon Client Version: 5.4.3

Agent Version: 7.6

So we investigated this further and checked the Resolution of the Machine Where the Client is running. The Display Resolution was 2560 x 1440.

Unable to get Full Screen VDI In Horizon Clients

While Checking this inside the VDI it was : 1364 x 673.

Unable to get Full Screen VDI In Horizon Clients

MKS Logs:

Here we can see the Display Resolutions available with the Horizon Client.

2020-08-04T11:22:36.655+08:00| main| I125: Current Display Settings:
2020-08-04T11:22:36.655+08:00| main| I125:    Display: 0 size: 1920x1080  position: (2560, 176) name: \\.\DISPLAY1 
2020-08-04T11:22:36.655+08:00| main| I125:    Display: 1 size: 2560x1440  position: (0, 0) name: \\.\DISPLAY2 
2020-08-04T11:22:36.656+08:00| main| I125: VIEWWINCLIENT: RegQueryValueEx(LowLevelHooksTimeout) failed: The system cannot find the file specified (2)
2020-08-04T11:22:37.139+08:00| main| I125: Hardware H.264 4:2:0 Available: up to 3840x2160
2020-08-04T11:22:38.606+08:00| main| I125: VIEWCLIENT: expected thumbprint for remote display: 2C:8A:9F:3D:B0:9A:04:28:27:7D:CA:AF:D6:7F:C4:52:81:30:B9:1C:49:6A:80:F2:BF:CF:C4:1F:4C:EC:BE:81
2020-08-04T11:22:38.630+08:00| main| I125: [BlastSocketClient] BlastSocket_Connect: Connect issued for Primary, clientContext->primarySocket: 250D388A730, error: 0.
2020-08-04T11:22:40.350+08:00| blastSocket| I125: [BlastSocketClient] BlastSocketClientHandleBlastHeadersFromUpgradeResponse: Failed to parse X-VMW-Blast-E2E-Rsp:
2020-08-04T11:22:40.350+08:00| blastSocket| I125: [BlastSocketClient] BlastSocketClientCheckUDPUpgradeResponse: Failed to parse X-VMW-Blast-UDP-E2E-Rsp:
2020-08-04T11:22:40.861+08:00| VVC dispatch event| W115: VNC CLIENT VVC UTIL: HasVvcRecvBufQueue failed at 7FF79CF6B590 next:0 prev:0
2020-08-04T11:22:41.353+08:00| VVC dispatch event| I125: VNC_DECODER: Sent following client caps: H.264-4:4:4 HEVC
2020-08-04T11:22:41.462+08:00| main| W115: BLASTFFMPEG: Using hardware decode context (H264, 4:2:0) (0@1364x672)
2020-08-04T11:22:41.560+08:00| main| W115: BLASTFFMPEG: Using software decode context (H264, 4:4:4) (0@1364x672)
2020-08-04T11:22:58.529+08:00| VVC dispatch event| I125: SOUNDLIB: SoundWaveSelectHostDevice: Found device DELL U2719DC (Intel(R) Display
2020-08-04T11:25:55.924+08:00| blastSocket| I125: VVC: vvcMultiAsockBackendErrorCb: Error: 4 Asock: 250D388A730

Agent Logs:

At this point, vmresset.log shows the following error.

2020-08-04 12:11:21.747+0800 [INFO ] 0x12c8 resolutionMgr::ResolutionMgrLog: ResolutionGetAndSetModesVista: Problem executing res-set app.
2020-08-04 12:11:21.747+0800 [INFO ] 0x12c8 resolutionMgr::ResolutionMgrLog: ResolutionSetTopoAndRes: ResolutionGetAndSetModesVista failed.
2020-08-04 12:11:21.747+0800 [ERROR] 0x12c8 resolutionMgr::SetResolutionHelper: VMwareResolutionSet_SetDisplayTopologyWithRefreshRate for 1 monitors failed!
2020-08-04 12:11:21.747+0800 [INFO ] 0x12c8 resolutionMgr::SetResolutionHelper: Display 0: refresh rate changes from 60 to 30

————— START LOGGING —————

2020-08-04 11:59:38.972      Resolution_InitRdsInfo: inRdsSession 0 sessionId 1
2020-08-04 11:59:38.972      LoadDevApi: devapi module loaded successfully.
2020-08-04 11:59:38.972      ResolutionSet: enter argCount 10
2020-08-04 11:59:38.972      ResolutionSet: arg 0 = C:\Program Files\VMware\VMware Blast\VMwareResolutionSet.exe
2020-08-04 11:59:38.972      ResolutionSet: arg 1 = 0
2020-08-04 11:59:38.972      ResolutionSet: arg 2 = 1
2020-08-04 11:59:38.972      ResolutionSet: arg 3 = 32
2020-08-04 11:59:38.972      ResolutionSet: arg 4 = ,
2020-08-04 11:59:38.972      ResolutionSet: arg 5 = 0
2020-08-04 11:59:38.972      ResolutionSet: arg 6 = 0
2020-08-04 11:59:38.972      ResolutionSet: arg 7 = 1920
2020-08-04 11:59:38.972      ResolutionSet: arg 8 = 1080
2020-08-04 11:59:38.972      ResolutionSet: arg 9 = 0
2020-08-04 11:59:38.972      Resolution_TransformTopology: enter
2020-08-04 11:59:38.972      Resolution_TransformTopology: Display #1/1 will be at (0,0) with resolution 1920×1080
2020-08-04 11:59:38.972      ResolutionSet: devapi topology change failed: 0xc0000001.
2020-08-04 11:59:38.972      wmain: Elapsed time was 0 ms.

From the logs we were not able to isolate much on this issue all we can see that somehow they are taking less resolution.

So now we started looking at the root of it all, the Master Image and what settings we have configured. As per the Instant Clone Architecture VDI will take the Video Settings from its Master Image and whatever value we have mentioned there should be the Video Memory of the VDI as well.

So we checked the VMX File of one of the VDI to check the side of Video Memory:

Found the below Parameters: 

svga.vramSize = "7733248"
svga.present = "TRUE"
vmotion.checkpointSVGAPrimarySize = "7733248"
svga.guestBackedPrimaryAware = "TRUE"
svga.enableScreenDMA = "TRUE"

From here we can see that the “Total Video Memory” of the Master VM is set to 7733248 i.e. 7.3 MB which is somewhere failing between: 1280×720 and 1920×1080 which is what we are seeing inside the Agent: 

Unable to get Full Screen VDI In Horizon Clients

So now we checked the Vmware logs off the Virtual Machine and found this:

Vmware Logs:

Reviewed the VMWare Logs and can see that the Display Topology has detected 2560, 1600 but based on the VRAM is has taken only 1176, 885

2020-08-12T04:18:27.569Z| vmx| W115: PowerOn

2020-08-12T04:18:28.055Z| vmx| I125: SVGA-GFB: Config settings: autodetect=0, numDisplays=1, maxWidth=2560, maxHeight=1600
2020-08-12T04:18:28.055Z| vmx| I125: SVGA-GFB: MKS auto-detected resolution target: numDisplays=1, wh(2560, 1600)
2020-08-12T04:18:28.055Z| vmx| I125: SVGA-GFB: Desired maximum display topology: wh(2560, 1600)
2020-08-12T04:18:28.055Z| vmx| I125: SVGA-GFB: Autodetected target gfbSize = 16777216
2020-08-12T04:18:28.055Z| vmx| I125: SVGA-GFB: Using Initial       gfbSize = 4194304
2020-08-12T04:18:28.055Z| vmx| I125: SVGA-GFB: MaxPrimaryMem      register = 7733248
2020-08-12T04:18:28.055Z| vmx| I125: SVGA: Number of displays 1
2020-08-12T04:18:28.055Z| vmx| I125: SVGA: Truncated maximum resolution for register modes to VRAM size: (VRAM=4194304 bytes, max wh(1176, 885)

2020-08-12T04:18:28.066Z| vmx| I125: DISKUTIL: scsi0:0 : max toolsVersion = 10346, type = 1
2020-08-12T04:18:28.066Z| vmx| I125: TOOLS setting legacy tools version to ‘10346’ type 1, manifest status is 9

Resolution:

This is very low memory for any VDI to run a High Definition or a Multi Monitor Setup. So in order to see the Recommended Memory One can refer to the Below article:

https://docs.vmware.com/en/VMware-Horizon-7/7.12/horizon-architecture-planning/GUID-10ED49A9-56B6-4BD7-8425-94900F53AB02.html

Now in order to change the Memory Size one can follow the below steps:

  1. Open vSphere Web Client console.
  2. Go to the master VM with which you want to deploy Instant Clone Pool.
  3. Right Click the master VM and select Edit Settings.
  4. Expand the Video card and click the Video Memory Calculator.
  5. Change the Number of displays or Resolution to your preference.
  6. Once the settings are changed, take a snapshot and use it for a new Instant Clone Pool or do Push Image on existing pool.

For more information refer to KB: https://kb.vmware.com/s/article/2151745

Ashutosh Dixit

I am currently working as a Senior Technical Support Engineer with VMware Premier Services for Telco. Before this, I worked as a Technical Lead with Microsoft Enterprise Platform Support for Production and Premier Support. I am an expert in High-Availability, Deployments, and VMware Core technology along with Tanzu and Horizon.

Leave a Reply