17bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/************************************************************************** 27bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * 37bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * Copyright 2013 Advanced Micro Devices, Inc. 47bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * All Rights Reserved. 57bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * 67bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * Permission is hereby granted, free of charge, to any person obtaining a 77bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * copy of this software and associated documentation files (the 87bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * "Software"), to deal in the Software without restriction, including 97bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * without limitation the rights to use, copy, modify, merge, publish, 107bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * distribute, sub license, and/or sell copies of the Software, and to 117bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * permit persons to whom the Software is furnished to do so, subject to 127bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * the following conditions: 137bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * 147bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * The above copyright notice and this permission notice (including the 157bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * next paragraph) shall be included in all copies or substantial portions 167bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * of the Software. 177bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * 187bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 197bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 207bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 217bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR 227bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 237bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 247bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 257bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * 267bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König **************************************************************************/ 277bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 287bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* 297bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * Authors: 307bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * Christian König <christian.koenig@amd.com> 317bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König * 327bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König */ 337bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 347bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König#ifndef RADEON_VIDEO_H 357bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König#define RADEON_VIDEO_H 367bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 37dcfbc006b6b07d41338b87c64cdc01c36608087bMarek Olšák#include "radeon/radeon_winsys.h" 387bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König#include "vl/vl_video_buffer.h" 397bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 407bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König#define RVID_ERR(fmt, args...) \ 417bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König fprintf(stderr, "EE %s:%d %s UVD - "fmt, __FILE__, __LINE__, __func__, ##args) 427bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 437bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* video buffer representation */ 447bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian Königstruct rvid_buffer 457bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König{ 464bc0059229f212e91ca266ef3f80b652b1cdcb86Christian König unsigned usage; 474bc0059229f212e91ca266ef3f80b652b1cdcb86Christian König struct r600_resource *res; 487bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König}; 497bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 507bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* generate an stream handle */ 517bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian Königunsigned rvid_alloc_stream_handle(void); 527bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 537bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* create a buffer in the winsys */ 544bc0059229f212e91ca266ef3f80b652b1cdcb86Christian Königbool rvid_create_buffer(struct pipe_screen *screen, struct rvid_buffer *buffer, 554bc0059229f212e91ca266ef3f80b652b1cdcb86Christian König unsigned size, unsigned usage); 567bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 577bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* destroy a buffer */ 587bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian Königvoid rvid_destroy_buffer(struct rvid_buffer *buffer); 597bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 607bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* reallocate a buffer, preserving its content */ 614bc0059229f212e91ca266ef3f80b652b1cdcb86Christian Königbool rvid_resize_buffer(struct pipe_screen *screen, struct radeon_winsys_cs *cs, 627bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König struct rvid_buffer *new_buf, unsigned new_size); 637bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 647bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* clear the buffer with zeros */ 654dfdcdb4b394df72da769806a0b64025e475f8b3Christian Königvoid rvid_clear_buffer(struct pipe_context *context, struct rvid_buffer* buffer); 667bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 677bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* join surfaces into the same buffer with identical tiling params 687bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König sumup their sizes and replace the backend buffers with a single bo */ 69c868974396e95d900c7754bce38c0c950f6e3ab6Nicolai Hähnlevoid rvid_join_surfaces(struct radeon_winsys* ws, 707bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König struct pb_buffer** buffers[VL_NUM_COMPONENTS], 71a582b22c6382f24d921e9fe8a24917100c1396f1Marek Olšák struct radeon_surf *surfaces[VL_NUM_COMPONENTS]); 727bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 737bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* returns supported codecs and other parameters */ 747bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian Königint rvid_get_video_param(struct pipe_screen *screen, 757bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König enum pipe_video_profile profile, 767bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König enum pipe_video_entrypoint entrypoint, 777bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König enum pipe_video_cap param); 787bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 797bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König/* the hardware only supports NV12 */ 807bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian Königboolean rvid_is_format_supported(struct pipe_screen *screen, 817bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König enum pipe_format format, 827bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König enum pipe_video_profile profile, 837bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König enum pipe_video_entrypoint entrypoint); 847bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König 857bcfb0bc8ffed0db244cf0b3d4e200add590a02aChristian König#endif // RADEON_VIDEO_H 86