radeon uvd add uvd fw version for amdgpu
authorsonjiang <sonny.jiang@amd.com>
Wed, 29 Jun 2016 15:24:36 +0000 (11:24 -0400)
committerLeo Liu <leo.liu@amd.com>
Wed, 29 Jun 2016 19:30:14 +0000 (15:30 -0400)
Signed-off-by: sonjiang <sonny.jiang@amd.com>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
src/gallium/drivers/radeon/radeon_winsys.h
src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c

index afb970e7c58196606806e478f476d28515c424ab..f32edf09a2d25b4d53b284c14d5b472a9c721559 100644 (file)
@@ -258,6 +258,7 @@ struct radeon_info {
     bool                        gfx_ib_pad_with_type2;
     bool                        has_sdma;
     bool                        has_uvd;
+    uint32_t                    uvd_fw_version;
     uint32_t                    vce_fw_version;
     uint32_t                    vce_harvest_config;
     uint32_t                    clock_crystal_freq;
index 72afc764e14850ba4d31b972316c5c80cc771c89..b8fb4dde8949d2b9687da557f3759c5cb4a31522 100644 (file)
@@ -98,7 +98,7 @@ static bool do_winsys_init(struct amdgpu_winsys *ws, int fd)
    struct amdgpu_buffer_size_alignments alignment_info = {};
    struct amdgpu_heap_info vram, gtt;
    struct drm_amdgpu_info_hw_ip dma = {}, uvd = {}, vce = {};
-   uint32_t vce_version = 0, vce_feature = 0;
+   uint32_t vce_version = 0, vce_feature = 0, uvd_version = 0, uvd_feature = 0;
    int r, i, j;
    drmDevicePtr devinfo;
 
@@ -151,6 +151,13 @@ static bool do_winsys_init(struct amdgpu_winsys *ws, int fd)
       goto fail;
    }
 
+   r = amdgpu_query_firmware_version(ws->dev, AMDGPU_INFO_FW_UVD, 0, 0,
+                                    &uvd_version, &uvd_feature);
+   if (r) {
+      fprintf(stderr, "amdgpu: amdgpu_query_firmware_version(uvd) failed.\n");
+      goto fail;
+   }
+
    r = amdgpu_query_hw_ip_info(ws->dev, AMDGPU_HW_IP_VCE, 0, &vce);
    if (r) {
       fprintf(stderr, "amdgpu: amdgpu_query_hw_ip_info(vce) failed.\n");
@@ -268,6 +275,8 @@ static bool do_winsys_init(struct amdgpu_winsys *ws, int fd)
    ws->info.max_se = ws->amdinfo.num_shader_engines;
    ws->info.max_sh_per_se = ws->amdinfo.num_shader_arrays_per_engine;
    ws->info.has_uvd = uvd.available_rings != 0;
+   ws->info.uvd_fw_version =
+         uvd.available_rings ? uvd_version : 0;
    ws->info.vce_fw_version =
          vce.available_rings ? vce_version : 0;
    ws->info.has_userptr = true;