18730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV/* 28730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV * Copyright 2009, Haiku, Inc. All Rights Reserved. 38730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV * Distributed under the terms of the MIT License. 48730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV * 58730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV * Authors: 68730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV * Alexander von Gluck IV, kallisti5@unixzen.com 78730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV */ 88730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#ifndef GALLIUMCONTEXT_H 98730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#define GALLIUMCONTEXT_H 108730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 118730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 128730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#include <stddef.h> 138730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#include <kernel/image.h> 148730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 158730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#include "pipe/p_compiler.h" 168730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#include "pipe/p_screen.h" 178730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#include "postprocess/filters.h" 18311b59495c81f26ee3bee4d8c9e36c0ce15be155Alexander von Gluck IV#include "hgl_context.h" 198730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 20311b59495c81f26ee3bee4d8c9e36c0ce15be155Alexander von Gluck IV#include "bitmap_wrapper.h" 218730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 228730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 238730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 248730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IVclass GalliumContext { 258730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IVpublic: 268730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV GalliumContext(ulong options); 278730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV ~GalliumContext(); 288730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 29e759f1c111018949db114e76ebf1a723525fb802Alexander von Gluck IV void Lock(); 30e759f1c111018949db114e76ebf1a723525fb802Alexander von Gluck IV void Unlock(); 31e759f1c111018949db114e76ebf1a723525fb802Alexander von Gluck IV 328730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV context_id CreateContext(Bitmap* bitmap); 338730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV void DestroyContext(context_id contextID); 348730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV context_id GetCurrentContext() { return fCurrentContext; }; 358730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV status_t SetCurrentContext(Bitmap *bitmap, 368730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV context_id contextID); 378730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 388730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV status_t SwapBuffers(context_id contextID); 39290553b6d637779cb733549a582230437545d335Alexander von Gluck IV 40290553b6d637779cb733549a582230437545d335Alexander von Gluck IV bool Validate(uint32 width, uint32 height); 41290553b6d637779cb733549a582230437545d335Alexander von Gluck IV void Invalidate(uint32 width, uint32 height); 428730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 438730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IVprivate: 448730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV status_t CreateScreen(); 458730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV void Flush(); 468730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 478730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV ulong fOptions; 48e759f1c111018949db114e76ebf1a723525fb802Alexander von Gluck IV struct pipe_screen* fScreen; 498730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 50e759f1c111018949db114e76ebf1a723525fb802Alexander von Gluck IV // Context Management 518730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV struct hgl_context* fContext[CONTEXT_MAX]; 528730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV context_id fCurrentContext; 538730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV pipe_mutex fMutex; 548730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV}; 557de484871dae1643cbecf346066968f61684f06fAlexander von Gluck IV 568730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV 578730236d1a900c9512a9ef92c08034f0223bcf92Alexander von Gluck IV#endif /* GALLIUMCONTEXT_H */ 58