17ec681f3Smrg/* 27ec681f3Smrg * Copyright 2009-2014, Haiku, Inc. All Rights Reserved. 37ec681f3Smrg * Distributed under the terms of the MIT License. 47ec681f3Smrg * 57ec681f3Smrg * Authors: 67ec681f3Smrg * Alexander von Gluck IV, kallisti5@unixzen.com 77ec681f3Smrg */ 87ec681f3Smrg#ifndef HGL_CONTEXT_H 97ec681f3Smrg#define HGL_CONTEXT_H 107ec681f3Smrg 117ec681f3Smrg#include "os/os_thread.h" 127ec681f3Smrg#include "pipe/p_format.h" 137ec681f3Smrg#include "pipe/p_compiler.h" 147ec681f3Smrg#include "pipe/p_screen.h" 157ec681f3Smrg#include "postprocess/filters.h" 167ec681f3Smrg 177ec681f3Smrg#include "frontend/api.h" 187ec681f3Smrg 197ec681f3Smrg#include "bitmap_wrapper.h" 207ec681f3Smrg 217ec681f3Smrg 227ec681f3Smrg#ifdef __cplusplus 237ec681f3Smrgextern "C" { 247ec681f3Smrg#endif 257ec681f3Smrg 267ec681f3Smrg 277ec681f3Smrg#define CONTEXT_MAX 32 287ec681f3Smrg 297ec681f3Smrgtypedef int64 context_id; 307ec681f3Smrg 317ec681f3Smrg 327ec681f3Smrgstruct hgl_buffer 337ec681f3Smrg{ 347ec681f3Smrg struct st_framebuffer_iface *stfbi; 357ec681f3Smrg struct st_visual* visual; 367ec681f3Smrg 377ec681f3Smrg unsigned width; 387ec681f3Smrg unsigned height; 397ec681f3Smrg unsigned mask; 407ec681f3Smrg 417ec681f3Smrg struct pipe_screen* screen; 427ec681f3Smrg void* winsysContext; 437ec681f3Smrg 447ec681f3Smrg enum pipe_texture_target target; 457ec681f3Smrg struct pipe_resource* textures[ST_ATTACHMENT_COUNT]; 467ec681f3Smrg 477ec681f3Smrg void *map; 487ec681f3Smrg}; 497ec681f3Smrg 507ec681f3Smrg 517ec681f3Smrgstruct hgl_display 527ec681f3Smrg{ 537ec681f3Smrg mtx_t mutex; 547ec681f3Smrg 557ec681f3Smrg struct st_api* api; 567ec681f3Smrg struct st_manager* manager; 577ec681f3Smrg}; 587ec681f3Smrg 597ec681f3Smrg 607ec681f3Smrgstruct hgl_context 617ec681f3Smrg{ 627ec681f3Smrg struct hgl_display* display; 637ec681f3Smrg struct st_context_iface* st; 647ec681f3Smrg struct st_visual* stVisual; 657ec681f3Smrg 667ec681f3Smrg // Post processing 677ec681f3Smrg struct pp_queue_t* postProcess; 687ec681f3Smrg unsigned int postProcessEnable[PP_FILTERS]; 697ec681f3Smrg 707ec681f3Smrg // Desired viewport size 717ec681f3Smrg unsigned width; 727ec681f3Smrg unsigned height; 737ec681f3Smrg 747ec681f3Smrg mtx_t fbMutex; 757ec681f3Smrg 767ec681f3Smrg struct hgl_buffer* buffer; 777ec681f3Smrg}; 787ec681f3Smrg 797ec681f3Smrg// hgl_buffer from statetracker interface 807ec681f3Smrgstruct hgl_buffer* hgl_st_framebuffer(struct st_framebuffer_iface *stfbi); 817ec681f3Smrg 827ec681f3Smrg// hgl frontend 837ec681f3Smrgstruct st_api* hgl_create_st_api(void); 847ec681f3Smrg 857ec681f3Smrg// hgl framebuffer 867ec681f3Smrgstruct hgl_buffer* hgl_create_st_framebuffer(struct hgl_context* context, void *winsysContext); 877ec681f3Smrgvoid hgl_destroy_st_framebuffer(struct hgl_buffer *buffer); 887ec681f3Smrg 897ec681f3Smrg// hgl manager 907ec681f3Smrgstruct st_manager* hgl_create_st_manager(struct hgl_context* screen); 917ec681f3Smrgvoid hgl_destroy_st_manager(struct st_manager *manager); 927ec681f3Smrg 937ec681f3Smrg// hgl visual 947ec681f3Smrgstruct st_visual* hgl_create_st_visual(ulong options); 957ec681f3Smrgvoid hgl_destroy_st_visual(struct st_visual* visual); 967ec681f3Smrg 977ec681f3Smrg// hgl display 987ec681f3Smrgstruct hgl_display* hgl_create_display(struct pipe_screen* screen); 997ec681f3Smrgvoid hgl_destroy_display(struct hgl_display *display); 1007ec681f3Smrg 1017ec681f3Smrg 1027ec681f3Smrg#ifdef __cplusplus 1037ec681f3Smrg} 1047ec681f3Smrg#endif 1057ec681f3Smrg 1067ec681f3Smrg#endif /* HGL_CONTEXT_H */ 107